taskjuggler 3.6.0 → 3.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (434) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +69 -0
  3. data/Rakefile +4 -1
  4. data/data/css/tjreport.css +4 -0
  5. data/data/tjp.vim +9 -3
  6. data/examples/ProjectTemplate/template.tjp +10 -10
  7. data/examples/Tutorial/tutorial.tjp +4 -4
  8. data/lib/taskjuggler/Allocation.rb +1 -1
  9. data/lib/taskjuggler/AppConfig.rb +1 -1
  10. data/lib/taskjuggler/AttributeBase.rb +10 -4
  11. data/lib/taskjuggler/Attributes.rb +2 -2
  12. data/lib/taskjuggler/BatchProcessor.rb +69 -58
  13. data/lib/taskjuggler/FileList.rb +1 -1
  14. data/lib/taskjuggler/Interval.rb +10 -12
  15. data/lib/taskjuggler/Journal.rb +2 -2
  16. data/lib/taskjuggler/LogicalFunction.rb +1 -1
  17. data/lib/taskjuggler/LogicalOperation.rb +7 -4
  18. data/lib/taskjuggler/MessageHandler.rb +1 -2
  19. data/lib/taskjuggler/PTNProxy.rb +1 -1
  20. data/lib/taskjuggler/Project.rb +27 -22
  21. data/lib/taskjuggler/PropertyList.rb +7 -1
  22. data/lib/taskjuggler/PropertySet.rb +1 -1
  23. data/lib/taskjuggler/PropertyTreeNode.rb +5 -3
  24. data/lib/taskjuggler/Query.rb +3 -3
  25. data/lib/taskjuggler/RealFormat.rb +1 -1
  26. data/lib/taskjuggler/Resource.rb +2 -2
  27. data/lib/taskjuggler/ResourceScenario.rb +66 -6
  28. data/lib/taskjuggler/RichText/Snip.rb +1 -1
  29. data/lib/taskjuggler/RuntimeConfig.rb +2 -2
  30. data/lib/taskjuggler/Scoreboard.rb +5 -2
  31. data/lib/taskjuggler/SheetHandlerBase.rb +5 -4
  32. data/lib/taskjuggler/Shift.rb +2 -2
  33. data/lib/taskjuggler/ShiftAssignments.rb +1 -1
  34. data/lib/taskjuggler/StatusSheetReceiver.rb +2 -2
  35. data/lib/taskjuggler/StatusSheetSender.rb +1 -1
  36. data/lib/taskjuggler/TaskJuggler.rb +4 -4
  37. data/lib/taskjuggler/TaskScenario.rb +7 -2
  38. data/lib/taskjuggler/TextParser/Scanner.rb +4 -4
  39. data/lib/taskjuggler/TextParser.rb +1 -1
  40. data/lib/taskjuggler/TimeSheetReceiver.rb +2 -2
  41. data/lib/taskjuggler/TimeSheetSender.rb +1 -1
  42. data/lib/taskjuggler/TimeSheets.rb +5 -4
  43. data/lib/taskjuggler/Tj3AppBase.rb +23 -9
  44. data/lib/taskjuggler/Tj3Config.rb +5 -3
  45. data/lib/taskjuggler/TjpExample.rb +3 -1
  46. data/lib/taskjuggler/TjpSyntaxRules.rb +166 -133
  47. data/lib/taskjuggler/UTF8String.rb +3 -3
  48. data/lib/taskjuggler/WorkingHours.rb +3 -3
  49. data/lib/taskjuggler/XMLDocument.rb +1 -1
  50. data/lib/taskjuggler/XMLElement.rb +12 -1
  51. data/lib/taskjuggler/apps/Tj3.rb +3 -1
  52. data/lib/taskjuggler/apps/Tj3Client.rb +3 -2
  53. data/lib/taskjuggler/apps/Tj3Daemon.rb +5 -3
  54. data/lib/taskjuggler/apps/Tj3Man.rb +4 -2
  55. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +3 -1
  56. data/lib/taskjuggler/apps/Tj3SsSender.rb +3 -1
  57. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +3 -1
  58. data/lib/taskjuggler/apps/Tj3TsSender.rb +3 -1
  59. data/lib/taskjuggler/apps/Tj3TsSummary.rb +3 -1
  60. data/lib/taskjuggler/apps/Tj3WebD.rb +4 -2
  61. data/lib/taskjuggler/daemon/ProjectServer.rb +2 -2
  62. data/lib/taskjuggler/deep_copy.rb +1 -1
  63. data/lib/taskjuggler/reports/CSVFile.rb +4 -4
  64. data/lib/taskjuggler/reports/ChartPlotter.rb +1 -1
  65. data/lib/taskjuggler/reports/GanttChart.rb +8 -2
  66. data/lib/taskjuggler/reports/GanttHeader.rb +11 -1
  67. data/lib/taskjuggler/reports/GanttLine.rb +6 -0
  68. data/lib/taskjuggler/reports/ICalReport.rb +1 -1
  69. data/lib/taskjuggler/reports/MspXmlRE.rb +5 -3
  70. data/lib/taskjuggler/reports/Report.rb +6 -6
  71. data/lib/taskjuggler/reports/ReportTableCell.rb +1 -1
  72. data/lib/taskjuggler/reports/TableReport.rb +7 -12
  73. data/lib/taskjuggler/reports/TjpExportRE.rb +1 -5
  74. data/lib/taskjuggler/reports/TraceReport.rb +2 -2
  75. data/lib/taskjuggler/version.rb +1 -0
  76. data/man/tj3.1 +130 -0
  77. data/man/tj3client.1 +145 -0
  78. data/man/tj3d.1 +93 -0
  79. data/man/tj3man.1 +76 -0
  80. data/man/tj3ss_receiver.1 +86 -0
  81. data/man/tj3ss_sender.1 +100 -0
  82. data/man/tj3ts_receiver.1 +86 -0
  83. data/man/tj3ts_sender.1 +92 -0
  84. data/man/tj3ts_summary.1 +104 -0
  85. data/man/tj3webd.1 +86 -0
  86. data/manual/Day_To_Day_Juggling +8 -8
  87. data/manual/Installation +6 -6
  88. data/manual/List_Attributes +1 -1
  89. data/manual/Rich_Text_Attributes +6 -5
  90. data/manual/Software +6 -6
  91. data/manual/TaskJuggler_Internals +4 -4
  92. data/manual/The_TaskJuggler_Syntax +5 -5
  93. data/manual/Tutorial +13 -11
  94. data/manual/html/Day_To_Day_Juggling.html +9 -9
  95. data/manual/html/Getting_Started.html +2 -2
  96. data/manual/html/How_To_Contribute.html +2 -2
  97. data/manual/html/Installation.html +8 -8
  98. data/manual/html/Intro.html +2 -2
  99. data/manual/html/List_Attributes.html +3 -3
  100. data/manual/html/Reporting_Bugs.html +2 -2
  101. data/manual/html/Rich_Text_Attributes.html +5 -5
  102. data/manual/html/Software.html +7 -7
  103. data/manual/html/TaskJuggler_2x_Migration.html +2 -2
  104. data/manual/html/TaskJuggler_Internals.html +6 -6
  105. data/manual/html/The_TaskJuggler_Syntax.html +6 -6
  106. data/manual/html/Tutorial.html +17 -14
  107. data/manual/html/account.html +3 -3
  108. data/manual/html/account.task.html +2 -2
  109. data/manual/html/accountprefix.html +2 -2
  110. data/manual/html/accountreport.html +3 -3
  111. data/manual/html/accountroot.html +2 -2
  112. data/manual/html/active.html +3 -3
  113. data/manual/html/adopt.task.html +2 -2
  114. data/manual/html/aggregate.html +2 -2
  115. data/manual/html/alert.html +3 -3
  116. data/manual/html/alertlevels.html +2 -2
  117. data/manual/html/allocate.html +3 -3
  118. data/manual/html/alphabet.html +1 -1
  119. data/manual/html/alternative.html +2 -2
  120. data/manual/html/author.html +2 -2
  121. data/manual/html/auxdir.html +2 -2
  122. data/manual/html/auxdir.report.html +2 -2
  123. data/manual/html/balance.html +2 -2
  124. data/manual/html/booking.resource.html +4 -4
  125. data/manual/html/booking.task.html +4 -4
  126. data/manual/html/caption.html +2 -2
  127. data/manual/html/cellcolor.column.html +3 -3
  128. data/manual/html/celltext.column.html +3 -3
  129. data/manual/html/center.html +2 -2
  130. data/manual/html/charge.html +2 -2
  131. data/manual/html/chargeset.html +2 -2
  132. data/manual/html/columnid.html +21 -14
  133. data/manual/html/columns.html +2 -2
  134. data/manual/html/complete.html +2 -2
  135. data/manual/html/copyright.html +2 -2
  136. data/manual/html/credits.html +2 -2
  137. data/manual/html/css/tjreport.css +4 -0
  138. data/manual/html/currency.html +2 -2
  139. data/manual/html/currencyformat.html +3 -3
  140. data/manual/html/dailymax.html +2 -2
  141. data/manual/html/dailymin.html +3 -3
  142. data/manual/html/dailyworkinghours.html +2 -2
  143. data/manual/html/date.extend.html +2 -2
  144. data/manual/html/date.html +5 -5
  145. data/manual/html/definitions.html +4 -4
  146. data/manual/html/depends.html +4 -4
  147. data/manual/html/details.html +2 -2
  148. data/manual/html/disabled.html +2 -2
  149. data/manual/html/duration.html +2 -2
  150. data/manual/html/efficiency.html +3 -3
  151. data/manual/html/effort.html +2 -2
  152. data/manual/html/effortdone.html +2 -2
  153. data/manual/html/effortleft.html +2 -2
  154. data/manual/html/email.html +2 -2
  155. data/manual/html/enabled.html +2 -2
  156. data/manual/html/end.column.html +3 -3
  157. data/manual/html/end.html +4 -4
  158. data/manual/html/end.limit.html +2 -2
  159. data/manual/html/end.report.html +2 -2
  160. data/manual/html/end.timesheet.html +3 -3
  161. data/manual/html/endcredit.html +3 -3
  162. data/manual/html/epilog.html +2 -2
  163. data/manual/html/export.html +3 -3
  164. data/manual/html/extend.html +3 -3
  165. data/manual/html/fail.html +3 -3
  166. data/manual/html/fdl.html +2 -2
  167. data/manual/html/flags.account.html +2 -2
  168. data/manual/html/flags.html +2 -2
  169. data/manual/html/flags.journalentry.html +2 -2
  170. data/manual/html/flags.report.html +2 -2
  171. data/manual/html/flags.resource.html +2 -2
  172. data/manual/html/flags.statussheet.html +2 -2
  173. data/manual/html/flags.task.html +2 -2
  174. data/manual/html/flags.timesheet.html +2 -2
  175. data/manual/html/fontcolor.column.html +3 -3
  176. data/manual/html/footer.html +2 -2
  177. data/manual/html/formats.export.html +3 -3
  178. data/manual/html/formats.html +3 -3
  179. data/manual/html/functions.html +5 -5
  180. data/manual/html/gapduration.html +2 -2
  181. data/manual/html/gaplength.html +2 -2
  182. data/manual/html/halign.center.html +2 -2
  183. data/manual/html/halign.column.html +3 -3
  184. data/manual/html/halign.left.html +2 -2
  185. data/manual/html/halign.right.html +2 -2
  186. data/manual/html/hasalert.html +2 -2
  187. data/manual/html/header.html +2 -2
  188. data/manual/html/headline.html +2 -2
  189. data/manual/html/height.html +3 -3
  190. data/manual/html/hideaccount.html +3 -3
  191. data/manual/html/hidejournalentry.html +2 -2
  192. data/manual/html/hidereport.html +3 -3
  193. data/manual/html/hideresource.html +3 -3
  194. data/manual/html/hidetask.html +3 -3
  195. data/manual/html/icalreport.html +9 -3
  196. data/manual/html/include.macro.html +3 -3
  197. data/manual/html/include.project.html +3 -3
  198. data/manual/html/include.properties.html +3 -3
  199. data/manual/html/index.html +1 -1
  200. data/manual/html/inherit.extend.html +3 -3
  201. data/manual/html/interval1.html +3 -3
  202. data/manual/html/interval2.html +3 -3
  203. data/manual/html/interval3.html +2 -2
  204. data/manual/html/interval4.html +2 -2
  205. data/manual/html/isactive.html +2 -2
  206. data/manual/html/ischildof.html +2 -2
  207. data/manual/html/isdependencyof.html +2 -2
  208. data/manual/html/isdutyof.html +2 -2
  209. data/manual/html/isfeatureof.html +2 -2
  210. data/manual/html/isleaf.html +2 -2
  211. data/manual/html/ismilestone.html +2 -2
  212. data/manual/html/isongoing.html +3 -3
  213. data/manual/html/isresource.html +2 -2
  214. data/manual/html/isresponsibilityof.html +2 -2
  215. data/manual/html/istask.html +2 -2
  216. data/manual/html/isvalid.html +2 -2
  217. data/manual/html/journalattributes.html +2 -2
  218. data/manual/html/journalentry.html +3 -3
  219. data/manual/html/journalmode.html +3 -3
  220. data/manual/html/leaveallowance.html +3 -3
  221. data/manual/html/leaves.html +3 -3
  222. data/manual/html/left.html +2 -2
  223. data/manual/html/length.html +3 -3
  224. data/manual/html/limits.allocate.html +2 -2
  225. data/manual/html/limits.html +2 -2
  226. data/manual/html/limits.resource.html +2 -2
  227. data/manual/html/limits.task.html +2 -2
  228. data/manual/html/listitem.column.html +3 -3
  229. data/manual/html/listtype.column.html +2 -2
  230. data/manual/html/loadunit.html +2 -2
  231. data/manual/html/logicalexpression.html +4 -4
  232. data/manual/html/logicalflagexpression.html +4 -4
  233. data/manual/html/macro.html +4 -4
  234. data/manual/html/managers.html +2 -2
  235. data/manual/html/mandatory.html +4 -4
  236. data/manual/html/markdate.html +69 -0
  237. data/manual/html/maxend.html +4 -4
  238. data/manual/html/maximum.html +2 -2
  239. data/manual/html/maxstart.html +2 -2
  240. data/manual/html/milestone.html +3 -3
  241. data/manual/html/minend.html +2 -2
  242. data/manual/html/minimum.html +2 -2
  243. data/manual/html/minstart.html +2 -2
  244. data/manual/html/monthlymax.html +2 -2
  245. data/manual/html/monthlymin.html +3 -3
  246. data/manual/html/navbar.html +5 -1
  247. data/manual/html/navigator.html +2 -2
  248. data/manual/html/newtask.html +3 -3
  249. data/manual/html/nikureport.html +2 -2
  250. data/manual/html/note.task.html +4 -4
  251. data/manual/html/novevents.html +68 -0
  252. data/manual/html/now.html +4 -4
  253. data/manual/html/number.extend.html +2 -2
  254. data/manual/html/numberformat.html +2 -2
  255. data/manual/html/onend.html +2 -2
  256. data/manual/html/onstart.html +2 -2
  257. data/manual/html/opennodes.html +2 -2
  258. data/manual/html/outputdir.html +3 -3
  259. data/manual/html/overtime.booking.html +2 -2
  260. data/manual/html/period.column.html +2 -2
  261. data/manual/html/period.limit.html +2 -2
  262. data/manual/html/period.report.html +2 -2
  263. data/manual/html/period.task.html +2 -2
  264. data/manual/html/persistent.html +3 -3
  265. data/manual/html/precedes.html +5 -5
  266. data/manual/html/priority.html +4 -4
  267. data/manual/html/priority.timesheet.html +3 -3
  268. data/manual/html/project.html +4 -4
  269. data/manual/html/projectid.html +2 -2
  270. data/manual/html/projectid.task.html +3 -3
  271. data/manual/html/projectids.html +2 -2
  272. data/manual/html/projection.html +2 -2
  273. data/manual/html/prolog.html +2 -2
  274. data/manual/html/properties.html +3 -3
  275. data/manual/html/purge.html +2 -2
  276. data/manual/html/rate.html +2 -2
  277. data/manual/html/rate.resource.html +2 -2
  278. data/manual/html/rawhtmlhead.html +3 -3
  279. data/manual/html/reference.extend.html +2 -2
  280. data/manual/html/remaining.html +3 -3
  281. data/manual/html/replace.html +2 -2
  282. data/manual/html/reportprefix.html +2 -2
  283. data/manual/html/resource.html +3 -3
  284. data/manual/html/resourceattributes.html +2 -2
  285. data/manual/html/resourceprefix.html +2 -2
  286. data/manual/html/resourcereport.html +4 -4
  287. data/manual/html/resourceroot.html +3 -3
  288. data/manual/html/resources.limit.html +2 -2
  289. data/manual/html/responsible.html +2 -2
  290. data/manual/html/richtext.extend.html +2 -2
  291. data/manual/html/right.html +2 -2
  292. data/manual/html/rollupaccount.html +3 -3
  293. data/manual/html/rollupresource.html +3 -3
  294. data/manual/html/rolluptask.html +3 -3
  295. data/manual/html/scale.column.html +2 -2
  296. data/manual/html/scenario.html +3 -3
  297. data/manual/html/scenario.ical.html +3 -3
  298. data/manual/html/scenarios.export.html +2 -2
  299. data/manual/html/scenarios.html +2 -2
  300. data/manual/html/scenariospecific.extend.html +2 -2
  301. data/manual/html/scheduled.html +2 -2
  302. data/manual/html/scheduling.html +6 -6
  303. data/manual/html/schedulingmode.html +2 -2
  304. data/manual/html/select.html +4 -4
  305. data/manual/html/selfcontained.html +2 -2
  306. data/manual/html/shift.allocate.html +2 -2
  307. data/manual/html/shift.html +3 -3
  308. data/manual/html/shift.resource.html +4 -4
  309. data/manual/html/shift.task.html +2 -2
  310. data/manual/html/shift.timesheet.html +2 -2
  311. data/manual/html/shifts.allocate.html +2 -2
  312. data/manual/html/shifts.resource.html +2 -2
  313. data/manual/html/shifts.task.html +3 -3
  314. data/manual/html/shorttimeformat.html +3 -3
  315. data/manual/html/sloppy.booking.html +2 -2
  316. data/manual/html/sloppy.projection.html +2 -2
  317. data/manual/html/sortaccounts.html +2 -2
  318. data/manual/html/sortjournalentries.html +2 -2
  319. data/manual/html/sortresources.html +2 -2
  320. data/manual/html/sorttasks.html +2 -2
  321. data/manual/html/start.column.html +3 -3
  322. data/manual/html/start.html +4 -4
  323. data/manual/html/start.limit.html +2 -2
  324. data/manual/html/start.report.html +2 -2
  325. data/manual/html/startcredit.html +3 -3
  326. data/manual/html/status.statussheet.html +2 -2
  327. data/manual/html/status.timesheet.html +2 -2
  328. data/manual/html/statussheet.html +2 -2
  329. data/manual/html/statussheetreport.html +3 -3
  330. data/manual/html/strict.projection.html +2 -2
  331. data/manual/html/summary.html +2 -2
  332. data/manual/html/supplement.html +2 -2
  333. data/manual/html/supplement.resource.html +2 -2
  334. data/manual/html/supplement.task.html +2 -2
  335. data/manual/html/tagfile.html +3 -3
  336. data/manual/html/task.html +3 -3
  337. data/manual/html/task.statussheet.html +3 -3
  338. data/manual/html/task.timesheet.html +2 -2
  339. data/manual/html/taskattributes.html +2 -2
  340. data/manual/html/taskprefix.html +2 -2
  341. data/manual/html/taskreport.html +4 -4
  342. data/manual/html/taskroot.export.html +2 -2
  343. data/manual/html/taskroot.html +2 -2
  344. data/manual/html/text.extend.html +2 -2
  345. data/manual/html/textreport.html +4 -4
  346. data/manual/html/timeformat.html +3 -3
  347. data/manual/html/timeformat1.html +2 -2
  348. data/manual/html/timeformat2.html +2 -2
  349. data/manual/html/timeoff.nikureport.html +2 -2
  350. data/manual/html/timesheet.html +3 -3
  351. data/manual/html/timesheetreport.html +3 -3
  352. data/manual/html/timezone.export.html +2 -2
  353. data/manual/html/timezone.html +2 -2
  354. data/manual/html/timezone.report.html +2 -2
  355. data/manual/html/timezone.shift.html +2 -2
  356. data/manual/html/timingresolution.html +2 -2
  357. data/manual/html/title.column.html +2 -2
  358. data/manual/html/title.html +2 -2
  359. data/manual/html/toc.html +157 -143
  360. data/manual/html/tooltip.column.html +3 -3
  361. data/manual/html/tracereport.html +7 -7
  362. data/manual/html/trackingscenario.html +3 -3
  363. data/manual/html/treelevel.html +2 -2
  364. data/manual/html/vacation.html +2 -2
  365. data/manual/html/vacation.resource.html +2 -2
  366. data/manual/html/vacation.shift.html +2 -2
  367. data/manual/html/warn.html +4 -4
  368. data/manual/html/weeklymax.html +2 -2
  369. data/manual/html/weeklymin.html +3 -3
  370. data/manual/html/weekstartsmonday.html +2 -2
  371. data/manual/html/weekstartssunday.html +2 -2
  372. data/manual/html/width.column.html +2 -2
  373. data/manual/html/width.html +3 -3
  374. data/manual/html/work.html +3 -3
  375. data/manual/html/workinghours.project.html +3 -3
  376. data/manual/html/workinghours.resource.html +2 -2
  377. data/manual/html/workinghours.shift.html +2 -2
  378. data/manual/html/yearlyworkingdays.html +2 -2
  379. data/spec/ProjectBroker_spec.rb +6 -6
  380. data/spec/StatusSheets_spec.rb +1 -1
  381. data/spec/TimeSheets_spec.rb +1 -1
  382. data/spec/TraceReport_spec.rb +1 -1
  383. data/spec/support/DaemonControl.rb +2 -3
  384. data/taskjuggler.gemspec +7 -10
  385. data/tasks/changelog.rake +2 -0
  386. data/tasks/gem.rake +3 -1
  387. data/tasks/help2man.rake +18 -0
  388. data/tasks/kate.rake +2 -0
  389. data/tasks/manual.rake +3 -1
  390. data/tasks/test.rake +5 -0
  391. data/tasks/vim.rake +2 -0
  392. data/test/TestSuite/CSV-Reports/quotes.tjp +20 -0
  393. data/test/TestSuite/CSV-Reports/refs/quotes.csv +5 -0
  394. data/test/TestSuite/Export-Reports/refs/AccountReport.tjp +0 -1
  395. data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +0 -2
  396. data/test/TestSuite/Export-Reports/refs/AlertLevels.tjp +0 -1
  397. data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +0 -1
  398. data/test/TestSuite/Export-Reports/refs/AutoID.tjp +0 -1
  399. data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +0 -1
  400. data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +0 -1
  401. data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +0 -2
  402. data/test/TestSuite/Export-Reports/refs/Depends1.tjp +0 -1
  403. data/test/TestSuite/Export-Reports/refs/Durations.tjp +0 -1
  404. data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +0 -1
  405. data/test/TestSuite/Export-Reports/refs/Gap.tjp +0 -3
  406. data/test/TestSuite/Export-Reports/refs/Include.tjp +0 -1
  407. data/test/TestSuite/Export-Reports/refs/Journal.tjp +0 -1
  408. data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +0 -1
  409. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +0 -2
  410. data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +0 -1
  411. data/test/TestSuite/Export-Reports/refs/Manager.tjp +0 -1
  412. data/test/TestSuite/Export-Reports/refs/Milestone.tjp +0 -2
  413. data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +0 -1
  414. data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +0 -1
  415. data/test/TestSuite/Export-Reports/refs/Project.tjp +0 -1
  416. data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +0 -3
  417. data/test/TestSuite/Export-Reports/refs/Reports.tjp +0 -1
  418. data/test/TestSuite/Export-Reports/refs/Resource.tjp +0 -1
  419. data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +0 -1
  420. data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +0 -1
  421. data/test/TestSuite/Export-Reports/refs/Scenario.tjp +0 -2
  422. data/test/TestSuite/Export-Reports/refs/Timezone.tjp +0 -1
  423. data/test/TestSuite/Export-Reports/refs/Vacation.tjp +0 -1
  424. data/test/TestSuite/Export-Reports/refs/navigator.tjp +0 -4
  425. data/test/TestSuite/Export-Reports/refs/template.tjp +0 -6
  426. data/test/TestSuite/Export-Reports/refs/textreport.tjp +0 -1
  427. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +0 -8
  428. data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -1
  429. data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +1 -1
  430. data/test/TestSuite/Syntax/Correct/template.tjp +3 -3
  431. data/test/TestSuite/Syntax/Correct/tutorial.tjp +8 -3
  432. data/test/test_BatchProcessor.rb +6 -3
  433. data/test/test_ProjectFileScanner.rb +8 -8
  434. metadata +47 -11
