taskjuggler 3.5.0 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (547) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +31 -0
  3. data/COPYING +72 -13
  4. data/README.rdoc +8 -8
  5. data/bin/tj3 +1 -1
  6. data/bin/tj3client +1 -1
  7. data/bin/tj3d +1 -1
  8. data/bin/tj3man +1 -1
  9. data/bin/tj3ss_receiver +1 -1
  10. data/bin/tj3ss_sender +1 -1
  11. data/bin/tj3ts_receiver +1 -1
  12. data/bin/tj3ts_sender +1 -1
  13. data/bin/tj3ts_summary +1 -1
  14. data/bin/tj3webd +1 -1
  15. data/data/tjp.vim +13 -5
  16. data/examples/Fedora-20/f-20.tjp +15 -15
  17. data/examples/ProjectTemplate/template.tjp +2 -2
  18. data/lib/header.tmpl +2 -2
  19. data/lib/taskjuggler/Account.rb +2 -2
  20. data/lib/taskjuggler/AccountCredit.rb +2 -2
  21. data/lib/taskjuggler/AccountScenario.rb +2 -2
  22. data/lib/taskjuggler/AlertLevelDefinitions.rb +2 -2
  23. data/lib/taskjuggler/AlgorithmDiff.rb +4 -4
  24. data/lib/taskjuggler/Allocation.rb +2 -2
  25. data/lib/taskjuggler/AppConfig.rb +3 -3
  26. data/lib/taskjuggler/AttributeBase.rb +12 -4
  27. data/lib/taskjuggler/AttributeDefinition.rb +2 -2
  28. data/lib/taskjuggler/Attributes.rb +3 -3
  29. data/lib/taskjuggler/BatchProcessor.rb +2 -2
  30. data/lib/taskjuggler/Booking.rb +2 -2
  31. data/lib/taskjuggler/Charge.rb +2 -2
  32. data/lib/taskjuggler/ChargeSet.rb +2 -2
  33. data/lib/taskjuggler/DataCache.rb +2 -2
  34. data/lib/taskjuggler/FileList.rb +2 -2
  35. data/lib/taskjuggler/HTMLDocument.rb +2 -2
  36. data/lib/taskjuggler/HTMLElements.rb +3 -3
  37. data/lib/taskjuggler/ICalendar.rb +2 -2
  38. data/lib/taskjuggler/Interval.rb +2 -2
  39. data/lib/taskjuggler/IntervalList.rb +2 -2
  40. data/lib/taskjuggler/Journal.rb +2 -2
  41. data/lib/taskjuggler/KateSyntax.rb +2 -2
  42. data/lib/taskjuggler/KeywordArray.rb +2 -2
  43. data/lib/taskjuggler/KeywordDocumentation.rb +55 -33
  44. data/lib/taskjuggler/LeaveList.rb +4 -3
  45. data/lib/taskjuggler/Limits.rb +2 -2
  46. data/lib/taskjuggler/Log.rb +2 -2
  47. data/lib/taskjuggler/LogicalExpression.rb +2 -2
  48. data/lib/taskjuggler/LogicalFunction.rb +15 -3
  49. data/lib/taskjuggler/LogicalOperation.rb +15 -10
  50. data/lib/taskjuggler/MessageHandler.rb +2 -2
  51. data/lib/taskjuggler/PTNProxy.rb +2 -2
  52. data/lib/taskjuggler/Painter.rb +2 -2
  53. data/lib/taskjuggler/Project.rb +8 -2
  54. data/lib/taskjuggler/ProjectFileParser.rb +3 -3
  55. data/lib/taskjuggler/ProjectFileScanner.rb +2 -2
  56. data/lib/taskjuggler/PropertyList.rb +8 -15
  57. data/lib/taskjuggler/PropertySet.rb +6 -2
  58. data/lib/taskjuggler/PropertyTreeNode.rb +20 -2
  59. data/lib/taskjuggler/Query.rb +9 -4
  60. data/lib/taskjuggler/RealFormat.rb +2 -2
  61. data/lib/taskjuggler/Resource.rb +2 -2
  62. data/lib/taskjuggler/ResourceScenario.rb +45 -33
  63. data/lib/taskjuggler/RichText.rb +2 -2
  64. data/lib/taskjuggler/RichText/Document.rb +2 -2
  65. data/lib/taskjuggler/RichText/Element.rb +2 -2
  66. data/lib/taskjuggler/RichText/FunctionExample.rb +2 -2
  67. data/lib/taskjuggler/RichText/FunctionHandler.rb +2 -2
  68. data/lib/taskjuggler/RichText/Parser.rb +2 -2
  69. data/lib/taskjuggler/RichText/RTFHandlers.rb +2 -2
  70. data/lib/taskjuggler/RichText/RTFNavigator.rb +2 -2
  71. data/lib/taskjuggler/RichText/RTFQuery.rb +2 -2
  72. data/lib/taskjuggler/RichText/RTFReport.rb +2 -2
  73. data/lib/taskjuggler/RichText/RTFReportLink.rb +2 -2
  74. data/lib/taskjuggler/RichText/RTFWithQuerySupport.rb +2 -2
  75. data/lib/taskjuggler/RichText/Scanner.rb +2 -2
  76. data/lib/taskjuggler/RichText/Snip.rb +2 -2
  77. data/lib/taskjuggler/RichText/SyntaxRules.rb +2 -2
  78. data/lib/taskjuggler/RichText/TOCEntry.rb +2 -2
  79. data/lib/taskjuggler/RichText/TableOfContents.rb +2 -2
  80. data/lib/taskjuggler/RuntimeConfig.rb +4 -4
  81. data/lib/taskjuggler/Scenario.rb +2 -2
  82. data/lib/taskjuggler/ScenarioData.rb +2 -2
  83. data/lib/taskjuggler/Scoreboard.rb +2 -2
  84. data/lib/taskjuggler/SheetHandlerBase.rb +3 -3
  85. data/lib/taskjuggler/SheetReceiver.rb +2 -2
  86. data/lib/taskjuggler/SheetSender.rb +2 -2
  87. data/lib/taskjuggler/Shift.rb +2 -2
  88. data/lib/taskjuggler/ShiftAssignments.rb +2 -2
  89. data/lib/taskjuggler/ShiftScenario.rb +2 -2
  90. data/lib/taskjuggler/SimpleQueryExpander.rb +2 -2
  91. data/lib/taskjuggler/StatusSheetReceiver.rb +2 -2
  92. data/lib/taskjuggler/StatusSheetSender.rb +4 -4
  93. data/lib/taskjuggler/StdIoWrapper.rb +2 -2
  94. data/lib/taskjuggler/SyntaxReference.rb +3 -3
  95. data/lib/taskjuggler/TableColumnDefinition.rb +2 -2
  96. data/lib/taskjuggler/TableColumnSorter.rb +2 -2
  97. data/lib/taskjuggler/Task.rb +2 -2
  98. data/lib/taskjuggler/TaskDependency.rb +2 -2
  99. data/lib/taskjuggler/TaskJuggler.rb +3 -4
  100. data/lib/taskjuggler/TaskScenario.rb +138 -60
  101. data/lib/taskjuggler/TernarySearchTree.rb +2 -2
  102. data/lib/taskjuggler/TextFormatter.rb +2 -2
  103. data/lib/taskjuggler/TextParser.rb +2 -2
  104. data/lib/taskjuggler/TextParser/MacroTable.rb +2 -2
  105. data/lib/taskjuggler/TextParser/Pattern.rb +2 -2
  106. data/lib/taskjuggler/TextParser/Rule.rb +2 -2
  107. data/lib/taskjuggler/TextParser/Scanner.rb +3 -3
  108. data/lib/taskjuggler/TextParser/SourceFileInfo.rb +2 -2
  109. data/lib/taskjuggler/TextParser/StackElement.rb +2 -2
  110. data/lib/taskjuggler/TextParser/State.rb +2 -2
  111. data/lib/taskjuggler/TextParser/TokenDoc.rb +2 -2
  112. data/lib/taskjuggler/TimeSheetReceiver.rb +2 -2
  113. data/lib/taskjuggler/TimeSheetSender.rb +2 -2
  114. data/lib/taskjuggler/TimeSheetSummary.rb +3 -3
  115. data/lib/taskjuggler/TimeSheets.rb +2 -2
  116. data/lib/taskjuggler/Tj3AppBase.rb +2 -2
  117. data/lib/taskjuggler/Tj3Config.rb +5 -5
  118. data/lib/taskjuggler/Tj3SheetAppBase.rb +2 -2
  119. data/lib/taskjuggler/TjException.rb +2 -2
  120. data/lib/taskjuggler/TjTime.rb +2 -2
  121. data/lib/taskjuggler/TjpExample.rb +2 -2
  122. data/lib/taskjuggler/TjpSyntaxRules.rb +206 -52
  123. data/lib/taskjuggler/URLParameter.rb +2 -2
  124. data/lib/taskjuggler/UTF8String.rb +2 -2
  125. data/lib/taskjuggler/UserManual.rb +3 -2
  126. data/lib/taskjuggler/VimSyntax.rb +4 -4
  127. data/lib/taskjuggler/WorkingHours.rb +2 -2
  128. data/lib/taskjuggler/XMLDocument.rb +2 -2
  129. data/lib/taskjuggler/XMLElement.rb +2 -2
  130. data/lib/taskjuggler/apps/Tj3.rb +2 -2
  131. data/lib/taskjuggler/apps/Tj3Client.rb +2 -2
  132. data/lib/taskjuggler/apps/Tj3Daemon.rb +7 -3
  133. data/lib/taskjuggler/apps/Tj3Man.rb +3 -3
  134. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +2 -2
  135. data/lib/taskjuggler/apps/Tj3SsSender.rb +2 -2
  136. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +2 -2
  137. data/lib/taskjuggler/apps/Tj3TsSender.rb +2 -2
  138. data/lib/taskjuggler/apps/Tj3TsSummary.rb +2 -2
  139. data/lib/taskjuggler/apps/Tj3WebD.rb +7 -3
  140. data/lib/taskjuggler/daemon/Daemon.rb +2 -2
  141. data/lib/taskjuggler/daemon/DaemonConnector.rb +2 -2
  142. data/lib/taskjuggler/daemon/ProcessIntercom.rb +4 -3
  143. data/lib/taskjuggler/daemon/ProjectBroker.rb +2 -2
  144. data/lib/taskjuggler/daemon/ProjectServer.rb +2 -2
  145. data/lib/taskjuggler/daemon/ReportServer.rb +2 -2
  146. data/lib/taskjuggler/daemon/ReportServlet.rb +22 -11
  147. data/lib/taskjuggler/daemon/WebServer.rb +2 -2
  148. data/lib/taskjuggler/daemon/WelcomePage.rb +2 -2
  149. data/lib/taskjuggler/deep_copy.rb +2 -2
  150. data/lib/taskjuggler/reports/AccountListRE.rb +2 -2
  151. data/lib/taskjuggler/reports/CSVFile.rb +2 -2
  152. data/lib/taskjuggler/reports/ChartPlotter.rb +2 -2
  153. data/lib/taskjuggler/reports/CollisionDetector.rb +2 -2
  154. data/lib/taskjuggler/reports/ColumnTable.rb +2 -2
  155. data/lib/taskjuggler/reports/ExportRE.rb +2 -2
  156. data/lib/taskjuggler/reports/GanttChart.rb +2 -2
  157. data/lib/taskjuggler/reports/GanttContainer.rb +2 -2
  158. data/lib/taskjuggler/reports/GanttHeader.rb +2 -2
  159. data/lib/taskjuggler/reports/GanttHeaderScaleItem.rb +2 -2
  160. data/lib/taskjuggler/reports/GanttLine.rb +8 -5
  161. data/lib/taskjuggler/reports/GanttLoadStack.rb +2 -2
  162. data/lib/taskjuggler/reports/GanttMilestone.rb +2 -2
  163. data/lib/taskjuggler/reports/GanttRouter.rb +2 -2
  164. data/lib/taskjuggler/reports/GanttTaskBar.rb +2 -2
  165. data/lib/taskjuggler/reports/HTMLGraphics.rb +2 -2
  166. data/lib/taskjuggler/reports/ICalReport.rb +2 -2
  167. data/lib/taskjuggler/reports/MspXmlRE.rb +6 -3
  168. data/lib/taskjuggler/reports/Navigator.rb +2 -2
  169. data/lib/taskjuggler/reports/NikuReport.rb +2 -2
  170. data/lib/taskjuggler/reports/Report.rb +6 -6
  171. data/lib/taskjuggler/reports/ReportBase.rb +2 -2
  172. data/lib/taskjuggler/reports/ReportContext.rb +2 -2
  173. data/lib/taskjuggler/reports/ReportTable.rb +2 -2
  174. data/lib/taskjuggler/reports/ReportTableCell.rb +2 -2
  175. data/lib/taskjuggler/reports/ReportTableColumn.rb +2 -2
  176. data/lib/taskjuggler/reports/ReportTableLegend.rb +2 -2
  177. data/lib/taskjuggler/reports/ReportTableLine.rb +2 -2
  178. data/lib/taskjuggler/reports/ResourceListRE.rb +2 -2
  179. data/lib/taskjuggler/reports/StatusSheetReport.rb +2 -2
  180. data/lib/taskjuggler/reports/TableReport.rb +22 -19
  181. data/lib/taskjuggler/reports/TableReportColumn.rb +2 -2
  182. data/lib/taskjuggler/reports/TagFile.rb +2 -2
  183. data/lib/taskjuggler/reports/TaskListRE.rb +2 -2
  184. data/lib/taskjuggler/reports/TextReport.rb +2 -2
  185. data/lib/taskjuggler/reports/TimeSheetReport.rb +2 -2
  186. data/lib/taskjuggler/reports/TjpExportRE.rb +2 -2
  187. data/lib/taskjuggler/reports/TraceReport.rb +3 -3
  188. data/lib/tj3.rb +2 -2
  189. data/lib/tj3client.rb +2 -2
  190. data/lib/tj3d.rb +2 -2
  191. data/lib/tj3man.rb +2 -2
  192. data/lib/tj3ss_receiver.rb +2 -2
  193. data/lib/tj3ss_sender.rb +2 -2
  194. data/lib/tj3ts_receiver.rb +2 -2
  195. data/lib/tj3ts_sender.rb +2 -2
  196. data/lib/tj3ts_summary.rb +2 -2
  197. data/lib/tj3webd.rb +2 -2
  198. data/manual/Day_To_Day_Juggling +7 -7
  199. data/manual/Getting_Started +2 -2
  200. data/manual/Installation +4 -4
  201. data/manual/Intro +1 -1
  202. data/manual/List_Attributes +45 -0
  203. data/manual/Rich_Text_Attributes +5 -5
  204. data/manual/Software +1 -1
  205. data/manual/TaskJuggler_2x_Migration +2 -2
  206. data/manual/html/Day_To_Day_Juggling.html +9 -9
  207. data/manual/html/Getting_Started.html +3 -3
  208. data/manual/html/How_To_Contribute.html +2 -2
  209. data/manual/html/Installation.html +6 -6
  210. data/manual/html/Intro.html +3 -3
  211. data/manual/html/List_Attributes.html +76 -0
  212. data/manual/html/Reporting_Bugs.html +2 -2
  213. data/manual/html/Rich_Text_Attributes.html +9 -9
  214. data/manual/html/Software.html +5 -5
  215. data/manual/html/TaskJuggler_2x_Migration.html +4 -4
  216. data/manual/html/TaskJuggler_Internals.html +2 -2
  217. data/manual/html/The_TaskJuggler_Syntax.html +2 -2
  218. data/manual/html/Tutorial.html +2 -2
  219. data/manual/html/account.html +5 -3
  220. data/manual/html/account.task.html +5 -3
  221. data/manual/html/accountprefix.html +5 -3
  222. data/manual/html/accountreport.html +5 -3
  223. data/manual/html/accountroot.html +5 -3
  224. data/manual/html/active.html +5 -3
  225. data/manual/html/adopt.task.html +5 -3
  226. data/manual/html/aggregate.html +5 -3
  227. data/manual/html/alert.html +5 -3
  228. data/manual/html/alertlevels.html +5 -3
  229. data/manual/html/allocate.html +6 -3
  230. data/manual/html/alphabet.html +1 -1
  231. data/manual/html/alternative.html +5 -3
  232. data/manual/html/author.html +5 -3
  233. data/manual/html/auxdir.html +5 -3
  234. data/manual/html/auxdir.report.html +5 -3
  235. data/manual/html/balance.html +5 -3
  236. data/manual/html/booking.resource.html +6 -4
  237. data/manual/html/booking.task.html +7 -4
  238. data/manual/html/caption.html +5 -3
  239. data/manual/html/cellcolor.column.html +5 -3
  240. data/manual/html/celltext.column.html +5 -3
  241. data/manual/html/center.html +5 -3
  242. data/manual/html/charge.html +6 -3
  243. data/manual/html/chargeset.html +6 -3
  244. data/manual/html/columnid.html +24 -15
  245. data/manual/html/columns.html +6 -3
  246. data/manual/html/complete.html +5 -3
  247. data/manual/html/copyright.html +5 -3
  248. data/manual/html/credits.html +6 -3
  249. data/manual/html/currency.html +5 -3
  250. data/manual/html/currencyformat.html +5 -3
  251. data/manual/html/dailymax.html +5 -3
  252. data/manual/html/dailymin.html +5 -3
  253. data/manual/html/dailyworkinghours.html +5 -3
  254. data/manual/html/date.extend.html +5 -3
  255. data/manual/html/date.html +5 -3
  256. data/manual/html/definitions.html +5 -3
  257. data/manual/html/depends.html +6 -3
  258. data/manual/html/details.html +5 -3
  259. data/manual/html/disabled.html +5 -3
  260. data/manual/html/duration.html +5 -3
  261. data/manual/html/efficiency.html +5 -3
  262. data/manual/html/effort.html +7 -5
  263. data/manual/html/effortdone.html +105 -0
  264. data/manual/html/effortleft.html +105 -0
  265. data/manual/html/email.html +7 -5
  266. data/manual/html/enabled.html +5 -3
  267. data/manual/html/end.column.html +5 -3
  268. data/manual/html/end.html +5 -3
  269. data/manual/html/end.limit.html +5 -3
  270. data/manual/html/end.report.html +5 -3
  271. data/manual/html/end.timesheet.html +5 -3
  272. data/manual/html/endcredit.html +5 -3
  273. data/manual/html/epilog.html +5 -3
  274. data/manual/html/export.html +5 -3
  275. data/manual/html/extend.html +5 -3
  276. data/manual/html/fail.html +6 -3
  277. data/manual/html/fdl.html +2 -2
  278. data/manual/html/flags.account.html +6 -3
  279. data/manual/html/flags.html +5 -3
  280. data/manual/html/flags.journalentry.html +5 -3
  281. data/manual/html/flags.report.html +6 -3
  282. data/manual/html/flags.resource.html +6 -3
  283. data/manual/html/flags.statussheet.html +5 -3
  284. data/manual/html/flags.task.html +6 -3
  285. data/manual/html/flags.timesheet.html +5 -3
  286. data/manual/html/fontcolor.column.html +5 -3
  287. data/manual/html/footer.html +5 -3
  288. data/manual/html/formats.export.html +6 -4
  289. data/manual/html/formats.html +6 -3
  290. data/manual/html/functions.html +5 -3
  291. data/manual/html/gapduration.html +6 -4
  292. data/manual/html/gaplength.html +6 -4
  293. data/manual/html/halign.center.html +5 -3
  294. data/manual/html/halign.column.html +5 -3
  295. data/manual/html/halign.left.html +5 -3
  296. data/manual/html/halign.right.html +5 -3
  297. data/manual/html/hasalert.html +5 -3
  298. data/manual/html/header.html +5 -3
  299. data/manual/html/headline.html +5 -3
  300. data/manual/html/height.html +5 -3
  301. data/manual/html/hideaccount.html +5 -3
  302. data/manual/html/hidejournalentry.html +5 -3
  303. data/manual/html/hidereport.html +5 -3
  304. data/manual/html/hideresource.html +5 -3
  305. data/manual/html/hidetask.html +5 -3
  306. data/manual/html/icalreport.html +5 -3
  307. data/manual/html/include.macro.html +5 -3
  308. data/manual/html/include.project.html +5 -3
  309. data/manual/html/include.properties.html +5 -3
  310. data/manual/html/index.html +1 -1
  311. data/manual/html/inherit.extend.html +5 -3
  312. data/manual/html/interval1.html +5 -3
  313. data/manual/html/interval2.html +5 -3
  314. data/manual/html/interval3.html +5 -3
  315. data/manual/html/interval4.html +5 -3
  316. data/manual/html/isactive.html +5 -3
  317. data/manual/html/ischildof.html +5 -3
  318. data/manual/html/isdependencyof.html +5 -3
  319. data/manual/html/isdutyof.html +5 -3
  320. data/manual/html/isfeatureof.html +5 -3
  321. data/manual/html/isleaf.html +5 -3
  322. data/manual/html/ismilestone.html +5 -3
  323. data/manual/html/isongoing.html +5 -3
  324. data/manual/html/isresource.html +5 -3
  325. data/manual/html/isresponsibilityof.html +5 -3
  326. data/manual/html/istask.html +5 -3
  327. data/manual/html/isvalid.html +5 -3
  328. data/manual/html/journalattributes.html +5 -3
  329. data/manual/html/journalentry.html +5 -3
  330. data/manual/html/journalmode.html +5 -3
  331. data/manual/html/leaveallowance.html +5 -3
  332. data/manual/html/leaves.html +13 -6
  333. data/manual/html/left.html +5 -3
  334. data/manual/html/length.html +5 -3
  335. data/manual/html/limits.allocate.html +5 -3
  336. data/manual/html/limits.html +5 -3
  337. data/manual/html/limits.resource.html +5 -3
  338. data/manual/html/limits.task.html +5 -3
  339. data/manual/html/listitem.column.html +5 -3
  340. data/manual/html/listtype.column.html +5 -3
  341. data/manual/html/loadunit.html +5 -3
  342. data/manual/html/logicalexpression.html +6 -4
  343. data/manual/html/logicalflagexpression.html +5 -3
  344. data/manual/html/macro.html +5 -3
  345. data/manual/html/managers.html +6 -3
  346. data/manual/html/mandatory.html +5 -3
  347. data/manual/html/maxend.html +5 -3
  348. data/manual/html/maximum.html +5 -3
  349. data/manual/html/maxstart.html +5 -3
  350. data/manual/html/milestone.html +5 -3
  351. data/manual/html/minend.html +5 -3
  352. data/manual/html/minimum.html +5 -3
  353. data/manual/html/minstart.html +5 -3
  354. data/manual/html/monthlymax.html +5 -3
  355. data/manual/html/monthlymin.html +5 -3
  356. data/manual/html/navbar.html +7 -1
  357. data/manual/html/navigator.html +5 -3
  358. data/manual/html/newtask.html +5 -3
  359. data/manual/html/nikureport.html +5 -3
  360. data/manual/html/note.task.html +5 -3
  361. data/manual/html/now.html +5 -3
  362. data/manual/html/number.extend.html +5 -3
  363. data/manual/html/numberformat.html +5 -3
  364. data/manual/html/onend.html +5 -3
  365. data/manual/html/onstart.html +5 -3
  366. data/manual/html/opennodes.html +5 -3
  367. data/manual/html/outputdir.html +5 -3
  368. data/manual/html/overtime.booking.html +5 -3
  369. data/manual/html/period.column.html +5 -3
  370. data/manual/html/period.limit.html +5 -3
  371. data/manual/html/period.report.html +5 -3
  372. data/manual/html/period.task.html +5 -3
  373. data/manual/html/persistent.html +5 -3
  374. data/manual/html/precedes.html +6 -3
  375. data/manual/html/priority.html +5 -3
  376. data/manual/html/priority.timesheet.html +5 -3
  377. data/manual/html/project.html +5 -3
  378. data/manual/html/projectid.html +5 -3
  379. data/manual/html/projectid.task.html +5 -3
  380. data/manual/html/projectids.html +5 -3
  381. data/manual/html/projection.html +5 -3
  382. data/manual/html/prolog.html +5 -3
  383. data/manual/html/properties.html +5 -3
  384. data/manual/html/purge.html +5 -3
  385. data/manual/html/rate.html +5 -3
  386. data/manual/html/rate.resource.html +5 -3
  387. data/manual/html/rawhtmlhead.html +5 -3
  388. data/manual/html/reference.extend.html +5 -3
  389. data/manual/html/remaining.html +5 -3
  390. data/manual/html/replace.html +5 -3
  391. data/manual/html/reportprefix.html +5 -3
  392. data/manual/html/resource.html +5 -3
  393. data/manual/html/resourceattributes.html +5 -3
  394. data/manual/html/resourceprefix.html +5 -3
  395. data/manual/html/resourcereport.html +5 -3
  396. data/manual/html/resourceroot.html +5 -3
  397. data/manual/html/resources.limit.html +5 -3
  398. data/manual/html/responsible.html +6 -3
  399. data/manual/html/richtext.extend.html +5 -3
  400. data/manual/html/right.html +5 -3
  401. data/manual/html/rollupaccount.html +5 -3
  402. data/manual/html/rollupresource.html +5 -3
  403. data/manual/html/rolluptask.html +5 -3
  404. data/manual/html/scale.column.html +5 -3
  405. data/manual/html/scenario.html +5 -3
  406. data/manual/html/scenario.ical.html +5 -3
  407. data/manual/html/scenarios.export.html +5 -3
  408. data/manual/html/scenarios.html +6 -3
  409. data/manual/html/scenariospecific.extend.html +5 -3
  410. data/manual/html/scheduled.html +6 -4
  411. data/manual/html/scheduling.html +7 -5
  412. data/manual/html/schedulingmode.html +74 -0
  413. data/manual/html/select.html +7 -5
  414. data/manual/html/selfcontained.html +5 -3
  415. data/manual/html/shift.allocate.html +5 -3
  416. data/manual/html/shift.html +5 -3
  417. data/manual/html/shift.resource.html +5 -3
  418. data/manual/html/shift.task.html +5 -3
  419. data/manual/html/shift.timesheet.html +5 -3
  420. data/manual/html/shifts.allocate.html +5 -3
  421. data/manual/html/shifts.resource.html +5 -3
  422. data/manual/html/shifts.task.html +6 -4
  423. data/manual/html/shorttimeformat.html +5 -3
  424. data/manual/html/sloppy.booking.html +5 -3
  425. data/manual/html/sloppy.projection.html +5 -3
  426. data/manual/html/sortaccounts.html +6 -4
  427. data/manual/html/sortjournalentries.html +5 -3
  428. data/manual/html/sortresources.html +6 -4
  429. data/manual/html/sorttasks.html +6 -4
  430. data/manual/html/start.column.html +5 -3
  431. data/manual/html/start.html +5 -3
  432. data/manual/html/start.limit.html +5 -3
  433. data/manual/html/start.report.html +5 -3
  434. data/manual/html/startcredit.html +5 -3
  435. data/manual/html/status.statussheet.html +5 -3
  436. data/manual/html/status.timesheet.html +5 -3
  437. data/manual/html/statussheet.html +5 -3
  438. data/manual/html/statussheetreport.html +5 -3
  439. data/manual/html/strict.projection.html +5 -3
  440. data/manual/html/summary.html +5 -3
  441. data/manual/html/supplement.html +5 -3
  442. data/manual/html/supplement.resource.html +5 -3
  443. data/manual/html/supplement.task.html +24 -4
  444. data/manual/html/tagfile.html +5 -3
  445. data/manual/html/task.html +24 -4
  446. data/manual/html/task.statussheet.html +5 -3
  447. data/manual/html/task.timesheet.html +5 -3
  448. data/manual/html/taskattributes.html +5 -3
  449. data/manual/html/taskprefix.html +5 -3
  450. data/manual/html/taskreport.html +5 -3
  451. data/manual/html/taskroot.export.html +5 -3
  452. data/manual/html/taskroot.html +5 -3
  453. data/manual/html/text.extend.html +5 -3
  454. data/manual/html/textreport.html +5 -3
  455. data/manual/html/timeformat.html +5 -3
  456. data/manual/html/timeformat1.html +5 -3
  457. data/manual/html/timeformat2.html +5 -3
  458. data/manual/html/timeoff.nikureport.html +5 -3
  459. data/manual/html/timesheet.html +5 -3
  460. data/manual/html/timesheetreport.html +5 -3
  461. data/manual/html/timezone.export.html +5 -3
  462. data/manual/html/timezone.html +5 -3
  463. data/manual/html/timezone.report.html +5 -3
  464. data/manual/html/timezone.shift.html +5 -3
  465. data/manual/html/timingresolution.html +5 -3
  466. data/manual/html/title.column.html +5 -3
  467. data/manual/html/title.html +5 -3
  468. data/manual/html/toc.html +251 -223
  469. data/manual/html/tooltip.column.html +5 -3
  470. data/manual/html/tracereport.html +6 -3
  471. data/manual/html/trackingscenario.html +5 -3
  472. data/manual/html/treelevel.html +5 -3
  473. data/manual/html/vacation.html +5 -3
  474. data/manual/html/vacation.resource.html +5 -3
  475. data/manual/html/vacation.shift.html +5 -3
  476. data/manual/html/warn.html +6 -3
  477. data/manual/html/weeklymax.html +5 -3
  478. data/manual/html/weeklymin.html +5 -3
  479. data/manual/html/weekstartsmonday.html +5 -3
  480. data/manual/html/weekstartssunday.html +5 -3
  481. data/manual/html/width.column.html +5 -3
  482. data/manual/html/width.html +5 -3
  483. data/manual/html/work.html +5 -3
  484. data/manual/html/workinghours.project.html +5 -3
  485. data/manual/html/workinghours.resource.html +5 -3
  486. data/manual/html/workinghours.shift.html +5 -3
  487. data/manual/html/yearlyworkingdays.html +5 -3
  488. data/spec/Color_spec.rb +6 -2
  489. data/spec/ICalendar_spec.rb +6 -2
  490. data/spec/IntervalList_spec.rb +7 -3
  491. data/spec/ProjectBroker_spec.rb +6 -2
  492. data/spec/StatusSheets_spec.rb +6 -2
  493. data/spec/TableColumnSorter_spec.rb +6 -2
  494. data/spec/TernarySearchTree_spec.rb +8 -4
  495. data/spec/TimeSheets_spec.rb +6 -2
  496. data/spec/Tj3Daemon_spec.rb +6 -2
  497. data/spec/Tj3_spec.rb +6 -2
  498. data/spec/TraceReport_spec.rb +2 -2
  499. data/spec/support/DaemonControl.rb +2 -2
  500. data/spec/support/spec_helper.rb +2 -2
  501. data/taskjuggler.gemspec +1 -1
  502. data/test/MessageChecker.rb +2 -2
  503. data/test/ReferenceGenerator.rb +2 -2
  504. data/test/TestSuite/CSV-Reports/headcount.tjp +1 -0
  505. data/test/TestSuite/ReportGenerator/Correct/JournalMode.tjp +1 -1
  506. data/test/TestSuite/ReportGenerator/Correct/refs/JournalMode-1.csv +9 -9
  507. data/test/TestSuite/ReportGenerator/Correct/refs/JournalMode-2.csv +46 -48
  508. data/test/TestSuite/Scheduler/Correct/Depends.tjp +17 -0
  509. data/test/TestSuite/Scheduler/Correct/Precedes.tjp +17 -0
  510. data/test/TestSuite/Scheduler/Correct/Scheduled.tjp +11 -0
  511. data/test/TestSuite/Scheduler/Correct/SchedulingMode.tjp +45 -0
  512. data/test/TestSuite/{Syntax → Scheduler}/Errors/not_scheduled.tjp +1 -1
  513. data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -1
  514. data/test/TestSuite/Syntax/Correct/ListAttributes.tjp +48 -0
  515. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +1 -1
  516. data/test/TestSuite/Syntax/Errors/working_duration_too_small.tjp +6 -0
  517. data/test/TjpGen.rb +2 -2
  518. data/test/all.rb +2 -2
  519. data/test/test_AlgorithmDiff.rb +2 -2
  520. data/test/test_BatchProcessor.rb +2 -2
  521. data/test/test_CSV-Reports.rb +2 -2
  522. data/test/test_CSVFile.rb +2 -2
  523. data/test/test_CollisionDetector.rb +2 -2
  524. data/test/test_Export-Reports.rb +2 -2
  525. data/test/test_Journal.rb +2 -2
  526. data/test/test_Limits.rb +2 -2
  527. data/test/test_LogicalExpression.rb +2 -2
  528. data/test/test_MacroTable.rb +2 -2
  529. data/test/test_Project.rb +2 -2
  530. data/test/test_ProjectFileScanner.rb +2 -2
  531. data/test/test_PropertySet.rb +2 -2
  532. data/test/test_Query.rb +2 -2
  533. data/test/test_RealFormat.rb +2 -2
  534. data/test/test_ReportGenerator.rb +2 -2
  535. data/test/test_RichText.rb +2 -2
  536. data/test/test_Scheduler.rb +2 -2
  537. data/test/test_ShiftAssignments.rb +2 -2
  538. data/test/test_SimpleQueryExpander.rb +2 -2
  539. data/test/test_Syntax.rb +2 -2
  540. data/test/test_TextFormatter.rb +2 -2
  541. data/test/test_TjTime.rb +2 -2
  542. data/test/test_TjpExample.rb +2 -2
  543. data/test/test_URLParameter.rb +2 -2
  544. data/test/test_UTF8String.rb +2 -2
  545. data/test/test_WorkingHours.rb +2 -2
  546. data/test/test_deep_copy.rb +2 -2
  547. metadata +346 -350
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = StackElement.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = State.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = TokenDoc.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = TimeSheetReceiver.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = TimeSheetSender.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = TimeSheetSummary.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -78,7 +78,7 @@ EOT
78
78
  templateFile = "#{@templateDir}/#{@date}/#{resourceId}_#{@date}.tji"