data/manual/Tutorial CHANGED
@@ -13,7 +13,7 @@ grow larger. The complete tutorial example comes with your
13
13
  TaskJuggler software installation. You can use the following command
14
14
  to find the base directory of the example projects.
15
15
 
16
- ruby19 -e "puts Gem::Specification.find_by_name('taskjuggler').gem_dir"
16
+ ruby -e "puts Gem::Specification.find_by_name('taskjuggler').gem_dir"
17
17
 
18
18
  The file for the tutorial project is called
19
19
  ''''examples/Tutorial/tutorial.tjp''''. You can use any plain text
@@ -31,7 +31,7 @@ will result in longer scheduling times and higher memory consumption.
31
31
 
32
32
  <[example file="tutorial" tag="header1"]>
33
33
 
34
- All TaskJuggler properties have a unique ID ,a name, and a set of
34
+ All TaskJuggler properties have a unique ID, a name, and a set of
35
35
  optional attributes. The name must always be specified. The ID can be
36
36
  omitted if you never have to reference the property from another
37
37
  context. If you omit the ID, TaskJuggler will automatically generate a
@@ -75,7 +75,7 @@ The [[currency]] attribute specifies the unit of all currency values.
75
75
  <[example file="tutorial" tag="currency"]>
76
76
 
77
77
  Because each culture has its own way of specifying dates and numbers,
78
- the format for these are configurable. Use the [[timeformat]]
78
+ the format for these is configurable. Use the [[timeformat]]
79
79
  attribute to specify the default format for dates. This format is used
80
80
  for reports, it does not affect the way you specify dates in the
81
81
  project files. Here you always need to use the [[date|TaskJuggler date
@@ -148,7 +148,7 @@ does not do any resource assignments to tasks.
148
148
 
149
149
  Use the [[leaves]] attribute to define a global holiday. Global
150
150
  holidays may have a name and must have a date or date range. Other leaves for
151
- individual resources or groups of resources can be defines similarly.
151
+ individual resources or groups of resources can be defined similarly.
152
152
 
153
153
  === Macros ===
154
154
 
@@ -189,6 +189,8 @@ In order not to get lost with all the various amounts, we declare 3
189
189
  [[account|accounts]] to credit the amounts to. We create one account
190
190
  for the development costs, one for the documentation costs, and one
191
191
  for the customer payments.
192
+ Actually, there is a fourth account consisting of two accounts nested
193
+ into it.
192
194
 
193
195
  <[example file="tutorial" tag="accounts"]>
194
196
 
@@ -308,7 +310,7 @@ should be allocated to the task. The task won't finish before the
308
310
  resources could be allocated long enough to reach the specified
309
311
  effort. Tasks with ''''length'''' or ''''duration'''' criteria and
310
312
  allocated resources will last exactly as long as requested. Resources
311
- will be allocated only if available. It's possible that such a tasks
313
+ will be allocated only if available. It's possible that such a task
312
314
  ends up with no allocations at all if the resources are always
313
315
  assigned to other tasks for that period. Each task can only have one
314
316
  of the three duration criteria. Container tasks may never have a
@@ -331,7 +333,7 @@ and end criteria of a task, or one of them and a duration
331
333
  specification. The start and end criteria can either be fixed dates or
332
334
  relative dates. Relative dates are specifications of the type ''task B
333
335
  starts after task A has finished''. Or in other words, task B depends
334
- on task A. In this example the spec task depends on a subtasks of the
336
+ on task A. In this example the spec task depends on a subtask of the
335
337
  deliveries task. We have not specified it yet, but it has the local ID
336
338
  ''''start''''.
337
339
 
@@ -347,7 +349,7 @@ specification task would be ''''AcSo.spec''''.
347
349
  Relative IDs always start with one or more exclamation marks. Each
348
350
  exclamation mark moves the scope to the next enclosing task. So
349
351
  ''''!deliveries.start'''' is expanded to ''''AcSo.deliveries.start''''
350
- since ''''AcSo'''' is the enclosing task of deliveries. Relative task
352
+ since ''''AcSo'''' is the enclosing task of ''''deliveries''''. Relative task
351
353
  IDs are a little bit confusing at first, but have a real advantage
352
354
  over absolute IDs. Sooner or later you want to move tasks around in
353
355
  your project and then it's a lot less likely that you have to fix
@@ -362,7 +364,7 @@ We use the [[priority]] attribute to mark the importance of
362
364
  the tasks. 500 is the default priority of top-level tasks. Setting the
363
365
  priority to 1000 marks the task as most important task, since the
364
366
  possible range is 1 (not important at all) to 1000 (ultimately
365
- important). priority is an attribute that is passed down to subtasks
367
+ important). ''''priority'''' is an attribute that is passed down to subtasks
366
368
  if specified before the subtasks' declaration. So all subtasks of
367
369
  software have a priority of 1000 as well, unless they have their own
368
370
  priority definition.
@@ -486,7 +488,7 @@ scheduled. But no reports would be generated to visualize the results.
486
488
 
487
489
  === Visualizing the Project ===
488
490
 
489
- To see and share the project data you reports can be generated. You
491
+ To see and share the project data, reports can be generated. You
490
492
  can generate any number of reports and you can select from a variety
491
493
  of report types and output formats. To have a report generated after
492
494
  the project scheduling has been completed, you need include a report
@@ -645,7 +647,7 @@ For HTML output, the reference is a click-able link to the referenced
645
647
  report file.
646
648
 
647
649
  For the [[footer]] we can proceed accordingly. We just add a few more
648
- paragraphs of text the describe certain aspects of the project. By
650
+ paragraphs of text to describe certain aspects of the project. By
649
651
  putting it all together, we end up with the following report
650
652
  definition.
651
653
 
@@ -653,7 +655,7 @@ definition.
653
655
 
654
656
  The generated report can be found
655
657
  [http://www.taskjuggler.org/tj3/examples/Tutorial/Overview.html
656
- here]. It servers as an entry page for the other reports. While it
658
+ here]. It serves as an entry page for the other reports. While it
657
659
  already contains some references, a navigator bar would be handy as