79
79
  sheetFile = "#{@sheetDir}/#{@date}/#{resourceId}_#{@date}.tji"
80
80
  if File.exist?(templateFile)
81
- if File.exists?(sheetFile)
81
+ if File.exist?(sheetFile)
82
82
  # If there are no recipients specified, we don't need to compile
83
83
  # the summary.
84
84
  unless @digestRecipients.empty? && @sheetRecipients.empty?
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = TimeSheets.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = Tj3AppBase.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = Tj3Config.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -14,12 +14,12 @@
14
14
  require 'taskjuggler/UTF8String'
15
15
  require 'taskjuggler/AppConfig'
16
16
 
17
- AppConfig.version = '3.5.0'
17
+ AppConfig.version = '3.6.0'
18
18
  AppConfig.packageName = 'taskjuggler'
19
19
  AppConfig.softwareName = 'TaskJuggler'
20
20
  AppConfig.packageInfo = 'A Project Management Software'
21
- AppConfig.copyright = [ (2006..2013).to_a ]
22
- AppConfig.authors = [ 'Chris Schlaeger <chris@linux.com>' ]
21
+ AppConfig.copyright = [ (2006..2016).to_a ]
22
+ AppConfig.authors = [ 'Chris Schlaeger <cs@taskjuggler.org>' ]
23
23
  AppConfig.contact = 'http://www.taskjuggler.org'