658
660
  well. Fortunately, there is a block generator called 'navigator' to
659
661
  take care of this. But before we can include the navigator in the
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Day_To_Day_Juggling</title>
@@ -24,7 +24,7 @@
24
24
  <div style="width:90%; margin-left:5%; margin-right:5%"><div class="manual">
25
25
  <h1 class="manual" id="Day_To_Day_Juggling">7 Day To Day Juggling</h1>
26
26
  <h2 class="manual" id="Working_with_multiple_scenarios">7.1 Working with multiple scenarios</h2>
27
- <p class="manual">To analyze the impact that a small variation can have on a project, TaskJuggler supports an unlimited amount of scenarios. Each additional scenario is a slight derivation of the it's parent. The task tree structure needs to be the same for all scenarios, but most attributes can vary from one scenario to another. Several report types support comparative listing of multiple <a href="scenarios.html">scenarios</a>.</p>
27
+ <p class="manual">To analyze the impact that a small variation can have on a project, TaskJuggler supports an unlimited amount of scenarios. Each additional scenario is a slight derivation of it's parent. The task tree structure needs to be the same for all scenarios, but most attributes can vary from one scenario to another. Several report types support comparative listing of multiple <a href="scenarios.html">scenarios</a>.</p>
28
28
  <p class="manual">By default, TaskJuggler knows about one scenario, called <code class="manual">plan</code>. The name of this scenario can be changed just like you can add more scenarios in the <a href="project.html">project</a> section of your project files.</p>
29
29
  <div class="codeframe"><pre class="code">project "Example" 2007-05-29 - 2007-07-01 {
30
30
  timezone "America/Denver"
@@ -119,7 +119,7 @@
119
119
  <li>
120
120
  <b>Time sheets</b>: Every project contributor needs to fill out a <a href="timesheet.html">time sheet</a> once a week. To simplify this task as much as possible, a template will be send out by email. The template already lists all tasks that were planned for this week to work on with the respective effort values and end dates. It also provides sections for textual status reports. The contributor needs to review and complete the time sheet and has to send it back via email. TaskJuggler validates the submission and returns an email with either an error message or a nicely formatted version of the time sheet.</li>
121
121
  <li>All time sheets must be submitted by a certain deadline, e. g. midnight on Sunday. TaskJuggler will then compile a summary report and sent it out to a list of interested parties. It will also detect missing time sheets and will send out a reminder to those contributors that have not submitted their report.</li>
122
- <li>On Monday the project managers need to review the time sheets and update the plan accordingly. TaskJuggler can compile a list changes compared to the plan. This makes it easy to update the plan according to the actual progress that was made. The closer the actuals match the plan the less work this is. The project managers now generate bookings for the last week and add them to the database with previous bookings. Doing so, will prevent changes to the plan to affect the past. Only the future will be modified.</li>
122
+ <li>On Monday the project managers need to review the time sheets and update the plan accordingly. TaskJuggler can compile a list of changes compared to the plan. This makes it easy to update the plan according to the actual progress that was made. The closer the actuals match the plan the less work this is. The project managers now generate bookings for the last week and add them to the database with previous bookings. Doing so will prevent changes to the plan to affect the past. Only the future will be modified.</li>
123
123
  <li>Once the plan has been updated, managers will receive their status sheet templates per email. Each manager will get the information for the tasks that they are <a href="responsible.html">responsible</a> for. To consolidate the information for the next manager in the reporting chain they can moderate the reports in three ways. Consolidated manager reports are called dashboard reports.</li>
124
124
  <ol>
125
125
  <li>A status report for a task can be removed from the dashboard.</li>
@@ -312,18 +312,18 @@ include</a> this file at the end of your project header section.</p>
312
312
  <p class="manual">The booking file must be <a href="include.properties.html">included</a> at the end of your main project file.</p>
313
313
  <p class="manual">In case there are still some discrepancies between the booking data and the actual assignments of the resources, you can edit the booking file to correct the data.</p>
314
314
  <p class="manual">The next time you run <code class="manual">tj3</code> with your project, all assignments prior to the date in the project header file will be taken only from the bookings file. All assignments after this date will be determined by the scheduler according to your provided constraints.</p>
315
- <p class="manual">When you run <code class="manual">tj3 --freeze</code> again, it will update the header and booking files. Since you have included your booking file, any modifications you have made, will be preserved. That is, the actual data will be preserved, not the formatting since the file will be completely re-generated again.</p>
315
+ <p class="manual">When you run <code class="manual">tj3 --freeze</code> again, it will update the header and booking files. Since you have included your booking file, any modifications you have made will be preserved. That is, the actual data will be preserved, not the formatting since the file will be completely re-generated again.</p>
316
316
  <h3 class="manual" id="Status_Sheets">7.7.1 Status Sheets</h3>
317
317
  <p class="manual">For larger projects with many contributors the flood of time sheets can become hard to manage. Higher level managers are usually not interested in all the details as long as the project executes according to plan. To keep the managers on each level informed with the proper amount and content TaskJuggler provides the concept of status sheets.</p>
318
318
  <p class="manual">To use status sheets, the reporting chains must be reflected in the task hierarchy of the project. The <a href="responsible.html">responsible</a> attribute must be used to assign tasks to managers. Leaf tasks or whole sub trees must be assigned to the lowest level of management. The responsibility for one or more level of parent tasks must be assigned to the next level of managers and so on.</p>
319
319
  <p class="manual">When all time sheets have been submitted, the reports for all tasks are sent to the responsible managers for these tasks. The information is generated by the <code class="manual">tj3ss_sender</code> program and is called a status report template. Each manager will get one template that includes the status reports for the tasks they are responsible for.</p>
320
- <p class="manual">It's not the managers task to prepare the report for the next level of management. To do this, the manager has 3 options:</p>
321
- <ul><li>Forward the status report of a task directly to the next level. The original authorship can be keep or removed. The content can also be edited if needed.</li></ul>
320
+ <p class="manual">It's the managers task to prepare the report for the next level of management. To do this, the manager has 3 options:</p>
321
+ <ul><li>Forward the status report of a task directly to the next level. The original authorship can be kept or removed. The content can also be edited if needed.</li></ul>
322
322
  <ul><li>Similar reports for a task or a whole task sub-tree can be combined into just one report. To achieve this a new task report must be created for the parent tasks of these lower-level tasks. This will replace all reports for sub tasks with this newly created report.</li></ul>
323
323
  <ul><li>A task report can simply be removed from the status report.</li></ul>
324
324
  <p class="manual">The status sheet template is designed to perform all three actions in a simple manner. The original reports are commented out. To remove a report, it needs to be uncommented and the headline must be set to an empty string. To change a report, the text must be edited after the comment marks have been removed. To create a summary report for a group of tasks, a new report for the common parent task must be created.</p>
325
325
  <h3 class="manual" id="The_Status_Sheet_Template_Sender">7.7.2 The Status Sheet Template Sender</h3>
326
- <p class="manual">To send out the time sheets, the command <code class="manual">tj3ts_sender</code> must be used. It will use the <code class="manual">tj3client</code> program to do retrieve the necessary data from the TaskJuggler server.</p>
326
+ <p class="manual">To send out the time sheets, the command <code class="manual">tj3ts_sender</code> must be used. It will use the <code class="manual">tj3client</code> program to retrieve the necessary data from the TaskJuggler server.</p>
327
327
  <p class="manual">Before the program can be used, a new section must be added to the TaskJuggler configuration file.</p>
328
328
  <div class="manual" codesection="1"><pre class="manual" codesection="1">_statussheets:
329
329
  projectId: prj
@@ -341,7 +341,7 @@ include</a> this file at the end of your project header section.</p>
341
341
  <p class="manual">By sending an email to statussheet-request@taskjuggler.your_company.com and putting their resource ID in the subject of the email, managers will receive an email with the status sheet template. The email will be sent to the email address in the project plan, not the sender of the request email.</p>
342
342
  <p class="manual">The setup described here only works for first-level managers. By adding more email addresses, this can easily be extended for more levels of management. You just need to make sure that <code class="manual">tj3ss_sender</code> is called with the proper parameters to change the resource selection and end date.</p>
343
343
  <h3 class="manual" id="The_Status_Sheet_Receiver">7.7.4 The Status Sheet Receiver</h3>
344
- <p class="manual">Similarly to the time sheets a the completed status sheets must be send back by email. We already described how the necessary email aliases should be configured. For status sheets the address <code class="manual">statussheets@taskjuggler.your_company.com</code> can be used.</p>
344
+ <p class="manual">Similarly to the time sheets, the completed status sheets must be send back by email. We already described how the necessary email aliases should be configured. For status sheets the address <code class="manual">statussheets@taskjuggler.your_company.com</code> can be used.</p>
345
345
  <p class="manual">The incoming emails will then be forwarded to the <code class="manual">tj3ss_receiver</code> program that will process them. To use it, you first need to add the following settings to the <code class="manual">statussheets</code> section of your TaskJuggler configuration file:</p>
346
346
  <div class="manual" codesection="1"><pre class="manual" codesection="1">_statussheets:
347
347
  projectId: prj
@@ -360,6 +360,6 @@ include</a> this file at the end of your project header section.</p>
360
360
  </tr></table>
361
361
  <hr/>
362
362
  <br/>
363
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
363
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
364
364
  </body>
365
365
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Getting_Started</title>
@@ -59,6 +59,6 @@ accounts</a>, <a href="resource.html">resources</a>, <a href="task.html">tasks</
59
59
  </tr></table>
60
60
  <hr/>
61
61
  <br/>
62
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
62
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
63
63
  </body>
64
64
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>How_To_Contribute</title>
@@ -90,6 +90,6 @@ rake gem
90
90
  </tr></table>
91
91
  <hr/>
92
92
  <br/>
93
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
93
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
94
94
  </body>
95
95
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Installation</title>
@@ -54,7 +54,7 @@
54
54
  <p class="manual">This will download and install the latest version from the <a href="http://rubygems.org/gems/taskjuggler" target="_top">RubyGems.org</a> site.</p>
55
55
  <h4 class="manual" id="Installation_into_a_local_Directory">2.2.1.2 Installation into a local Directory</h4>
56
56
  <p class="manual">If you don't want to install TaskJuggler for all users on the system, you can also install it into your home or data directory. This does not require root or admin permissions.</p>
57
- <p class="manual">The following steps are describe the installation on a Linux system with the bash shell. You may have to use slightly different commands on a different operating system.</p>
57
+ <p class="manual">The following steps describe the installation on a Linux system with the bash shell. You may have to use slightly different commands on a different operating system.</p>
58
58
  <p class="manual">Create a new directory <code class="manual">taskjuggler</code> in your $HOME directory for the installation to go into.</p>
59
59
  <div class="manual" codesection="1"><pre class="manual" codesection="1"> mkdir taskjuggler
60
60
  </pre></div>
@@ -71,7 +71,7 @@
71
71
  <div class="manual" codesection="1"><pre class="manual" codesection="1"> export GEM_HOME=${HOME}/taskjuggler
72
72
  </pre></div>
73
73
  <p class="manual">The last two settings should also be added to your .profile file to make them permanent.</p>
74
- <p class="manual">That's it. You now should be run TaskJuggler.</p>
74
+ <p class="manual">That's it. You now should run TaskJuggler.</p>
75
75
  <div class="manual" codesection="1"><pre class="manual" codesection="1"> tj3 --version
76
76
  </pre></div>
77
77
  <h3 class="manual" id="The_manual_way">2.2.2 The manual way</h3>
@@ -101,7 +101,7 @@
101
101
  <p class="manual">Then checkout the source code with the following command</p>
102
102
  <div class="manual" codesection="1"><pre class="manual" codesection="1">git clone git@github.com/taskjuggler/TaskJuggler.git
103
103
  </pre></div>
104
- <p class="manual">Make sure, you have removed all previously installed instances of TaskJuggler from your system before doing so. It is a common mistake to have an old version of the TaskJuggler installed and then use parts of the old and new version together.</p>
104
+ <p class="manual">Make sure you have removed all previously installed instances of TaskJuggler from your system before doing so. It is a common mistake to have an old version of the TaskJuggler installed and then use parts of the old and new version together.</p>
105
105
  <p class="manual">If your Ruby installation does not come with the <a href="http://rake.rubyforge.org" target="_top">Rake</a> build tool, you need to install it now.</p>
106
106
  <p class="manual">If you are interested in a code coverage analysis, you need to also install the <a href="http://eigenclass.org/hiki.rb?rcov" target="_top">rcov</a> code coverage analysis tool. This tool is not needed for most developers. You can safely ignore the warning during rake builds if you don't have it installed.</p>
107
107
  <p class="manual">The following command will create a gem package from the source code.</p>
@@ -155,7 +155,7 @@ export PATH=${PATH}:${TASKJUGGLER_DIR}/bin
155
155
  <p class="manual">Log out and back in again. Now</p>
156
156
  <div class="manual" codesection="1"><pre class="manual" codesection="1"> which ruby
157
157
  </pre></div>
158
- <p class="manual">should show return the path to the link to your <code class="manual">${HOME}/bin/ruby</code>. You now have the latest Ruby installed and are ready to use TaskJuggler.</p>
158
+ <p class="manual">should return the path to the link to your <code class="manual">${HOME}/bin/ruby</code>. You now have the latest Ruby installed and are ready to use TaskJuggler.</p>
159
159
  <p class="manual">As a final step, you need to install the <code class="manual">mail</code> and <code class="manual">term-ansicolor</code> gems.</p>
160
160
  <div class="manual" codesection="1"><pre class="manual" codesection="1"> sudo gem19 install mail term-ansicolor
161
161
  </pre></div>
@@ -163,7 +163,7 @@ export PATH=${PATH}:${TASKJUGGLER_DIR}/bin
163
163
  <div class="manual" codesection="1"><pre class="manual" codesection="1"> sudo gem19 install taskjuggler
164
164
  </pre></div>
165
165
  <h2 class="manual" id="Installing_the_Vim_Support">2.7 Installing the Vim Support</h2>
166
- <p class="manual">TaskJuggler can be used with any text editor that supports UTF-8 text file editing. If you don't have a preference yet, we recommend to try the <a href="http://www.vim.org" target="_top">Vim</a> text editor. It's a very powerful editor and it has been customized for better integration with TaskJuggler. This section describes, how to activate and use the Vim integration. Vim is provided by pretty much any Linux distribution and also works well on MacOX and Windows. See the web page for how to install it if you don't have it yet.</p>
166
+ <p class="manual">TaskJuggler can be used with any text editor that supports UTF-8 text file editing. If you don't have a preference yet, we recommend to try the <a href="http://www.vim.org" target="_top">Vim</a> text editor. It's a very powerful editor and it has been customized for better integration with TaskJuggler. This section describes how to activate and use the Vim integration. Vim is provided by pretty much any Linux distribution and also works well on MacOX and Windows. See the web page for how to install it if you don't have it yet.</p>
167
167
  <p class="manual">This section describes the integration on Linux. Please see the <a href="How_To_Contribute.html">How_To_Contribute</a> section if you want to contribute the description for another OS.</p>
168
168
  <p class="manual">If you have never customized Vim, you need to create a few directories first.</p>
169
169
  <div class="manual" codesection="1"><pre class="manual" codesection="1"> cd ${HOME}
@@ -173,7 +173,7 @@ export PATH=${PATH}:${TASKJUGGLER_DIR}/bin
173
173
  <p class="manual">Then copy the syntax file <code class="manual">tjp.vim</code> into the vim syntax directory. The following command works if you have installed TaskJuggler as a gem with the system provided Ruby. For other cases, you may have to modify it accordingly.</p>
174
174
  <div class="manual" codesection="1"><pre class="manual" codesection="1"> cp `gem contents taskjuggler | fgrep tjp.vim` .vim/syntax
175
175
  </pre></div>
176
- <p class="manual">Now we have to make sure, Vim detects the file. Edit the <code class="manual">.vim/filetype.vim</code> file to contain the following section.</p>
176
+ <p class="manual">Now we have to make sure Vim detects the file. Edit the <code class="manual">.vim/filetype.vim</code> file to contain the following section.</p>
177
177
  <div class="manual" codesection="1"><pre class="manual" codesection="1">augroup filetypedetect
178
178
  au BufNewFile,BufRead *.tjp,*.tji setf tjp
179
179
  augroup END
@@ -200,6 +200,6 @@ augroup END
200
200
  </tr></table>
201
201
  <hr/>
202
202
  <br/>
203
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
203
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
204
204
  </body>
205
205
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Intro</title>
@@ -99,6 +99,6 @@
99
99
  </tr></table>
100
100
  <hr/>
101
101
  <br/>
102
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
102
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
103
103
  </body>
104
104
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>List_Attributes</title>
@@ -40,7 +40,7 @@
40
40
  }