24
24
  AppConfig.license = <<'EOT'
25
25
  This program is free software; you can redistribute it and/or modify it under
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = Tj3SheetAppBase.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = TjException.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = TjTime.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = TjpExample.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = TjpSyntaxRules.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -1030,6 +1030,10 @@ EOT
1030
1030
  descr('days')
1031
1031
  end
1032
1032
 
1033
+ def rule_dynamicAttributes
1034
+ pattern(%w( !reportAttributes . ))
1035
+ end
1036
+
1033
1037
  def rule_export
1034
1038
  pattern(%w( !exportHeader !exportBody ), lambda {
1035
1039
  @property = @property.parent
@@ -1191,7 +1195,9 @@ TaskJuggler manages assignments with a larger accuracy than the Microsft
1191
1195
  Project XML format can represent. This will inevitably lead to some rounding
1192
1196
  errors and different interpretation of the data. The numbers you will see in
1193
1197
  Project are not necessarily an exact match of the numbers you see in
1194
- TaskJuggler.
1198
+ TaskJuggler. The XML file format requires the sequence of the tasks in the
1199
+ file to follow the work breakdown structure. Hence all user provided sorting
1200
+ directions will be ignored for this format.
1195
1201
  EOT
1196
1202
  )
1197
1203
  end
@@ -2303,7 +2309,8 @@ EOT
2303
2309
  end
2304
2310
 
2305
2311
  def rule_leaveAllowance
2306
- pattern(%w( _annual !valDate !optionalMinus !workingDuration ), lambda {
2312
+ pattern(%w( _annual !valDate !optionalMinus
2313
+ !nonZeroWorkingDuration ), lambda {
2307
2314
  LeaveAllowance.new(:annual, @val[1], (@val[2] ? -1 : 1) * @val[3])
2308
2315
  })
2309
2316
  end
@@ -2372,7 +2379,10 @@ EOT
2372
2379
  descr('Unpaid leave')
2373
2380
 
2374
2381
  singlePattern('_holiday')
2375
- descr('Public or bank holiday (highest priority)')
2382
+ descr('Public or bank holiday')
2383
+
2384
+ singlePattern('_unemployed')
2385
+ descr('Not employeed (highest priority)')
2376
2386
  end
2377
2387
 
2378
2388
  def rule_limitAttributes
@@ -2425,7 +2435,7 @@ EOT
2425
2435
  end
2426
2436
 
2427
2437
  def rule_limitValue
2428
- pattern([ '!workingDuration' ], lambda {
2438
+ pattern([ '!nonZeroWorkingDuration' ], lambda {
2429
2439
  @limitInterval = ScoreboardInterval.new(@project['start'],
2430
2440
  @project['scheduleGranularity'],
2431
2441
  @project['start'], @project['end'])
@@ -3814,6 +3824,15 @@ height. This does not work well with rich text columns in some browsers. Some
3814
3824
  show a scrollbar for the compressed table cells, others don't. It is
3815
3825
  recommended, that you don't use rich text columns in conjuction with the chart
3816
3826
  column.
3827
+ EOT
3828
+ )
3829
+
3830
+ singlePattern('_children')
3831
+ descr(<<'EOT'
3832
+ A list of all direct sub elements.
3833
+
3834
+ The list can be customized by the [[listitem.column|listitem]] and
3835
+ [[listtype.column|listtype]] attributes.
3817
3836
  EOT
3818
3837
  )
3819
3838
 
@@ -3877,7 +3896,8 @@ EOT
3877
3896
  descr(<<'EOT'
3878
3897
  The resources that have this resource assigned as manager.
3879
3898
 
3880
- The list can be customized by the [[listitem.column|listitem]] attribute.
3899
+ The list can be customized by the [[listitem.column|listitem]] and
3900
+ [[listtype.column|listtype]] attribute.
3881
3901
  EOT
3882
3902
  )
3883
3903
 
@@ -3919,9 +3939,10 @@ symbols are used for <nowiki><dep></nowiki>.
3919
3939
  * '''<nowiki>]->]</nowiki>''': End-to-End dependency
3920
3940
  * '''<nowiki>[->]</nowiki>''': Start-to-End dependency
3921
3941
 
3922
- The list can be customized by the [[listitem.column|listitem]] attribute.
3923
- The dependency symbol can be generated via the ''''dependency'''' attribute
3924
- inthe query, the target date via the ''''date'''' attribute.
3942
+ The list can be customized by the [[listitem.column|listitem]] and
3943
+ [[listtype.column]] attributes. The dependency symbol can be generated via
3944
+ the ''''dependency'''' attribute inthe query, the target date via the
3945
+ ''''date'''' attribute.
3925
3946
  EOT
3926
3947
  )
3927
3948
 
@@ -3960,7 +3981,8 @@ EOT
3960
3981
  descr(<<'EOT'
3961
3982
  For resources this is the headcount number of the resource or resource group.
3962
3983
  For a single resource this is the [[efficiency]] rounded to the next integer.
3963
- For a group it is the sum of the sub resources headcount.
3984
+ Resources that are marked as unemployed at the report start time are not
3985
+ counted. For a group it is the sum of the sub resources headcount.
3964
3986
 
3965
3987
  For tasks it's the number of different resources allocated to the task during
3966
3988
  the report interval. Resources are weighted with their rounded efficiencies.
@@ -3989,7 +4011,8 @@ A list of milestones that are a prerequiste for the current task. For
3989
4011
  container tasks it will also include the inputs of the child tasks. Inputs may
3990
4012
  not have any predecessors.
3991
4013
 
3992
- The list can be customized by the [[listitem.column|listitem]] attribute.
4014
+ The list can be customized by the [[listitem.column|listitem]] and
4015
+ [[listtype.column|listtype]] attribute.
3993
4016
  EOT
3994
4017
  )
3995
4018
 
@@ -4025,7 +4048,8 @@ EOT
4025
4048
  descr(<<'EOT'
4026
4049
  A list of managers that the resource reports to.
4027
4050
 
4028
- The list can be customized by the [[listitem.column|listitem]] attribute.
4051
+ The list can be customized by the [[listitem.column|listitem]] and
4052
+ [[listtype.column|listtype]] attributes.
4029
4053
  EOT
4030
4054
  )
4031
4055
 
@@ -4076,9 +4100,10 @@ are used
4076
4100
  * '''<nowiki>]->]</nowiki>''': End-to-End dependency
4077
4101
  * '''<nowiki>[->]</nowiki>''': Start-to-End dependency
4078
4102
 
4079
- The list can be customized by the [[listitem.column|listitem]] attribute.
4080
- The dependency symbol can be generated via the ''''dependency'''' attribute
4081
- inthe query, the target date via the ''''date'''' attribute.
4103
+ The list can be customized by the [[listitem.column|listitem]] and
4104
+ [[listtype.column|listtype]] attributes. The dependency symbol can be
4105
+ generated via the ''''dependency'''' attribute inthe query, the target date
4106
+ via the ''''date'''' attribute.
4082
4107
  EOT
4083
4108
  )
4084
4109
 
@@ -4095,7 +4120,8 @@ EOT
4095
4120
  descr(<<'EOT'
4096
4121
  All resources that have this resource assigned as a direct or indirect manager.
4097
4122
 
4098
- The list can be customized by the [[listitem.column|listitem]] attribute.
4123
+ The list can be customized by the [[listitem.column|listitem]] and
4124
+ [[listtype.column|listtype]] attributes.
4099
4125
  EOT
4100
4126
  )
4101
4127
 
@@ -4103,7 +4129,8 @@ EOT
4103
4129
  descr(<<'EOT'
4104
4130
  A list of resources that are assigned to the task in the report time frame.
4105
4131
 
4106
- The list can be customized by the [[listitem.column|listitem]] attribute.
4132
+ The list can be customized by the [[listitem.column|listitem]] and
4133
+ [[listtype.column|listtype]] attributes.
4107
4134
  EOT
4108
4135
  )
4109
4136
 
@@ -4111,7 +4138,8 @@ EOT
4111
4138
  descr(<<'EOT'
4112
4139
  The responsible people for this task.
4113
4140
 
4114
- The list can be customized by the [[listitem.column|listitem]] attribute.
4141
+ The list can be customized by the [[listitem.column|listitem]] and
4142
+ [[listtype.column|listtype]] attributes.
4115
4143
  EOT
4116
4144
  )
4117
4145
 
@@ -4164,7 +4192,8 @@ A list of milestones that depend on the current task. For container tasks it
4164
4192
  will also include the targets of the child tasks. Targets may not have any
4165
4193
  follower tasks.
4166
4194
 
4167
- The list can be customized by the [[listitem.column|listitem]] attribute.
4195
+ The list can be customized by the [[listitem.column|listitem]] and
4196
+ [[listtype.column|listtype]] attributes.
4168
4197
  EOT
4169
4198
  )
4170
4199
 
@@ -4758,7 +4787,7 @@ EOT
4758
4787
  end
4759
4788
 
4760
4789
  def rule_resourceList
4761
- listRule('moreResources', '!resourceId')
4790
+ listRule('moreResources', '!undefResourceId')
4762
4791
  end
4763
4792
 
4764
4793
  def rule_resourceReport
@@ -5174,6 +5203,11 @@ EOT
5174
5203
  singlePattern('_asap')
5175
5204
  end
5176
5205
 
5206
+ def rule_schedulingMode
5207
+ singlePattern('_planning')
5208
+ singlePattern('_projection')
5209
+ end
5210
+
5177
5211
  def rule_shift
5178
5212
  pattern(%w( !shiftHeader !shiftBody ), lambda {
5179
5213
  @property = @property.parent
@@ -5332,6 +5366,12 @@ EOT
5332
5366
  case args.length
5333
5367
  when 2
5334
5368
  # <attribute>.<up|down>
5369
+ # We default to the top-level scenario.
5370
+ if args[1] != 'up' && args[1]!= 'down'
5371
+ error('sort_direction', "Sorting direction must be 'up' or 'down'",
5372
+ @sourceFileInfo[0])
5373
+ end
5374
+
5335
5375
  scenario = -1
5336
5376
  direction = args[1] == 'up'
5337
5377
  attribute = args[0]
@@ -5359,6 +5399,30 @@ EOT
5359
5399
  '(without appended .up or .down) instead.',
5360
5400
  @sourceFileInfo[0])
5361
5401
  end
5402
+ case @sortProperty
5403
+ when :account
5404
+ ps = @project.accounts
5405
+ when :resource
5406
+ ps = @project.resources
5407
+ when :task
5408
+ ps = @project.tasks
5409
+ end
5410
+ unless ps.knownAttribute?(attribute) ||
5411
+ TableReport::calculated?(attribute)
5412
+ error('sorting_unknown_attr',
5413
+ "Sorting criterium '#{attribute} is not a known attribute.")
5414
+ end
5415
+ if scenario > 0 && !(ps.scenarioSpecific?(attribute) ||
5416
+ TableReport.scenarioSpecific?(attribute))
5417
+ error('sorting_attr_scen_spec',
5418
+ "Sorting criterium '#{attribute}' is not scenario specific " +
5419
+ "but a scenario has been specified.")
5420
+ elsif scenario == -1 && (ps.scenarioSpecific?(attribute) ||
5421
+ TableReport.scenarioSpecific?(attribute))
5422
+ # If no scenario was specified but the attribute is scenario specific,
5423
+ # we default to the top-level scenario.
5424
+ scenario = 0
5425
+ end
5362
5426
  [ attribute, direction, scenario ]
5363
5427
  })
5364
5428
  arg(0, 'criteria', <<'EOT'
@@ -5366,7 +5430,8 @@ The sorting criteria must consist of a property attribute ID. See [[columnid]]
5366
5430
  for a complete list of available attributes. The ID must be suffixed by '.up'
5367
5431
  or '.down' to determine the sorting direction. Optionally the ID may be
5368
5432
  prefixed with a scenario ID and a dot to determine the scenario that should be
5369
- used for sorting. So, possible values are 'plan.start.up' or 'priority.down'.
5433
+ used for sorting. In case no scenario was specified, the top-level scenario is
5434
+ used. Example values are 'plan.start.up' or 'priority.down'.
5370
5435
  EOT
5371
5436
  )
5372
5437
  end
@@ -5396,8 +5461,14 @@ EOT
5396
5461
  )
5397
5462
  end
5398
5463
 
5464
+ def rule_sortAccountsKeyword
5465
+ pattern(%w( _sortaccounts ), lambda {
5466
+ @sortProperty = :account
5467
+ })
5468
+ end
5469
+
5399
5470
  def rule_sortAccounts
5400
- pattern(%w( _sortaccounts !sortCriteria ), lambda {
5471
+ pattern(%w( !sortAccountsKeyword !sortCriteria ), lambda {
5401
5472
  @property.set('sortAccounts', @val[1])
5402
5473
  })
5403
5474
  doc('sortaccounts', <<'EOT'
@@ -5409,8 +5480,14 @@ EOT
5409
5480
  )
5410
5481
  end
5411
5482
 
5483
+ def rule_sortResourcesKeyword
5484
+ pattern(%w( _sortresources ), lambda {
5485
+ @sortProperty = :resource
5486
+ })
5487
+ end
5488
+
5412
5489
  def rule_sortResources
5413
- pattern(%w( _sortresources !sortCriteria ), lambda {
5490
+ pattern(%w( !sortResourcesKeyword !sortCriteria ), lambda {
5414
5491
  @property.set('sortResources', @val[1])
5415
5492
  })
5416
5493
  doc('sortresources', <<'EOT'
@@ -5422,8 +5499,14 @@ EOT
5422
5499
  )
5423
5500
  end
5424
5501
 
5502
+ def rule_sortTasksKeyword
5503
+ pattern(%w( _sorttasks ), lambda {
5504
+ @sortProperty = :task
5505
+ })
5506
+ end
5507
+
5425
5508
  def rule_sortTasks
5426
- pattern(%w( _sorttasks !sortCriteria ), lambda {
5509
+ pattern(%w( !sortTasksKeyword !sortCriteria ), lambda {
5427
5510
  @property.set('sortTasks', @val[1])
5428
5511
  })
5429
5512
  doc('sorttasks', <<'EOT'
@@ -5904,21 +5987,22 @@ EOT
5904
5987
  @taskDependency.gapDuration = @val[1]
5905
5988
  })
5906
5989
  doc('gapduration', <<'EOT'
5907
- Specifies the minimum required gap between the end of a preceding task and the
5908
- start of this task, or the start of a following task and the end of this task.
5909
- This is calendar time, not working time. 7d means one week.
5990
+ Specifies the minimum required gap between the start or end of a preceding
5991
+ task and the start of this task, or the start or end of a following task and
5992
+ the end of this task. This is calendar time, not working time. 7d means one
5993
+ week.
5910
5994
  EOT
5911
5995
  )
5912
5996
 
5913
- pattern(%w( _gaplength !workingDuration ), lambda {
5997
+ pattern(%w( _gaplength !nonZeroWorkingDuration ), lambda {
5914
5998
  @taskDependency.gapLength = @val[1]
5915
5999
  })
5916
6000
  doc('gaplength', <<'EOT'
5917
- Specifies the minimum required gap between the end of a preceding task and the
5918
- start of this task, or the start of a following task and the end of this task.
5919
- This is working time, not calendar time. 7d means 7 working days, not one
5920
- week. Whether a day is considered a working day or not depends on the defined
5921
- working hours and global leaves.
6001
+ Specifies the minimum required gap between the start or end of a preceding
6002
+ task and the start of this task, or the start or end of a following task and
6003
+ the end of this task. This is working time, not calendar time. 7d means 7
6004
+ working days, not one week. Whether a day is considered a working day or not
6005
+ depends on the defined working hours and global leaves.
5922
6006
  EOT
5923
6007
  )
5924
6008
 
@@ -6287,6 +6371,42 @@ EOT
6287
6371
  example('Durations')
6288
6372
  also(%w( duration length ))
6289
6373
 
6374
+ pattern(%w( _effortdone !workingDuration ), lambda {
6375
+ @property['effortdone', @scenarioIdx] = @val[1]
6376
+ })
6377
+ level(:beta)
6378
+ doc('effortdone', <<'EOT'
6379
+ Specifies how much effort of the task has already been completed. This can
6380
+ only be used for [[effort]] based tasks and only if the task is scheduled in
6381
+ [[schedulingmode|projection mode]]. No [[booking.task|bookings]] must be
6382
+ specified for the scenario. TaskJuggler is unable to create exact bookings
6383
+ for the time period before the current date. All effort values prior to the
6384
+ current date will be reported as zero.
6385
+
6386
+ This attribute forces the task to be scheduled in [[scheduling|ASAP mode]].
6387
+ The task must have a predetermined [[start]] date.
6388
+ EOT
6389
+ )
6390
+ also(%w( effort effortleft schedulingmode trackingscenario ))
6391
+
6392
+ pattern(%w( _effortleft !workingDuration ), lambda {
6393
+ @property['effortleft', @scenarioIdx] = @val[1]
6394
+ })
6395
+ level(:beta)
6396
+ doc('effortleft', <<'EOT'
6397
+ Specifies how much effort of the task is still not completed. This can
6398
+ only be used for [[effort]] based tasks and only if the task is scheduled in
6399
+ [[schedulingmode|projection mode]]. No [[booking.task|bookings]] must be
6400
+ specified for the scenario. TaskJuggler is unable to create exact bookings
6401
+ for the time period before the current date. All effort values prior to the
6402
+ current date will be reported as zero.
6403
+
6404
+ This attribute forces the task to be scheduled in [[scheduling|ASAP mode]].
6405
+ The task must have a predetermined [[start]] date.
6406
+ EOT
6407
+ )
6408
+ also(%w( effort effortdone schedulingmode trackingscenario ))
6409
+
6290
6410
  pattern(%w( _end !valDate ), lambda {
6291
6411
  @property['end', @scenarioIdx] = @val[1]
6292
6412
  begin
@@ -6328,7 +6448,7 @@ EOT
6328
6448
 
6329
6449
  pattern(%w( !fail ))
6330
6450
 
6331
- pattern(%w( _length !workingDuration ), lambda {
6451
+ pattern(%w( _length !nonZeroWorkingDuration ), lambda {
6332
6452
  setDurationAttribute('length', @val[1])
6333
6453
  })
6334
6454
  doc('length', <<'EOT'
@@ -6514,24 +6634,16 @@ EOT
6514
6634
  )
6515
6635
 
6516
6636
  pattern(%w( _scheduled ), lambda {
6517
- if (@property['milestone', @scenarioIdx] &&
6518
- @property['start', @scenarioIdx].nil? &&
6519
- @property['end', @scenarioIdx].nil?) ||
6520
- (!@property['milestone', @scenarioIdx] &&
6521
- (@property['start', @scenarioIdx].nil? ||
6522
- @property['end', @scenarioIdx].nil?))
6523
- error('not_scheduled',
6524
- "Task #{@property.fullId} is marked as scheduled but does not " +
6525
- 'have a fixed start and end date.',
6526
- @sourceFileInfo[0], @property)
6527
- end
6528
6637
  @property['scheduled', @scenarioIdx] = true
6529
6638
  })
6530
6639
  doc('scheduled', <<'EOT'
6531
- This is mostly for internal use. It specifies that the task should be ignored
6532
- for scheduling in the scenario. This option only makes sense if you provide
6533
- all resource [[booking.resource|bookings]] manually. Without booking
6534
- statements, the task will be reported with 0 effort and no resources assigned.
6640
+ It specifies that the task can be ignored for scheduling in the scenario. This
6641
+ option only makes sense if you provide all resource
6642
+ [[booking.resource|bookings]] manually. Without booking statements, the task
6643
+ will be reported with 0 effort and no resources assigned. If the task is not a
6644
+ milestone, has no effort, length or duration criteria, the start and end date
6645
+ will be derived from the first and last booking in case those dates are not
6646
+ supplied.
6535
6647
  EOT
6536
6648
  )
6537
6649
 
@@ -6581,6 +6693,22 @@ from end to start.
6581
6693
  As a general rule, try to avoid ALAP tasks whenever possible. Have a close
6582
6694
  eye on tasks that have been switched implicitly to ALAP mode because the
6583
6695
  end attribute comes after the start attribute.
6696
+ EOT
6697
+ )
6698
+
6699
+ pattern(%w( _schedulingmode !schedulingMode ), lambda {
6700
+ @property['projectionmode', @scenarioIdx] = (@val[1] == 'projection')
6701
+ })
6702
+ level(:beta)
6703
+ doc('schedulingmode', <<'EOT'
6704
+ The scheduling mode controls how the scheduler assigns resources to this task.
6705
+ In planning mode, resources are allocated before and after the current date.
6706
+ In projection mode, resources are only allocated after the current date. In
6707
+ this mode, any resource activity prior to the current date must be provided
6708
+ with [[booking.task|bookings]]. Alternatively, the [[effortdone]] or
6709
+ [[effortleft]] attribute can be used.
6710
+
6711
+ This scheduling mode is automatically set to projection mode when the [[trackingscenario]] is set. However, the setting can be overwritten by using this attribute.
6584
6712
  EOT
6585
6713
  )
6586
6714
 
@@ -6614,7 +6742,7 @@ EOT
6614
6742
  @shiftAssignments = nil
6615
6743
  })
6616
6744
  doc('shifts.task', <<'EOT'
6617
- Limits the working time for this task during the during the specified interval
6745
+ Limits the working time for this task during the specified interval
6618
6746
  to the working hours of the given shift. Multiple shifts can be defined, but
6619
6747
  shift intervals may not overlap. This is an additional working time
6620
6748
  restriction ontop of the working hours of the allocated resources. It does not
@@ -7042,6 +7170,10 @@ shows the tracked values over time will be generated. The CSV file may contain
7042
7170
  all kinds of values that are being tracked. Report formats that don't support
7043
7171
  a mix of different values will just show the values of the second column.
7044
7172
 
7173
+ The values in the CSV files are fixed units and cannot be formated. Effort
7174
+ values are always in resource-days. This allows other software to interpret
7175
+ the file without any need for additional context information.
7176
+
7045
7177
  The HTML version generates SVG graphs that are embedded in the HTML page.
7046
7178
  These graphs are only visble if the web browser supports HTML5. This is true
7047
7179
  for the latest generation of browsers, but older browsers may not support this
@@ -7110,6 +7242,7 @@ EOT
7110
7242
  })
7111
7243
  arg(1, 'task', 'ID of the new task')
7112
7244
  end
7245
+
7113
7246
  def rule_tsReportHeader
7114
7247
  pattern(%w( _timesheetreport !optionalID $STRING ), lambda {
7115
7248
  newReport(@val[1], @val[2], :timeSheet, @sourceFileInfo[0]) do
@@ -7121,7 +7254,8 @@ EOT
7121
7254
  end
7122
7255
  @property.set('scenarios', [ scenarioIdx ])
7123
7256
  # Show all tasks, sorted by seqno-up.
7124
- @property.set('hideTask', LogicalExpression.new(LogicalOperation.new(0)))
7257
+ @property.set('hideTask',
7258
+ LogicalExpression.new(LogicalOperation.new(0)))
7125
7259
  @property.set('sortTasks', [ [ 'seqno', true, -1 ] ])
7126
7260
  # Show all resources, sorted by seqno-up.
7127
7261
  @property.set('hideResource',
@@ -7320,6 +7454,13 @@ EOT
7320
7454
  arg(1, 'task', 'ID of an already existing task')
7321
7455
  end
7322
7456
 
7457
+ def rule_undefResourceId
7458
+ pattern(%w( $ID ), lambda {
7459
+ (@resourceprefix.empty? ? '' : @resourceprefix + '.') + @val[0]
7460
+ })
7461
+ arg(0, 'resource', 'The ID of a defined resource')
7462
+ end
7463
+
7323
7464
  def rule_vacationName
7324
7465
  optional
7325
7466
  pattern(%w( $STRING )) # We just throw the name away
@@ -7476,6 +7617,19 @@ EOT
7476
7617
  'Weekday (sun - sat). It is included in the interval.')
7477
7618
  end
7478
7619
 
7620
+ def rule_nonZeroWorkingDuration
7621
+ pattern(%w( !workingDuration ), lambda {
7622
+ slots = @val[0]
7623
+ if slots <= 0
7624
+ error('working_duration_too_small',
7625
+ "Duration values must be at least " +
7626
+ "#{@project['scheduleGranularity'] / 60} minutes " +
7627
+ "(your timingresolution) long.")
7628
+ end
7629
+ slots
7630
+ })
7631
+ end
7632
+
7479
7633
  def rule_workingDuration
7480
7634
  pattern(%w( !number !durationUnit ), lambda {
7481
7635
  convFactors = [ 60, # minutes