41
41
  </pre></div>
42
42
  <p class="manual">In this example, task <code class="manual">T3</code> has the flags <code class="manual">f1</code> and <code class="manual">f2</code> assigned.</p>
43
- <p class="manual">The same works for scenarios as well. Even though the syntax may not look like inheritance is at play the scenario <code class="manual">s2</code> inherits all values from <code class="manual">s1</code>.</p>
43
+ <p class="manual">The same works for scenarios as well. Even though the syntax may not look like inheritance is at play, the scenario <code class="manual">s2</code> inherits all values from <code class="manual">s1</code>.</p>
44
44
  <div class="codeframe"><pre class="code">project "List attributes" 2014-04-06 +1m {
45
45
  scenario s1 "S1" {
46
46
  scenario s2 "S2"
@@ -71,6 +71,6 @@ task "T4" {
71
71
  </tr></table>
72
72
  <hr/>
73
73
  <br/>
74
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
74
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
75
75
  </body>
76
76
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Reporting_Bugs</title>
@@ -44,6 +44,6 @@
44
44
  </tr></table>
45
45
  <hr/>
46
46
  <br/>
47
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
47
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
48
48
  </body>
49
49
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Rich_Text_Attributes</title>
@@ -85,7 +85,7 @@ This is a '''''italic and bold''''' word.
85
85
  <p class="manual">In some situations, it is desirable to not interpret certain markup sequences and reproduce the text verbatim. Such text must be enclosed in nowiki tags.</p>
86
86
  <div class="manual" codesection="1"><pre class="manual" codesection="1">&lt;nowiki&gt; This is not '''bold''' text. &lt;/nowiki&gt;
87
87
  </pre></div>
88
- <p class="manual">You can also insert raw HTML code by enclosing it in <b>&lt;html&gt;...&lt;/html&gt;</b> tags. For all other output formats, this content will be ignored. There is also no error checking if the code is valid! Use this feature very carefully.</p>
88
+ <p class="manual">You can also insert raw HTML code by enclosing it in <b>&lt;html&gt;...&lt;/html&gt;</b> tags. For all other output formats, this content will be ignored. There is also no error checking whether the code is valid! Use this feature very carefully.</p>
89
89
  <h3 class="manual" id="Block_and_Inline_Generators">5.4.3 Block and Inline Generators</h3>
90
90
  <p class="manual">Block and inline generators are a very powerful extension that allow you to insert arbitrarily complex content. Block generators create a text block whereas inline generators generate an element that fits inside a text paragraph.</p>
91
91
  <p class="manual">Block generators use the following syntax:</p>
@@ -120,7 +120,7 @@ This is a '''''italic and bold''''' word.
120
120
  <ul><li>
121
121
  <code class="manual">id</code> : ID of a defined report</li></ul>
122
122
  <ul><li>
123
- <code class="manual">attributes</code>: A set of attributes that override the original attributes of the referenced report. All report attributes are supported. Since the value of attributes already must be enclosed by single or double quotes, all single or double quotes contained in the string must be escaped with backslashes. This feature enables reports with content that is customized based on where they have been referenced from. It requires the reports to be dynamically generated and is only available when used with the <code class="manual">tj3d</code> web server. The <code class="manual">tj3</code> application will ignore the attributes setting.</li></ul>
123
+ <code class="manual">attributes</code>: A set of attributes that override the original attributes of the referenced report. All report attributes are supported. Since the values of attributes already must be enclosed by single or double quotes, all single or double quotes contained in the string must be escaped with backslashes. This feature enables reports with content that is customized based on where they have been referenced from. It requires the reports to be dynamically generated and is only available when used with the <code class="manual">tj3d</code> web server <code class="manual">tj3webd</code>. The <code class="manual">tj3</code> application will ignore the attributes setting.</li></ul>
124
124
  <div class="manual" codesection="1"><pre class="manual" codesection="1">taskreport "All" {
125
125
  formats html
126
126
  columns name {
@@ -163,7 +163,7 @@ taskreport taskRep "Task" {
163
163
  <ul><li>
164
164
  <code class="manual">currencyformat</code> : The <a href="currencyformat.html">currencyformat</a> used to format currency values.</li></ul>
165
165
  <p class="manual">The query generator inserts any requested value from the project, a task or a resource.</p>
166
- <p class="manual">Queries are context aware. Depending on the context where the query is used, certain or all of the above parameters have already predefined values. When used in the header section of a report, the context does not provide a property or scope property. Start and end dates as well the formatting options are taken from the report context. But when used e. g. in <a href="celltext.column.html">celltext.column</a> the cell provides, that property and the attribute and possibly even the scope property.</p>
166
+ <p class="manual">Queries are context aware. Depending on the context where the query is used, certain or all of the above parameters have already predefined values. When used in the header section of a report, the context does not provide a property or scope property. Start and end dates as well the formatting options are taken from the report context. But when used e. g. in <a href="celltext.column.html">celltext.column</a>, the cell provides that property and the attribute and possibly even the scope property.</p>
167
167
  </div></div>
168
168
  <br/>
169
169
  <hr/>
@@ -174,6 +174,6 @@ taskreport taskRep "Task" {
174
174
  </tr></table>
175
175
  <hr/>
176
176
  <br/>
177
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
177
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
178
178
  </body>
179
179
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>Software</title>
@@ -23,7 +23,7 @@
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_TaskJuggler_Software">6 The TaskJuggler Software</h1>
26
- <p class="manual">After the installation of a software package the first questions that most users have is <i>"How do I run it?"</i>. Many users expect to find an icon on their desktop or an entry in the start menu hierarchy. Don't bother looking for them, you won't find any for TaskJuggler. As we have mentioned before, TaskJuggler is a command line program. All the components are started from a shell by typing in the command name.</p>
26
+ <p class="manual">After the installation of a software package the first question that most users have is <i>"How do I run it?"</i>. Many users expect to find an icon on their desktop or an entry in the start menu hierarchy. Don't bother looking for them, you won't find any for TaskJuggler. As we have mentioned before, TaskJuggler is a command line program. All the components are started from a shell by typing in the command name.</p>
27
27
  <p class="manual">This chapter describes the most important TaskJuggler commands and how to use them. If you haven't used command line programs before, don't worry - you will quickly get used to it.</p>
28
28
  <h2 class="manual" id="tj3">6.1 <code class="manual">tj3</code>
29
29
  </h2>
@@ -74,7 +74,7 @@ shift.timesheet
74
74
  <p class="manual">The same information that is available in your shell is also available in your web browser.</p>
75
75
  <div class="manual" codesection="1"><pre class="manual" codesection="1">tj3man --html &lt;keyword&gt;
76
76
  </pre></div>
77
- <p class="manual">The latter defaults to using the <a href="http://www.mozilla.com/en-US/firefox/new/" target="_top">Mozilla Firefox</a> web browser . Please see</p>
77
+ <p class="manual">The latter defaults to using the <a href="http://www.mozilla.com/en-US/firefox/new/" target="_top">Mozilla Firefox</a> web browser. Please see</p>
78
78
  <div class="manual" codesection="1"><pre class="manual" codesection="1">tj3man --help
79
79
  </pre></div>
80
80
  <p class="manual">how to use a different browser. If you omit the keyword, you will get this user manual (browser).</p>
@@ -82,7 +82,7 @@ shift.timesheet
82
82
  </h2>
83
83
  <p class="manual">
84
84
  <code class="manual">tj3d</code> is the TaskJuggler daemon. It is a program that runs in the background, disconnected from your shell to provide certain services. It can generate reports on demand and processes incoming time sheets or status reports.</p>
85
- <p class="manual">Depending on the size of your project the scheduling time can take several minutes or more. Since all operations need to be done on the data of a scheduled project, it makes sense to have this data readily available. This is the job of the TaskJuggler server or daemon in Linux lingo. The program is called <code class="manual">tj3d</code>. When started, it automatically disconnects from the terminal and runs in the background. All interactions with the server are done via the TCP/IP protocol. For security reasons, only connections from the same machine (localhost) are accepted. To get access all clients must provide an authentication key. A TaskJuggler server can serve any number of projects. Once a project has been loaded successfully, clients can retrieve the data in form of reports. Projects are identified by their project ID. If a newly added project has the same ID such as an already loaded project, the new project will replace the old project once it was scheduled successfully. Before you start the server, you need to provide a configuration file with some basic settings.</p>
85
+ <p class="manual">Depending on the size of your project the scheduling time can take several minutes or more. Since all operations need to be done on the data of a scheduled project, it makes sense to have this data readily available. This is the job of the TaskJuggler server or daemon in Linux lingo. The program is called <code class="manual">tj3d</code>. When started, it automatically disconnects from the terminal and runs in the background. All interactions with the server are done via the TCP/IP protocol. For security reasons, only connections from the same machine (localhost) are accepted. To get access, all clients must provide an authentication key. A TaskJuggler server can serve any number of projects. Once a project has been loaded successfully, clients can retrieve the data in form of reports. Projects are identified by their project ID. If a newly added project has the same ID as an already loaded project, the new project will replace the old project once it was scheduled successfully. Before you start the server, you need to provide a configuration file with some basic settings.</p>
86
86
  <p class="manual">All taskjuggler components can use the same TaskJuggler configuration file. The format is a simple plain text format that follows the <a href="http://www.yaml.org/" target="_top">YAML specification</a>. The file should be called <code class="manual">.taskjugglerrc</code> or <code class="manual">taskjuggler.rc</code>. The settings are structured by sections. Section names always start with an underscore.</p>
87
87
  <div class="manual" codesection="1"><pre class="manual" codesection="1">_global:
88
88
  authKey: topsecret
@@ -100,7 +100,7 @@ shift.timesheet
100
100
  <li>3: Like 2, but additionally with information messages</li>
101
101
  <li>4: Like 3, but additionally with debug messages</li>
102
102
  </ul>
103
- <p class="manual">The configuration file will be searched in the current directory, the current user's home directory or <code class="manual">/etc</code>. You can also explicitly tell the server where to find the configuration file with the <code class="manual">-c</code> option. See</p>
103
+ <p class="manual">The configuration file will be searched for in the current directory, the current user's home directory or <code class="manual">/etc</code>. You can also explicitly tell the server where to find the configuration file with the <code class="manual">-c</code> option. See</p>
104
104
  <div class="manual" codesection="1"><pre class="manual" codesection="1">tj3d --help
105
105
  </pre></div>
106
106
  <p class="manual">for details.</p>
@@ -134,7 +134,7 @@ shift.timesheet
134
134
  authKey: topsecret
135
135
  webServerPort: 8080
136
136
  </pre></div>
137
- <p class="manual">To access the HTML reports point your web browser to <code class="manual">http://localhost:8080/taskjuggler</code>. This assumes that the server is running on your local machine. You will then see a list of all loaded projects. Click on the project name to get a list of all reports for this project.</p>
137
+ <p class="manual">To access the HTML reports, point your web browser to <code class="manual">http://localhost:8080/taskjuggler</code>. This assumes that the server is running on your local machine. You will then see a list of all loaded projects. Click on the project name to get a list of all reports for this project.</p>
138
138
  <p class="manual"><i>WARNING: Please be aware that the web server when you have started it can be accessed by anybody on your local machine and by anybody that can reach your machine over the network! It will serve all reports of all projects that are hosted by the TaskJuggler daemon.</i></p>
139
139
  </div></div>
140
140
  <br/>
@@ -146,6 +146,6 @@ shift.timesheet
146
146
  </tr></table>
147
147
  <hr/>
148
148
  <br/>
149
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
149
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
150
150
  </body>
151
151
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>TaskJuggler_2x_Migration</title>
@@ -66,6 +66,6 @@ applied</a> to certain resources.</li></ul>
66
66
  </tr></table>
67
67
  <hr/>
68
68
  <br/>
69
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
69
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
70
70
  </body>
71
71
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>TaskJuggler_Internals</title>
@@ -27,7 +27,7 @@
27
27
  <h2 class="manual" id="How_the_Scheduler_works">8.1 How the Scheduler works</h2>
28
28
  <p class="manual">It's important to understand that the scheduler implementation is not an optimization algorithm. It does not search a solution space and evaluates various alternative results against each other. This has been tried, but for any real-world project, the solution space becomes unmanageable and scheduling runs took hours to complete.</p>
29
29
  <p class="manual">Instead, we use a heuristic to decide when each task gets its resources assigned. This heuristic is certainly not perfect but has shown good results with fairly moderate computation costs. The following sections contain an overview of the scheduling algorithm. Users are also encouraged to read the actual source code. It can be found in <code class="manual">Project.rb</code>, <code class="manual">TaskScenario.rb</code>, <code class="manual">ResourceScenario.rb</code> and <code class="manual">Allocation.rb</code>. All these files can be found in the <code class="manual">lib/taskjuggler</code> directory. You can also browse the sources on <a href="https://github.com/taskjuggler/TaskJuggler" target="_top">github</a>.</p>
30
- <p class="manual">The scheduler needs to determine the start and end date for all tasks that don't have such dates yet. To deal with multiple concurrent time zones, all time related events are stored internally as UTC time.Additionally, it allocates resources to tasks. All events such as start or end of a task, or allocation of a resource can only happen aligned with the <a href="timingresolution.html">timing resolution</a>. This determines the smallest possible allocation period that we call a time slot. The duration of the slot can be set by the user. Possible values are 5, 10, 15, 30 and 60 minutes.</p>
30
+ <p class="manual">The scheduler needs to determine the start and end date for all tasks that don't have such dates yet. To deal with multiple concurrent time zones, all time related events are stored internally as UTC time. Additionally, it allocates resources to tasks. All events such as start or end of a task, or allocation of a resource can only happen aligned with the <a href="timingresolution.html">timing resolution</a>. This determines the smallest possible allocation period that we call a time slot. The duration of the slot can be set by the user. Possible values are 5, 10, 15, 30 and 60 minutes.</p>
31
31
  <p class="manual">TaskJuggler keeps a scoreboard for each time slot for each leaf resource. Each scoreboard entry specifies whether the resource is unassigned, assigned to a specific task or on leave. This explains why the project duration and number of allocated resources determines the memory usage of the scheduler.</p>
32
32
  <p class="manual">For the scheduling of the project, the scheduler only looks at leave tasks that are not milestones. Container tasks and milestones are scheduled once all necessary information is available. During the scheduling process, leave tasks can have 3 different states.</p>
33
33
  <ol>
@@ -38,14 +38,14 @@
38
38
  <li>
39
39
  <code class="manual">Scheduling completed</code>: The task has a start and end date and resources have been assigned for all time slots.</li>
40
40
  </ol>
41
- <p class="manual">The goal of the scheduler is to transfer all tasks in the completed state. Until this goal has been reached, at least one tasks needs to be in the ready state. If that's not the case, the project schedule cannot be determined and an error is raised. In case there are more than one task in the ready state, we need to have a well defined priority of the tasks. This is necessary since those ready tasks may compete for the same resource in the same time slot.</p>
41
+ <p class="manual">The goal of the scheduler is to transfer all tasks in the completed state. Until this goal has been reached, at least one task needs to be in the ready state. If that's not the case, the project schedule cannot be determined and an error is raised. In case there are more than one task in the ready state, we need to have a well defined priority of the tasks. This is necessary since those ready tasks may compete for the same resource in the same time slot.</p>
42
42
  <p class="manual">The priority can be directly influenced by the user with the <a href="priority.html">priority</a> attribute. This user-defined priority always trumps the other internal criteria described below. In case two tasks have the same priority, an additional measure is used. This measure is called path criticalness. The path criticalness is calculated for each leaf task. The path criticalness is a measure for how important the task is to keep the overall project duration (start of first task to end of last task) to a minimum.</p>
43
43
  <p class="manual">To determine the path criticalness, we first need to determine the resource criticalness first. This is a measure for how likely the tasks that have this resource in their allocation list will actually get the resource. A resource criticalness larger than 1.0 means that statistically, at least one tasks will not get enough of this resource. This is just a statistical measure based on the total requested allocations and the number of available work time.</p>
44
44
  <p class="manual">Once we have determined the criticalness of all allocated resources, we can calculate the criticalness of each individual task. This really only matters for <a href="effort.html">effort</a> based tasks. These really need their allocations to be finished within a limited amount of time. For <a href="length.html">length</a> and <a href="duration.html">duration</a> tasks, the allocations are by definition optional. The user can still influence the allocation to length and duration tasks by adjusting the priority appropriately. However, there is no guarantee that such tasks will ever get any resources assigned. The criticalness of an effort based task is defined as the average of the criticalness of the resources allocated to this task.</p>
45
45
  <p class="manual">We also assign a criticalness to milestones. Based on their priority a criticalness between 0 and 2.0 is assigned. This is done to reflect the user perception that milestones are usually some important goal of the project.</p>
46
46
  <p class="manual">The final step is now the computation of the path criticalness for each effort-based leaf task. For each possible chain of task (path) that is going through a task, the sum of the criticalness values of the tasks of the path is computed. The largest sum is the path criticalness of that task.</p>
47
- <p class="manual">This heuristic will favor allocations to task with critical resources and long dependency chains. As a result, the critical paths of the project are tried to be kept short. The user can use the <b>criticalness</b> and <b>pathcriticalness</b> <a href="columnid.html">columns</a> to review the respective values for he project's tasks and resources.</p>
48
- <p class="manual">When the criticalness and pathcriticalness for all leaf resources and tasks has been determined, the leaf tasks are sorted by priority (hight to low), then by pathcricialness (high to low) and then by the index (low to high). In a loop that is terminated when all tasks have been scheduled or an error condition has been detected, the first task that is ready for scheduling is completely scheduled. This means that resources are allocated for all time slots and missing dates are being computed. The newly determined end (for ASAP tasks) or start (for ALAP tasks) date is then propagated to dependent tasks, milestones or parent tasks if needed. This can result in other tasks becoming ready for scheduling and the list is searched again for the first task that is ready for scheduling to be scheduled.</p>
47
+ <p class="manual">This heuristic will favor allocations to tasks with critical resources and long dependency chains. As a result, the critical paths of the project are tried to be kept short. The user can use the <b>criticalness</b> and <b>pathcriticalness</b> <a href="columnid.html">columns</a> to review the respective values for he project's tasks and resources.</p>
48
+ <p class="manual">When the criticalness and pathcriticalness for all leaf resources and tasks has been determined, the leaf tasks are sorted by priority (high to low), then by pathcricialness (high to low) and then by the index (low to high). In a loop that is terminated when all tasks have been scheduled or an error condition has been detected, the first task that is ready for scheduling is completely scheduled. This means that resources are allocated for all time slots and missing dates are being computed. The newly determined end (for ASAP tasks) or start (for ALAP tasks) date is then propagated to dependent tasks, milestones or parent tasks if needed. This can result in other tasks becoming ready for scheduling and the list is searched again for the first task that is ready for scheduling to be scheduled.</p>
49
49
  <p class="manual">A task can only be scheduled when it is ready for scheduling. This means that at least the start date for the scheduling process must be known. For ASAP (As Soon As Possible) tasks, the scheduler start date is the start date of the task. For ALAP (As Late As Possible) tasks the scheduler start date is the end date of the task. ASAP task will be scheduled from start to end, ALAP tasks from end to start. This is important to understand as resource assignments for each time slot will be determined in this order.</p>
50
50
  <p class="manual">Mixing ASAP and ALAP tasks in the same project is supported but should be used very carefully. It can lead to situations where a lower priority tasks that is earlier in the scheduling process ready for scheduling takes away resources from a higher prioritized task that competes for the same resources. This condition is known is priority inversion. If the scheduler detects such a situation, a warning is generated.</p>
51
51
  </div></div>
@@ -58,6 +58,6 @@
58
58
  </tr></table>
59
59
  <hr/>
60
60
  <br/>
61
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
61
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
62
62
  </body>
63
63
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <!-- This file has been generated by tj3man v3.6.0 -->
2
+ <!-- This file has been generated by tj3man v3.7.2 -->
3
3
  <html lang="en" xml:lang="en">
4
4
  <head>
5
5
  <title>The_TaskJuggler_Syntax</title>
@@ -35,7 +35,7 @@
35
35
  <p class="manual">List of predefined options are enclosed in brackets, the options separated by a vertical bar.</p>
36
36
  <div class="manual" codesection="1"><pre class="manual" codesection="1">keyword ( foo | bar | foobar )
37
37
  </pre></div>
38
- <p class="manual">Some keywords take one or more arguments. These are known as list attributes. The arguments are comma separated. The tree dots in the syntax description mean that the sequence before the dots can be repeated if needed. Inheritable list attributes will append the new list values to the inherited list. Use can use the <a href="purge.html">purge</a> attribute to clear the list before assigning new values to the list attribute.</p>
38
+ <p class="manual">Some keywords take one or more arguments. These are known as list attributes. The arguments are comma separated. The three dots in the syntax description mean that the sequence before the dots can be repeated if needed. Inheritable list attributes will append the new list values to the inherited list. Use can use the <a href="purge.html">purge</a> attribute to clear the list before assigning new values to the list attribute.</p>
39
39
  <div class="manual" codesection="1"><pre class="manual" codesection="1">keyword arg1 [, arg2 ... ]
40
40
  </pre></div>
41
41
  <p class="manual">Variable arguments are further described in the <i>Arguments</i> section of the keyword syntax table. The name is listed immediately followed by the type of the variable argument. The supported types and their meaning is described in the following sections.</p>
@@ -46,7 +46,7 @@
46
46
  <h3 class="manual" id="INTEGER">5.1.3 INTEGER</h3>
47
47
  <p class="manual">An integer is any natural number, e. g. <code class="manual">0</code>, <code class="manual">1</code>, <code class="manual">2</code> and so on.</p>
48
48
  <h3 class="manual" id="STRING">5.1.4 STRING</h3>
49
- <p class="manual">Strings are character sequences that are enclosed by special character marks. There are three different marks supported. For short strings that fit on one lines, you can either use single or double quotes.</p>
49
+ <p class="manual">Strings are character sequences that are enclosed by special character marks. There are three different marks supported. For short strings that fit on one line, you can either use single or double quotes.</p>
50
50
  <div class="manual" codesection="1"><pre class="manual" codesection="1">'This is a single quoted string.'
51
51
  "This is a double quoted string."
52
52
  </pre></div>
@@ -64,7 +64,7 @@
64
64
  -&gt;8-
65
65
  </pre></div>
66
66
  <h2 class="manual" id="Predefined_Macros">5.2 Predefined Macros</h2>
67
- <p class="manual">TaskJuggler supports a few predefined macros. These are available after the project header. They values correspond to the values provided in the project header.</p>
67
+ <p class="manual">TaskJuggler supports a few predefined macros. These are available after the project header. Their values correspond to the values provided in the project header.</p>
68
68
  <ul>
69
69
  <li>
70
70
  <code class="manual">projectstart</code> The start date of the project.</li>
@@ -76,7 +76,7 @@
76
76
  <code class="manual">today</code> Identical to <code class="manual">now</code> but formatted according to the <a href="timeformat.html">timeformat</a> setting of the current context.</li>
77
77
  </ul>
78
78
  <h2 class="manual" id="Environment_Variable_Expansions">5.3 Environment Variable Expansions</h2>
79
- <p class="manual">By using the $(VAR) syntax, you can insert the value of the environment variable name VAR. The name of the variable must consists only of uppercase ASCII letters, underscore or decimal digits.</p>
79
+ <p class="manual">By using the $(VAR) syntax, you can insert the value of the environment variable name VAR. The name of the variable must consist only of uppercase ASCII letters, underscores or decimal digits.</p>
80
80
  </div></div>
81
81
  <br/>
82
82
  <hr/>
@@ -87,6 +87,6 @@
87
87
  </tr></table>
88
88
  <hr/>
89
89
  <br/>
90
- <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
90
+ <div align="center" style="font-size:10px;">Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 by Chris Schlaeger &lt;cs@taskjuggler.org&gt;.<a href="http://www.taskjuggler.org">TaskJuggler</a> is a trademark of Chris Schlaeger.</div>
91
91
  </body>
92
92
  </html>