taskjuggler 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (787) hide show
  1. data/CHANGELOG +115 -0
  2. data/README.rdoc +105 -0
  3. data/examples/tutorial.tjp +21 -16
  4. data/gem_spec.rb +1 -1
  5. data/lib/{Account.rb → taskjuggler/Account.rb} +2 -3
  6. data/lib/{AccountScenario.rb → taskjuggler/AccountScenario.rb} +1 -1
  7. data/lib/taskjuggler/AlgorithmDiff.rb +311 -0
  8. data/lib/{Allocation.rb → taskjuggler/Allocation.rb} +3 -3
  9. data/lib/{AppConfig.rb → taskjuggler/AppConfig.rb} +0 -1
  10. data/lib/{AttributeBase.rb → taskjuggler/AttributeBase.rb} +1 -1
  11. data/lib/{AttributeDefinition.rb → taskjuggler/AttributeDefinition.rb} +0 -0
  12. data/lib/{Attributes.rb → taskjuggler/Attributes.rb} +19 -9
  13. data/lib/{BatchProcessor.rb → taskjuggler/BatchProcessor.rb} +0 -0
  14. data/lib/{Booking.rb → taskjuggler/Booking.rb} +0 -0
  15. data/lib/{Charge.rb → taskjuggler/Charge.rb} +1 -1
  16. data/lib/{ChargeSet.rb → taskjuggler/ChargeSet.rb} +1 -1
  17. data/lib/{DataCache.rb → taskjuggler/DataCache.rb} +0 -0
  18. data/lib/{FileList.rb → taskjuggler/FileList.rb} +0 -0
  19. data/lib/{HTMLDocument.rb → taskjuggler/HTMLDocument.rb} +1 -1
  20. data/lib/{Interval.rb → taskjuggler/Interval.rb} +1 -1
  21. data/lib/{IntervalList.rb → taskjuggler/IntervalList.rb} +1 -1
  22. data/lib/{Journal.rb → taskjuggler/Journal.rb} +2 -2
  23. data/lib/{KeywordArray.rb → taskjuggler/KeywordArray.rb} +0 -0
  24. data/lib/{KeywordDocumentation.rb → taskjuggler/KeywordDocumentation.rb} +5 -5
  25. data/lib/{Limits.rb → taskjuggler/Limits.rb} +1 -1
  26. data/lib/{Log.rb → taskjuggler/Log.rb} +0 -0
  27. data/lib/{LogFile.rb → taskjuggler/LogFile.rb} +0 -0
  28. data/lib/{LogicalExpression.rb → taskjuggler/LogicalExpression.rb} +3 -3
  29. data/lib/{LogicalFunction.rb → taskjuggler/LogicalFunction.rb} +1 -1
  30. data/lib/{LogicalOperation.rb → taskjuggler/LogicalOperation.rb} +1 -1
  31. data/lib/{MessageHandler.rb → taskjuggler/MessageHandler.rb} +3 -1
  32. data/lib/{Project.rb → taskjuggler/Project.rb} +51 -48
  33. data/lib/{ProjectFileParser.rb → taskjuggler/ProjectFileParser.rb} +25 -9
  34. data/lib/{ProjectFileScanner.rb → taskjuggler/ProjectFileScanner.rb} +5 -5
  35. data/lib/{PropertyList.rb → taskjuggler/PropertyList.rb} +0 -0
  36. data/lib/{PropertySet.rb → taskjuggler/PropertySet.rb} +3 -4
  37. data/lib/{PropertyTreeNode.rb → taskjuggler/PropertyTreeNode.rb} +157 -11
  38. data/lib/{Query.rb → taskjuggler/Query.rb} +17 -7
  39. data/lib/{RealFormat.rb → taskjuggler/RealFormat.rb} +0 -0
  40. data/lib/{Resource.rb → taskjuggler/Resource.rb} +8 -6
  41. data/lib/{ResourceScenario.rb → taskjuggler/ResourceScenario.rb} +26 -65
  42. data/lib/{RichText.rb → taskjuggler/RichText.rb} +3 -3
  43. data/lib/{RichTextDocument.rb → taskjuggler/RichText/Document.rb} +3 -3
  44. data/lib/{RichTextElement.rb → taskjuggler/RichText/Element.rb} +10 -4
  45. data/lib/{RichTextFunctionExample.rb → taskjuggler/RichText/FunctionExample.rb} +3 -3
  46. data/lib/{RichTextFunctionHandler.rb → taskjuggler/RichText/FunctionHandler.rb} +0 -0
  47. data/lib/{RichTextParser.rb → taskjuggler/RichText/Parser.rb} +6 -4
  48. data/lib/{RTFHandlers.rb → taskjuggler/RichText/RTFHandlers.rb} +4 -4
  49. data/lib/{RTFNavigator.rb → taskjuggler/RichText/RTFNavigator.rb} +3 -3
  50. data/lib/{RTFQuery.rb → taskjuggler/RichText/RTFQuery.rb} +62 -39
  51. data/lib/{RTFReport.rb → taskjuggler/RichText/RTFReport.rb} +2 -2
  52. data/lib/{RTFReportLink.rb → taskjuggler/RichText/RTFReportLink.rb} +4 -4
  53. data/lib/{RTFWithQuerySupport.rb → taskjuggler/RichText/RTFWithQuerySupport.rb} +1 -1
  54. data/lib/{RichTextScanner.rb → taskjuggler/RichText/Scanner.rb} +18 -5
  55. data/lib/{RichTextSnip.rb → taskjuggler/RichText/Snip.rb} +2 -2
  56. data/lib/{RichTextSyntaxRules.rb → taskjuggler/RichText/SyntaxRules.rb} +14 -0
  57. data/lib/{TOCEntry.rb → taskjuggler/RichText/TOCEntry.rb} +2 -2
  58. data/lib/{TableOfContents.rb → taskjuggler/RichText/TableOfContents.rb} +2 -2
  59. data/lib/{RuntimeConfig.rb → taskjuggler/RuntimeConfig.rb} +18 -18
  60. data/lib/{Scenario.rb → taskjuggler/Scenario.rb} +1 -1
  61. data/lib/{ScenarioData.rb → taskjuggler/ScenarioData.rb} +2 -3
  62. data/lib/{Scoreboard.rb → taskjuggler/Scoreboard.rb} +4 -4
  63. data/lib/{SheetHandlerBase.rb → taskjuggler/SheetHandlerBase.rb} +3 -3
  64. data/lib/{SheetReceiver.rb → taskjuggler/SheetReceiver.rb} +2 -2
  65. data/lib/{SheetSender.rb → taskjuggler/SheetSender.rb} +5 -5
  66. data/lib/{Shift.rb → taskjuggler/Shift.rb} +2 -3
  67. data/lib/{ShiftAssignments.rb → taskjuggler/ShiftAssignments.rb} +1 -1
  68. data/lib/{ShiftScenario.rb → taskjuggler/ShiftScenario.rb} +1 -1
  69. data/lib/{SimpleQueryExpander.rb → taskjuggler/SimpleQueryExpander.rb} +0 -0
  70. data/lib/{StatusSheetReceiver.rb → taskjuggler/StatusSheetReceiver.rb} +1 -1
  71. data/lib/{StatusSheetSender.rb → taskjuggler/StatusSheetSender.rb} +1 -1
  72. data/lib/{SyntaxReference.rb → taskjuggler/SyntaxReference.rb} +4 -4
  73. data/lib/{TableColumnDefinition.rb → taskjuggler/TableColumnDefinition.rb} +0 -0
  74. data/lib/{Task.rb → taskjuggler/Task.rb} +2 -2
  75. data/lib/{TaskDependency.rb → taskjuggler/TaskDependency.rb} +8 -0
  76. data/lib/{TaskJuggler.rb → taskjuggler/TaskJuggler.rb} +6 -4
  77. data/lib/{TaskScenario.rb → taskjuggler/TaskScenario.rb} +211 -150
  78. data/lib/taskjuggler/TernarySearchTree.rb +203 -0
  79. data/lib/{TextFormatter.rb → taskjuggler/TextFormatter.rb} +1 -1
  80. data/lib/{TextParser.rb → taskjuggler/TextParser.rb} +6 -6
  81. data/lib/{MacroTable.rb → taskjuggler/TextParser/MacroTable.rb} +2 -12
  82. data/lib/{TextParser → taskjuggler/TextParser}/Pattern.rb +5 -2
  83. data/lib/{TextParser → taskjuggler/TextParser}/Rule.rb +1 -1
  84. data/lib/{TextScanner.rb → taskjuggler/TextParser/Scanner.rb} +34 -32
  85. data/lib/{SourceFileInfo.rb → taskjuggler/TextParser/SourceFileInfo.rb} +1 -1
  86. data/lib/{TextParser → taskjuggler/TextParser}/StackElement.rb +0 -2
  87. data/lib/{TextParser → taskjuggler/TextParser}/State.rb +0 -0
  88. data/lib/{TextParser → taskjuggler/TextParser}/TokenDoc.rb +0 -0
  89. data/lib/{TimeSheetReceiver.rb → taskjuggler/TimeSheetReceiver.rb} +1 -1
  90. data/lib/{TimeSheetSender.rb → taskjuggler/TimeSheetSender.rb} +1 -1
  91. data/lib/{TimeSheetSummary.rb → taskjuggler/TimeSheetSummary.rb} +1 -1
  92. data/lib/{TimeSheets.rb → taskjuggler/TimeSheets.rb} +23 -16
  93. data/lib/{Tj3AppBase.rb → taskjuggler/Tj3AppBase.rb} +19 -12
  94. data/lib/{Tj3Config.rb → taskjuggler/Tj3Config.rb} +3 -3
  95. data/lib/taskjuggler/Tj3Man.rb +78 -0
  96. data/lib/{Tj3SheetAppBase.rb → taskjuggler/Tj3SheetAppBase.rb} +2 -2
  97. data/lib/{TjException.rb → taskjuggler/TjException.rb} +0 -0
  98. data/lib/{TjTime.rb → taskjuggler/TjTime.rb} +279 -234
  99. data/lib/{TjpExample.rb → taskjuggler/TjpExample.rb} +0 -0
  100. data/lib/{TjpSyntaxRules.rb → taskjuggler/TjpSyntaxRules.rb} +253 -95
  101. data/lib/{URLParameter.rb → taskjuggler/URLParameter.rb} +0 -0
  102. data/lib/{UTF8String.rb → taskjuggler/UTF8String.rb} +0 -0
  103. data/lib/{UserManual.rb → taskjuggler/UserManual.rb} +6 -6
  104. data/lib/{VimSyntax.rb → taskjuggler/VimSyntax.rb} +6 -2
  105. data/lib/{WorkingHours.rb → taskjuggler/WorkingHours.rb} +14 -22
  106. data/lib/{XMLDocument.rb → taskjuggler/XMLDocument.rb} +1 -1
  107. data/lib/{XMLElement.rb → taskjuggler/XMLElement.rb} +1 -1
  108. data/lib/taskjuggler/apps/Tj3.rb +134 -0
  109. data/lib/taskjuggler/apps/Tj3Client.rb +467 -0
  110. data/lib/taskjuggler/apps/Tj3Daemon.rb +142 -0
  111. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +56 -0
  112. data/lib/taskjuggler/apps/Tj3SsSender.rb +90 -0
  113. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +59 -0
  114. data/lib/taskjuggler/apps/Tj3TsSender.rb +77 -0
  115. data/lib/taskjuggler/apps/Tj3TsSummary.rb +86 -0
  116. data/lib/{daemon → taskjuggler/daemon}/Daemon.rb +4 -3
  117. data/lib/{daemon → taskjuggler/daemon}/ProcessIntercom.rb +2 -2
  118. data/lib/{daemon → taskjuggler/daemon}/ProjectBroker.rb +5 -5
  119. data/lib/{daemon → taskjuggler/daemon}/ProjectServer.rb +16 -16
  120. data/lib/{daemon → taskjuggler/daemon}/ReportServer.rb +6 -6
  121. data/lib/{daemon → taskjuggler/daemon}/ReportServlet.rb +2 -2
  122. data/lib/{daemon → taskjuggler/daemon}/WebServer.rb +4 -4
  123. data/lib/{daemon → taskjuggler/daemon}/WelcomePage.rb +2 -1
  124. data/lib/{deep_copy.rb → taskjuggler/deep_copy.rb} +0 -0
  125. data/lib/{reports → taskjuggler/reports}/CSVFile.rb +2 -2
  126. data/lib/{reports → taskjuggler/reports}/CollisionDetector.rb +1 -1
  127. data/lib/{reports → taskjuggler/reports}/ColumnTable.rb +1 -1
  128. data/lib/{reports → taskjuggler/reports}/GanttChart.rb +4 -4
  129. data/lib/{reports → taskjuggler/reports}/GanttContainer.rb +1 -1
  130. data/lib/{reports → taskjuggler/reports}/GanttHeader.rb +1 -1
  131. data/lib/{reports → taskjuggler/reports}/GanttHeaderScaleItem.rb +0 -0
  132. data/lib/{reports → taskjuggler/reports}/GanttLine.rb +6 -6
  133. data/lib/{reports → taskjuggler/reports}/GanttLoadStack.rb +1 -1
  134. data/lib/{reports → taskjuggler/reports}/GanttMilestone.rb +1 -1
  135. data/lib/{reports → taskjuggler/reports}/GanttRouter.rb +1 -1
  136. data/lib/{reports → taskjuggler/reports}/GanttTaskBar.rb +1 -1
  137. data/lib/{reports → taskjuggler/reports}/HTMLGraphics.rb +0 -0
  138. data/lib/{reports → taskjuggler/reports}/Navigator.rb +1 -1
  139. data/lib/{reports → taskjuggler/reports}/NikuReport.rb +3 -6
  140. data/lib/{reports → taskjuggler/reports}/Report.rb +19 -14
  141. data/lib/{reports → taskjuggler/reports}/ReportBase.rb +0 -0
  142. data/lib/{reports → taskjuggler/reports}/ReportContext.rb +0 -0
  143. data/lib/{reports → taskjuggler/reports}/ReportTable.rb +2 -2
  144. data/lib/{reports → taskjuggler/reports}/ReportTableCell.rb +0 -0
  145. data/lib/{reports → taskjuggler/reports}/ReportTableColumn.rb +0 -0
  146. data/lib/{reports → taskjuggler/reports}/ReportTableLegend.rb +0 -0
  147. data/lib/{reports → taskjuggler/reports}/ReportTableLine.rb +1 -1
  148. data/lib/{reports → taskjuggler/reports}/ResourceListRE.rb +4 -4
  149. data/lib/{reports → taskjuggler/reports}/StatusSheetReport.rb +1 -1
  150. data/lib/{reports → taskjuggler/reports}/TableReport.rb +8 -7
  151. data/lib/{reports → taskjuggler/reports}/TaskListRE.rb +4 -4
  152. data/lib/{reports → taskjuggler/reports}/TextReport.rb +1 -1
  153. data/lib/{reports → taskjuggler/reports}/TimeSheetReport.rb +1 -1
  154. data/lib/{reports → taskjuggler/reports}/TjpExportRE.rb +87 -29
  155. data/lib/tj3.rb +2 -144
  156. data/lib/tj3client.rb +2 -442
  157. data/lib/tj3d.rb +1 -133
  158. data/lib/tj3man.rb +2 -75
  159. data/lib/tj3ss_receiver.rb +2 -42
  160. data/lib/tj3ss_sender.rb +1 -76
  161. data/lib/tj3ts_receiver.rb +1 -45
  162. data/lib/tj3ts_sender.rb +1 -63
  163. data/lib/tj3ts_summary.rb +1 -72
  164. data/manual/How_To_Contribute +19 -49
  165. data/manual/Installation +65 -6
  166. data/manual/Reporting_Bugs +6 -20
  167. data/manual/TaskJuggler_Internals +8 -1
  168. data/manual/Tutorial +16 -0
  169. data/prj_cfg.rb +2 -3
  170. data/spec/IntervalList_spec.rb +2 -1
  171. data/spec/ProjectBroker_spec.rb +1 -1
  172. data/spec/TernarySearchTree_spec.rb +131 -0
  173. data/spec/TimeSheets_spec.rb +129 -0
  174. data/spec/Tj3Daemon_spec.rb +51 -0
  175. data/spec/Tj3_spec.rb +36 -0
  176. data/spec/support/DaemonControl.rb +78 -0
  177. data/spec/support/StdIoWrapper.rb +43 -0
  178. data/spec/tj3client.log +23 -0
  179. data/tasks/changelog.rake +17 -2
  180. data/tasks/csts.rake +2 -2
  181. data/tasks/manual.rake +9 -5
  182. data/tasks/missing.rake +0 -4
  183. data/tasks/rdoc.rake +2 -2
  184. data/tasks/vim.rake +9 -0
  185. data/test/TestSuite/CSV-Reports/alert.tjp +9 -0
  186. data/test/TestSuite/CSV-Reports/celltext.tjp +1 -0
  187. data/test/TestSuite/CSV-Reports/inputs.tjp +19 -0
  188. data/test/TestSuite/CSV-Reports/project-1.tji +9 -0
  189. data/test/TestSuite/CSV-Reports/refs/alert.csv +15 -0
  190. data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -0
  191. data/test/TestSuite/CSV-Reports/refs/inputs.csv +6 -0
  192. data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +4 -4
  193. data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +22 -22
  194. data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -0
  195. data/test/TestSuite/CSV-Reports/refs/sortBy_duration.down.csv +1 -0
  196. data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -0
  197. data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +14 -13
  198. data/test/TestSuite/CSV-Reports/refs/targets.csv +5 -0
  199. data/test/TestSuite/CSV-Reports/refs/taskreport.csv +15 -14
  200. data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +33 -32
  201. data/test/TestSuite/CSV-Reports/resourcereport.tjp +1 -0
  202. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +1 -0
  203. data/test/TestSuite/CSV-Reports/sortByTree.tjp +1 -0
  204. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +1 -0
  205. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -0
  206. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +2 -1
  207. data/test/TestSuite/CSV-Reports/targets.tjp +20 -0
  208. data/test/TestSuite/CSV-Reports/taskreport.tjp +2 -1
  209. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +2 -1
  210. data/test/TestSuite/CSV-Reports/weekly.tjp +5 -2
  211. data/test/TestSuite/Export-Reports/export.tji +6 -0
  212. data/test/TestSuite/Export-Reports/refs/Account.tjp +92 -0
  213. data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +38 -0
  214. data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +124 -0
  215. data/test/TestSuite/Export-Reports/refs/Alternative.tjp +50 -0
  216. data/test/TestSuite/Export-Reports/refs/AutoID.tjp +45 -0
  217. data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +18 -0
  218. data/test/TestSuite/Export-Reports/refs/Booking.tjp +48 -0
  219. data/test/TestSuite/Export-Reports/refs/Caption.tjp +65 -0
  220. data/test/TestSuite/Export-Reports/refs/Celltext.tjp +45 -0
  221. data/test/TestSuite/Export-Reports/refs/Comments.tjp +67 -0
  222. data/test/TestSuite/Export-Reports/refs/Complete.tjp +50 -0
  223. data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +41 -0
  224. data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +18 -0
  225. data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +24 -0
  226. data/test/TestSuite/Export-Reports/refs/DST.tjp +89 -0
  227. data/test/TestSuite/Export-Reports/refs/Depends1.tjp +57 -0
  228. data/test/TestSuite/Export-Reports/refs/Durations.tjp +84 -0
  229. data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +58 -0
  230. data/test/TestSuite/Export-Reports/refs/Flags.tjp +51 -0
  231. data/test/TestSuite/Export-Reports/refs/Gap.tjp +38 -0
  232. data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +67 -0
  233. data/test/TestSuite/Export-Reports/refs/Include.tjp +58 -0
  234. data/test/TestSuite/Export-Reports/refs/Journal.tjp +28 -0
  235. data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +283 -0
  236. data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +617 -0
  237. data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +18 -0
  238. data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +57 -0
  239. data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +91 -0
  240. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +18 -0
  241. data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +18 -0
  242. data/test/TestSuite/Export-Reports/refs/Manager.tjp +121 -0
  243. data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +59 -0
  244. data/test/TestSuite/Export-Reports/refs/Milestone.tjp +27 -0
  245. data/test/TestSuite/Export-Reports/refs/MinMax.tjp +30 -0
  246. data/test/TestSuite/Export-Reports/refs/Niku.tjp +218 -0
  247. data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +18 -0
  248. data/test/TestSuite/Export-Reports/refs/Period.tjp +25 -0
  249. data/test/TestSuite/Export-Reports/refs/Persistent.tjp +49 -0
  250. data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +46 -0
  251. data/test/TestSuite/Export-Reports/refs/Priority.tjp +141 -0
  252. data/test/TestSuite/Export-Reports/refs/Project.tjp +18 -0
  253. data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +36 -0
  254. data/test/TestSuite/Export-Reports/refs/Query.tjp +49 -0
  255. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +79 -0
  256. data/test/TestSuite/Export-Reports/refs/Reports.tjp +130 -0
  257. data/test/TestSuite/Export-Reports/refs/Resource.tjp +59 -0
  258. data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +67 -0
  259. data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +90 -0
  260. data/test/TestSuite/Export-Reports/refs/Responsible.tjp +50 -0
  261. data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +90 -0
  262. data/test/TestSuite/Export-Reports/refs/Scenario.tjp +25 -0
  263. data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +55 -0
  264. data/test/TestSuite/Export-Reports/refs/Select.tjp +89 -0
  265. data/test/TestSuite/Export-Reports/refs/Shift.tjp +39 -0
  266. data/test/TestSuite/Export-Reports/refs/Simple.tjp +67 -0
  267. data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +95 -0
  268. data/test/TestSuite/Export-Reports/refs/String.tjp +33 -0
  269. data/test/TestSuite/Export-Reports/refs/Supplement.tjp +41 -0
  270. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +49 -0
  271. data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +75 -0
  272. data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +51 -0
  273. data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +81 -0
  274. data/test/TestSuite/Export-Reports/refs/Timezone.tjp +18 -0
  275. data/test/TestSuite/Export-Reports/refs/Vacation.tjp +69 -0
  276. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +1061 -0
  277. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +3 -1
  278. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +5 -3
  279. data/test/TestSuite/Scheduler/Correct/Precedes.tjp +19 -19
  280. data/test/TestSuite/Scheduler/Correct/PriorityInversion.tjp +32 -0
  281. data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +19 -0
  282. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +11 -0
  283. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +14 -14
  284. data/test/TestSuite/Scheduler/Correct/checks.tji +5 -0
  285. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +20 -0
  286. data/test/TestSuite/StatusSheets/boss_mail +1 -1
  287. data/test/TestSuite/StatusSheets/dev2_mail +1 -1
  288. data/test/TestSuite/StatusSheets/run +2 -3
  289. data/test/TestSuite/Syntax/Correct/Account.tjp +1 -0
  290. data/test/TestSuite/Syntax/Correct/AdoptedTasks.tjp +9 -0
  291. data/test/TestSuite/Syntax/Correct/Allocate-1.tjp +3 -1
  292. data/test/TestSuite/Syntax/Correct/Alternative.tjp +3 -1
  293. data/test/TestSuite/Syntax/Correct/AutoID.tjp +3 -1
  294. data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -0
  295. data/test/TestSuite/Syntax/Correct/Caption.tjp +3 -1
  296. data/test/TestSuite/Syntax/Correct/Celltext.tjp +3 -1
  297. data/test/TestSuite/Syntax/Correct/Comments.tjp +3 -1
  298. data/test/TestSuite/Syntax/Correct/Complete.tjp +1 -0
  299. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +2 -1
  300. data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +2 -1
  301. data/test/TestSuite/Syntax/Correct/CustomAttributes.tjp +3 -2
  302. data/test/TestSuite/Syntax/Correct/DST.tjp +11 -0
  303. data/test/TestSuite/Syntax/Correct/Depends1.tjp +6 -4
  304. data/test/TestSuite/Syntax/Correct/Durations.tjp +3 -1
  305. data/test/TestSuite/Syntax/Correct/Efficiency.tjp +4 -2
  306. data/test/TestSuite/Syntax/Correct/Export.tjp +6 -4
  307. data/test/TestSuite/Syntax/Correct/Flags.tjp +3 -1
  308. data/test/TestSuite/Syntax/Correct/Freeze.tjp +2 -2
  309. data/test/TestSuite/Syntax/Correct/Gap.tjp +3 -1
  310. data/test/TestSuite/Syntax/Correct/HtmlTaskReport.tjp +4 -2
  311. data/test/TestSuite/Syntax/Correct/Include.tjp +3 -1
  312. data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -1
  313. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +13 -9
  314. data/test/TestSuite/Syntax/Correct/LoadUnits.tjp +1 -0
  315. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +3 -1
  316. data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +3 -1
  317. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +3 -1
  318. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +3 -1
  319. data/test/TestSuite/Syntax/Correct/Macro-3.tjp +1 -0
  320. data/test/TestSuite/Syntax/Correct/Manager.tjp +4 -2
  321. data/test/TestSuite/Syntax/Correct/Mandatory.tjp +3 -1
  322. data/test/TestSuite/Syntax/Correct/Milestone.tjp +3 -1
  323. data/test/TestSuite/Syntax/Correct/MinMax.tjp +3 -1
  324. data/test/TestSuite/Syntax/Correct/Niku.tjp +1 -0
  325. data/test/TestSuite/Syntax/Correct/Numberformat.tjp +3 -2
  326. data/test/TestSuite/Syntax/Correct/Period.tjp +1 -0
  327. data/test/TestSuite/Syntax/Correct/Persistent.tjp +3 -1
  328. data/test/TestSuite/Syntax/Correct/Precedes1.tjp +6 -4
  329. data/test/TestSuite/Syntax/Correct/Priority.tjp +4 -2
  330. data/test/TestSuite/Syntax/Correct/Project.tjp +5 -4
  331. data/test/TestSuite/Syntax/Correct/ProjectIDs.tjp +3 -2
  332. data/test/TestSuite/Syntax/Correct/Query.tjp +1 -0
  333. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +3 -1
  334. data/test/TestSuite/Syntax/Correct/Reports.tjp +7 -5
  335. data/test/TestSuite/Syntax/Correct/Resource.tjp +4 -2
  336. data/test/TestSuite/Syntax/Correct/ResourcePrefix.tjp +4 -2
  337. data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +3 -1
  338. data/test/TestSuite/Syntax/Correct/Responsible.tjp +3 -1
  339. data/test/TestSuite/Syntax/Correct/RollupResource.tjp +3 -1
  340. data/test/TestSuite/Syntax/Correct/Scenario.tjp +2 -1
  341. data/test/TestSuite/Syntax/Correct/Scheduling.tjp +3 -1
  342. data/test/TestSuite/Syntax/Correct/Select.tjp +3 -1
  343. data/test/TestSuite/Syntax/Correct/Shift.tjp +4 -2
  344. data/test/TestSuite/Syntax/Correct/Simple.tjp +3 -1
  345. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +4 -2
  346. data/test/TestSuite/Syntax/Correct/String.tjp +3 -1
  347. data/test/TestSuite/Syntax/Correct/Supplement.tjp +3 -1
  348. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +3 -2
  349. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +3 -1
  350. data/test/TestSuite/Syntax/Correct/TimeFrame.tjp +3 -1
  351. data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -2
  352. data/test/TestSuite/Syntax/Correct/Vacation.tjp +5 -3
  353. data/test/TestSuite/Syntax/Correct/tutorial.tjp +23 -16
  354. data/test/TestSuite/Syntax/Errors/adopt_common_root.tjp +10 -0
  355. data/test/TestSuite/Syntax/Errors/adopt_duplicate_child.tjp +10 -0
  356. data/test/TestSuite/Syntax/Errors/adopt_duplicate_parent.tjp +10 -0
  357. data/test/TestSuite/{Scheduler/Errors/milestone_duration.tjp → Syntax/Errors/multiple_durations.tjp} +1 -1
  358. data/test/TestSuite/Syntax/Errors/operand_unkn_scen.tjp +6 -4
  359. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd1.tjp +5 -3
  360. data/test/TestSuite/TimeSheets/dev2_mail1 +1 -1
  361. data/test/TestSuite/TimeSheets/dev2_mail2 +1 -1
  362. data/test/TestSuite/TimeSheets/run +2 -2
  363. data/test/TestSuite/TimeSheets/uu.txt +29 -0
  364. data/test/test_AlgorithmDiff.rb +139 -0
  365. data/test/test_BatchProcessor.rb +2 -1
  366. data/test/test_CSV-Reports.rb +30 -19
  367. data/test/test_CSVFile.rb +2 -1
  368. data/test/test_CollisionDetector.rb +2 -1
  369. data/test/test_Export-Reports.rb +128 -0
  370. data/test/test_Journal.rb +2 -1
  371. data/test/test_Limits.rb +4 -3
  372. data/test/test_LogicalExpression.rb +2 -1
  373. data/test/test_MacroTable.rb +8 -6
  374. data/test/test_Project.rb +2 -1
  375. data/test/test_ProjectFileScanner.rb +4 -3
  376. data/test/test_PropertySet.rb +2 -1
  377. data/test/test_Query.rb +3 -2
  378. data/test/test_RealFormat.rb +2 -1
  379. data/test/test_ReportGenerator.rb +3 -2
  380. data/test/test_RichText.rb +14 -3
  381. data/test/test_Scheduler.rb +2 -1
  382. data/test/test_ShiftAssignments.rb +3 -1
  383. data/test/test_SimpleQueryExpander.rb +3 -2
  384. data/test/test_Syntax.rb +2 -1
  385. data/test/test_TextFormatter.rb +2 -1
  386. data/test/test_TjTime.rb +15 -14
  387. data/test/test_TjpExample.rb +2 -1
  388. data/test/test_URLParameter.rb +2 -1
  389. data/test/test_UTF8String.rb +2 -1
  390. data/test/test_WorkingHours.rb +3 -2
  391. data/test/test_deep_copy.rb +2 -1
  392. metadata +250 -541
  393. data/README +0 -31
  394. data/benchmarks/allocatedSlots.csv +0 -334
  395. data/benchmarks/profile.clt +0 -42974
  396. data/benchmarks/profile.html +0 -61128
  397. data/doc/AppConfig.html +0 -1471
  398. data/doc/Arguments.html +0 -720
  399. data/doc/CHANGELOG.html +0 -1987
  400. data/doc/COPYING.html +0 -879
  401. data/doc/Object.html +0 -1056
  402. data/doc/README.html +0 -565
  403. data/doc/RuntimeConfig.html +0 -804
  404. data/doc/String.html +0 -913
  405. data/doc/TaskJuggler.html +0 -2512
  406. data/doc/TaskJuggler/Account.html +0 -733
  407. data/doc/TaskJuggler/AccountAttribute.html +0 -749
  408. data/doc/TaskJuggler/AccountScenario.html +0 -692
  409. data/doc/TaskJuggler/Allocation.html +0 -943
  410. data/doc/TaskJuggler/AllocationAttribute.html +0 -779
  411. data/doc/TaskJuggler/AttributeBase.html +0 -1308
  412. data/doc/TaskJuggler/AttributeDefinition.html +0 -795
  413. data/doc/TaskJuggler/AttributeOverwrite.html +0 -586
  414. data/doc/TaskJuggler/BatchProcessor.html +0 -1158
  415. data/doc/TaskJuggler/Booking.html +0 -839
  416. data/doc/TaskJuggler/BookingListAttribute.html +0 -749
  417. data/doc/TaskJuggler/BooleanAttribute.html +0 -749
  418. data/doc/TaskJuggler/CSVFile.html +0 -1108
  419. data/doc/TaskJuggler/CellSettingPattern.html +0 -680
  420. data/doc/TaskJuggler/CellSettingPatternList.html +0 -729
  421. data/doc/TaskJuggler/Charge.html +0 -757
  422. data/doc/TaskJuggler/ChargeListAttribute.html +0 -713
  423. data/doc/TaskJuggler/ChargeSet.html +0 -929
  424. data/doc/TaskJuggler/ChargeSetListAttribute.html +0 -758
  425. data/doc/TaskJuggler/CollisionDetector.html +0 -1069
  426. data/doc/TaskJuggler/ColumnListAttribute.html +0 -713
  427. data/doc/TaskJuggler/ColumnTable.html +0 -743
  428. data/doc/TaskJuggler/Daemon.html +0 -798
  429. data/doc/TaskJuggler/DataCache.html +0 -930
  430. data/doc/TaskJuggler/DataCacheEntry.html +0 -717
  431. data/doc/TaskJuggler/DateAttribute.html +0 -717
  432. data/doc/TaskJuggler/DefinitionListAttribute.html +0 -635
  433. data/doc/TaskJuggler/DependencyListAttribute.html +0 -753
  434. data/doc/TaskJuggler/DurationAttribute.html +0 -750
  435. data/doc/TaskJuggler/FileList.html +0 -731
  436. data/doc/TaskJuggler/FileRecord.html +0 -682
  437. data/doc/TaskJuggler/FixnumAttribute.html +0 -671
  438. data/doc/TaskJuggler/FlagListAttribute.html +0 -749
  439. data/doc/TaskJuggler/FloatAttribute.html +0 -713
  440. data/doc/TaskJuggler/FormatListAttribute.html +0 -677
  441. data/doc/TaskJuggler/GanttChart.html +0 -1467
  442. data/doc/TaskJuggler/GanttContainer.html +0 -925
  443. data/doc/TaskJuggler/GanttHeader.html +0 -928
  444. data/doc/TaskJuggler/GanttHeaderScaleItem.html +0 -742
  445. data/doc/TaskJuggler/GanttLine.html +0 -1305
  446. data/doc/TaskJuggler/GanttLoadStack.html +0 -808
  447. data/doc/TaskJuggler/GanttMilestone.html +0 -906
  448. data/doc/TaskJuggler/GanttRouter.html +0 -1118
  449. data/doc/TaskJuggler/GanttTaskBar.html +0 -927
  450. data/doc/TaskJuggler/HTMLDocument.html +0 -761
  451. data/doc/TaskJuggler/HTMLGraphics.html +0 -817
  452. data/doc/TaskJuggler/Interval.html +0 -1056
  453. data/doc/TaskJuggler/IntervalList.html +0 -777
  454. data/doc/TaskJuggler/IntervalListAttribute.html +0 -753
  455. data/doc/TaskJuggler/JobInfo.html +0 -923
  456. data/doc/TaskJuggler/Journal.html +0 -1158
  457. data/doc/TaskJuggler/JournalEntry.html +0 -821
  458. data/doc/TaskJuggler/JournalEntryList.html +0 -1071
  459. data/doc/TaskJuggler/KeywordArray.html +0 -676
  460. data/doc/TaskJuggler/KeywordDocumentation.html +0 -1838
  461. data/doc/TaskJuggler/Limits.html +0 -1016
  462. data/doc/TaskJuggler/Limits/Limit.html +0 -927
  463. data/doc/TaskJuggler/LimitsAttribute.html +0 -714
  464. data/doc/TaskJuggler/ListAttributeBase.html +0 -683
  465. data/doc/TaskJuggler/Log.html +0 -1143
  466. data/doc/TaskJuggler/LogFile.html +0 -960
  467. data/doc/TaskJuggler/LogicalAttribute.html +0 -740
  468. data/doc/TaskJuggler/LogicalExpression.html +0 -781
  469. data/doc/TaskJuggler/LogicalExpressionAttribute.html +0 -671
  470. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +0 -671
  471. data/doc/TaskJuggler/LogicalFlag.html +0 -723
  472. data/doc/TaskJuggler/LogicalFunction.html +0 -1306
  473. data/doc/TaskJuggler/LogicalOperation.html +0 -1124
  474. data/doc/TaskJuggler/Macro.html +0 -688
  475. data/doc/TaskJuggler/MacroTable.html +0 -852
  476. data/doc/TaskJuggler/ManagerResponsibilities.html +0 -716
  477. data/doc/TaskJuggler/ManagerStatusRecord.html +0 -720
  478. data/doc/TaskJuggler/Message.html +0 -817
  479. data/doc/TaskJuggler/MessageHandler.html +0 -1036
  480. data/doc/TaskJuggler/Navigator.html +0 -922
  481. data/doc/TaskJuggler/NavigatorElement.html +0 -974
  482. data/doc/TaskJuggler/NikuProject.html +0 -704
  483. data/doc/TaskJuggler/NikuReport.html +0 -1449
  484. data/doc/TaskJuggler/NikuResource.html +0 -674
  485. data/doc/TaskJuggler/NodeListAttribute.html +0 -635
  486. data/doc/TaskJuggler/PlaceHolderCell.html +0 -728
  487. data/doc/TaskJuggler/ProcessIntercom.html +0 -997
  488. data/doc/TaskJuggler/ProcessIntercomIface.html +0 -753
  489. data/doc/TaskJuggler/Project.html +0 -3333
  490. data/doc/TaskJuggler/ProjectBroker.html +0 -1656
  491. data/doc/TaskJuggler/ProjectBrokerIface.html +0 -831
  492. data/doc/TaskJuggler/ProjectFileParser.html +0 -2033
  493. data/doc/TaskJuggler/ProjectFileScanner.html +0 -1816
  494. data/doc/TaskJuggler/ProjectRecord.html +0 -958
  495. data/doc/TaskJuggler/ProjectServer.html +0 -1229
  496. data/doc/TaskJuggler/ProjectServerIface.html +0 -848
  497. data/doc/TaskJuggler/PropertyAttribute.html +0 -671
  498. data/doc/TaskJuggler/PropertyList.html +0 -1379
  499. data/doc/TaskJuggler/PropertySet.html +0 -1799
  500. data/doc/TaskJuggler/PropertyTreeNode.html +0 -2579
  501. data/doc/TaskJuggler/Query.html +0 -1663
  502. data/doc/TaskJuggler/RTFHandlers.html +0 -644
  503. data/doc/TaskJuggler/RTFNavigator.html +0 -772
  504. data/doc/TaskJuggler/RTFQuery.html +0 -1040
  505. data/doc/TaskJuggler/RTFReport.html +0 -800
  506. data/doc/TaskJuggler/RTFReportLink.html +0 -792
  507. data/doc/TaskJuggler/RTFWithQuerySupport.html +0 -682
  508. data/doc/TaskJuggler/RealFormat.html +0 -785
  509. data/doc/TaskJuggler/RealFormatAttribute.html +0 -635
  510. data/doc/TaskJuggler/ReferenceAttribute.html +0 -824
  511. data/doc/TaskJuggler/Report.html +0 -1477
  512. data/doc/TaskJuggler/ReportBase.html +0 -1246
  513. data/doc/TaskJuggler/ReportContext.html +0 -816
  514. data/doc/TaskJuggler/ReportServer.html +0 -1048
  515. data/doc/TaskJuggler/ReportServerIface.html +0 -882
  516. data/doc/TaskJuggler/ReportServerRecord.html +0 -761
  517. data/doc/TaskJuggler/ReportServlet.html +0 -1024
  518. data/doc/TaskJuggler/ReportTable.html +0 -1159
  519. data/doc/TaskJuggler/ReportTableCell.html +0 -1646
  520. data/doc/TaskJuggler/ReportTableColumn.html +0 -870
  521. data/doc/TaskJuggler/ReportTableLegend.html +0 -1040
  522. data/doc/TaskJuggler/ReportTableLine.html +0 -1047
  523. data/doc/TaskJuggler/Resource.html +0 -972
  524. data/doc/TaskJuggler/ResourceListAttribute.html +0 -810
  525. data/doc/TaskJuggler/ResourceListRE.html +0 -717
  526. data/doc/TaskJuggler/ResourceScenario.html +0 -2599
  527. data/doc/TaskJuggler/RichText.html +0 -859
  528. data/doc/TaskJuggler/RichTextAttribute.html +0 -785
  529. data/doc/TaskJuggler/RichTextDocument.html +0 -1018
  530. data/doc/TaskJuggler/RichTextElement.html +0 -1754
  531. data/doc/TaskJuggler/RichTextFunctionExample.html +0 -779
  532. data/doc/TaskJuggler/RichTextFunctionHandler.html +0 -730
  533. data/doc/TaskJuggler/RichTextImage.html +0 -692
  534. data/doc/TaskJuggler/RichTextIntermediate.html +0 -1265
  535. data/doc/TaskJuggler/RichTextParser.html +0 -847
  536. data/doc/TaskJuggler/RichTextScanner.html +0 -1469
  537. data/doc/TaskJuggler/RichTextSnip.html +0 -980
  538. data/doc/TaskJuggler/RichTextSyntaxRules.html +0 -2018
  539. data/doc/TaskJuggler/Scenario.html +0 -636
  540. data/doc/TaskJuggler/ScenarioData.html +0 -818
  541. data/doc/TaskJuggler/ScenarioListAttribute.html +0 -713
  542. data/doc/TaskJuggler/Scoreboard.html +0 -1181
  543. data/doc/TaskJuggler/SheetHandlerBase.html +0 -1275
  544. data/doc/TaskJuggler/SheetReceiver.html +0 -1368
  545. data/doc/TaskJuggler/SheetSender.html +0 -1134
  546. data/doc/TaskJuggler/Shift.html +0 -731
  547. data/doc/TaskJuggler/ShiftAssignment.html +0 -988
  548. data/doc/TaskJuggler/ShiftAssignments.html +0 -1393
  549. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +0 -714
  550. data/doc/TaskJuggler/ShiftScenario.html +0 -762
  551. data/doc/TaskJuggler/SimpleQueryExpander.html +0 -713
  552. data/doc/TaskJuggler/SortListAttribute.html +0 -671
  553. data/doc/TaskJuggler/SourceFileInfo.html +0 -740
  554. data/doc/TaskJuggler/StatusSheetReceiver.html +0 -658
  555. data/doc/TaskJuggler/StatusSheetReport.html +0 -910
  556. data/doc/TaskJuggler/StatusSheetSender.html +0 -788
  557. data/doc/TaskJuggler/StringAttribute.html +0 -713
  558. data/doc/TaskJuggler/SymbolAttribute.html +0 -671
  559. data/doc/TaskJuggler/SyntaxReference.html +0 -1220
  560. data/doc/TaskJuggler/TOCEntry.html +0 -816
  561. data/doc/TaskJuggler/TSResourceRecord.html +0 -712
  562. data/doc/TaskJuggler/TSTaskRecord.html +0 -724
  563. data/doc/TaskJuggler/TableColumnDefinition.html +0 -928
  564. data/doc/TaskJuggler/TableOfContents.html +0 -770
  565. data/doc/TaskJuggler/TableReport.html +0 -2533
  566. data/doc/TaskJuggler/Task.html +0 -865
  567. data/doc/TaskJuggler/TaskDependency.html +0 -772
  568. data/doc/TaskJuggler/TaskListAttribute.html +0 -753
  569. data/doc/TaskJuggler/TaskListRE.html +0 -716
  570. data/doc/TaskJuggler/TaskScenario.html +0 -4959
  571. data/doc/TaskJuggler/TextFormatter.html +0 -953
  572. data/doc/TaskJuggler/TextParser.html +0 -1773
  573. data/doc/TaskJuggler/TextParser/Pattern.html +0 -1717
  574. data/doc/TaskJuggler/TextParser/Rule.html +0 -1399
  575. data/doc/TaskJuggler/TextParser/StackElement.html +0 -922
  576. data/doc/TaskJuggler/TextParser/State.html +0 -995
  577. data/doc/TaskJuggler/TextParser/StateTransition.html +0 -788
  578. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +0 -691
  579. data/doc/TaskJuggler/TextParser/TokenDoc.html +0 -722
  580. data/doc/TaskJuggler/TextReport.html +0 -901
  581. data/doc/TaskJuggler/TextScanner.html +0 -1482
  582. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +0 -641
  583. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +0 -707
  584. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +0 -704
  585. data/doc/TaskJuggler/TextScanner/StreamHandle.html +0 -1036
  586. data/doc/TaskJuggler/TimeSheet.html +0 -1232
  587. data/doc/TaskJuggler/TimeSheetReceiver.html +0 -655
  588. data/doc/TaskJuggler/TimeSheetRecord.html +0 -1395
  589. data/doc/TaskJuggler/TimeSheetReport.html +0 -991
  590. data/doc/TaskJuggler/TimeSheetSender.html +0 -680
  591. data/doc/TaskJuggler/TimeSheetSummary.html +0 -935
  592. data/doc/TaskJuggler/TimeSheets.html +0 -716
  593. data/doc/TaskJuggler/Tj3AppBase.html +0 -831
  594. data/doc/TaskJuggler/Tj3Client.html +0 -1477
  595. data/doc/TaskJuggler/Tj3Daemon.html +0 -884
  596. data/doc/TaskJuggler/Tj3SheetAppBase.html +0 -738
  597. data/doc/TaskJuggler/Tj3SsReceiver.html +0 -724
  598. data/doc/TaskJuggler/Tj3SsSender.html +0 -757
  599. data/doc/TaskJuggler/Tj3TsReceiver.html +0 -724
  600. data/doc/TaskJuggler/Tj3TsSender.html +0 -744
  601. data/doc/TaskJuggler/Tj3TsSummary.html +0 -752
  602. data/doc/TaskJuggler/TjException.html +0 -672
  603. data/doc/TaskJuggler/TjTime.html +0 -2807
  604. data/doc/TaskJuggler/TjpExample.html +0 -877
  605. data/doc/TaskJuggler/TjpExportRE.html +0 -1598
  606. data/doc/TaskJuggler/TjpSyntaxRules.html +0 -13611
  607. data/doc/TaskJuggler/URLParameter.html +0 -671
  608. data/doc/TaskJuggler/UserManual.html +0 -1188
  609. data/doc/TaskJuggler/VimSyntax.html +0 -1044
  610. data/doc/TaskJuggler/WebServer.html +0 -737
  611. data/doc/TaskJuggler/WelcomePage.html +0 -769
  612. data/doc/TaskJuggler/WorkingHours.html +0 -1207
  613. data/doc/TaskJuggler/WorkingHoursAttribute.html +0 -736
  614. data/doc/TaskJuggler/XMLBlob.html +0 -687
  615. data/doc/TaskJuggler/XMLComment.html +0 -682
  616. data/doc/TaskJuggler/XMLDocument.html +0 -774
  617. data/doc/TaskJuggler/XMLElement.html +0 -942
  618. data/doc/TaskJuggler/XMLNamedText.html +0 -643
  619. data/doc/TaskJuggler/XMLText.html +0 -697
  620. data/doc/index.html +0 -4127
  621. data/doc/lib/AccountScenario_rb.html +0 -69
  622. data/doc/lib/Account_rb.html +0 -71
  623. data/doc/lib/Allocation_rb.html +0 -71
  624. data/doc/lib/AppConfig_rb.html +0 -71
  625. data/doc/lib/AttributeBase_rb.html +0 -69
  626. data/doc/lib/AttributeDefinition_rb.html +0 -67
  627. data/doc/lib/Attributes_rb.html +0 -83
  628. data/doc/lib/BatchProcessor_rb.html +0 -71
  629. data/doc/lib/Booking_rb.html +0 -67
  630. data/doc/lib/ChargeSet_rb.html +0 -69
  631. data/doc/lib/Charge_rb.html +0 -69
  632. data/doc/lib/DataCache_rb.html +0 -71
  633. data/doc/lib/FileList_rb.html +0 -67
  634. data/doc/lib/HTMLDocument_rb.html +0 -69
  635. data/doc/lib/IntervalList_rb.html +0 -69
  636. data/doc/lib/Interval_rb.html +0 -69
  637. data/doc/lib/Journal_rb.html +0 -67
  638. data/doc/lib/KeywordArray_rb.html +0 -67
  639. data/doc/lib/KeywordDocumentation_rb.html +0 -77
  640. data/doc/lib/Limits_rb.html +0 -69
  641. data/doc/lib/LogFile_rb.html +0 -69
  642. data/doc/lib/Log_rb.html +0 -71
  643. data/doc/lib/LogicalExpression_rb.html +0 -73
  644. data/doc/lib/LogicalFunction_rb.html +0 -69
  645. data/doc/lib/LogicalOperation_rb.html +0 -69
  646. data/doc/lib/MacroTable_rb.html +0 -73
  647. data/doc/lib/MessageHandler_rb.html +0 -67
  648. data/doc/lib/ProjectFileParser_rb.html +0 -77
  649. data/doc/lib/ProjectFileScanner_rb.html +0 -69
  650. data/doc/lib/Project_rb.html +0 -113
  651. data/doc/lib/PropertyList_rb.html +0 -67
  652. data/doc/lib/PropertySet_rb.html +0 -71
  653. data/doc/lib/PropertyTreeNode_rb.html +0 -67
  654. data/doc/lib/Query_rb.html +0 -69
  655. data/doc/lib/RTFHandlers_rb.html +0 -75
  656. data/doc/lib/RTFNavigator_rb.html +0 -73
  657. data/doc/lib/RTFQuery_rb.html +0 -73
  658. data/doc/lib/RTFReportLink_rb.html +0 -75
  659. data/doc/lib/RTFReport_rb.html +0 -71
  660. data/doc/lib/RTFWithQuerySupport_rb.html +0 -69
  661. data/doc/lib/RealFormat_rb.html +0 -67
  662. data/doc/lib/ResourceScenario_rb.html +0 -69
  663. data/doc/lib/Resource_rb.html +0 -71
  664. data/doc/lib/RichTextDocument_rb.html +0 -73
  665. data/doc/lib/RichTextElement_rb.html +0 -75
  666. data/doc/lib/RichTextFunctionExample_rb.html +0 -73
  667. data/doc/lib/RichTextFunctionHandler_rb.html +0 -67
  668. data/doc/lib/RichTextParser_rb.html +0 -73
  669. data/doc/lib/RichTextScanner_rb.html +0 -71
  670. data/doc/lib/RichTextSnip_rb.html +0 -71
  671. data/doc/lib/RichTextSyntaxRules_rb.html +0 -67
  672. data/doc/lib/RichText_rb.html +0 -73
  673. data/doc/lib/RuntimeConfig_rb.html +0 -69
  674. data/doc/lib/ScenarioData_rb.html +0 -71
  675. data/doc/lib/Scenario_rb.html +0 -69
  676. data/doc/lib/Scoreboard_rb.html +0 -69
  677. data/doc/lib/SheetHandlerBase_rb.html +0 -75
  678. data/doc/lib/SheetReceiver_rb.html +0 -79
  679. data/doc/lib/SheetSender_rb.html +0 -77
  680. data/doc/lib/ShiftAssignments_rb.html +0 -71
  681. data/doc/lib/ShiftScenario_rb.html +0 -69
  682. data/doc/lib/Shift_rb.html +0 -71
  683. data/doc/lib/SimpleQueryExpander_rb.html +0 -69
  684. data/doc/lib/SourceFileInfo_rb.html +0 -67
  685. data/doc/lib/StatusSheetReceiver_rb.html +0 -69
  686. data/doc/lib/StatusSheetSender_rb.html +0 -69
  687. data/doc/lib/SyntaxReference_rb.html +0 -75
  688. data/doc/lib/TOCEntry_rb.html +0 -71
  689. data/doc/lib/TableColumnDefinition_rb.html +0 -67
  690. data/doc/lib/TableOfContents_rb.html +0 -71
  691. data/doc/lib/TaskDependency_rb.html +0 -67
  692. data/doc/lib/TaskJuggler_rb.html +0 -75
  693. data/doc/lib/TaskScenario_rb.html +0 -71
  694. data/doc/lib/Task_rb.html +0 -71
  695. data/doc/lib/TextFormatter_rb.html +0 -69
  696. data/doc/lib/TextParser/Pattern_rb.html +0 -71
  697. data/doc/lib/TextParser/Rule_rb.html +0 -69
  698. data/doc/lib/TextParser/StackElement_rb.html +0 -69
  699. data/doc/lib/TextParser/State_rb.html +0 -67
  700. data/doc/lib/TextParser/TokenDoc_rb.html +0 -67
  701. data/doc/lib/TextParser_rb.html +0 -79
  702. data/doc/lib/TextScanner_rb.html +0 -83
  703. data/doc/lib/TimeSheetReceiver_rb.html +0 -69
  704. data/doc/lib/TimeSheetSender_rb.html +0 -69
  705. data/doc/lib/TimeSheetSummary_rb.html +0 -69
  706. data/doc/lib/TimeSheets_rb.html +0 -67
  707. data/doc/lib/Tj3AppBase_rb.html +0 -79
  708. data/doc/lib/Tj3Config_rb.html +0 -71
  709. data/doc/lib/Tj3SheetAppBase_rb.html +0 -69
  710. data/doc/lib/TjException_rb.html +0 -67
  711. data/doc/lib/TjTime_rb.html +0 -71
  712. data/doc/lib/TjpExample_rb.html +0 -69
  713. data/doc/lib/TjpSyntaxRules_rb.html +0 -67
  714. data/doc/lib/URLParameter_rb.html +0 -69
  715. data/doc/lib/UTF8String_rb.html +0 -67
  716. data/doc/lib/UserManual_rb.html +0 -79
  717. data/doc/lib/VimSyntax_rb.html +0 -69
  718. data/doc/lib/WorkingHours_rb.html +0 -71
  719. data/doc/lib/XMLDocument_rb.html +0 -69
  720. data/doc/lib/XMLElement_rb.html +0 -69
  721. data/doc/lib/daemon/Daemon_rb.html +0 -69
  722. data/doc/lib/daemon/ProcessIntercom_rb.html +0 -71
  723. data/doc/lib/daemon/ProjectBroker_rb.html +0 -83
  724. data/doc/lib/daemon/ProjectServer_rb.html +0 -85
  725. data/doc/lib/daemon/ReportServer_rb.html +0 -73
  726. data/doc/lib/daemon/ReportServlet_rb.html +0 -69
  727. data/doc/lib/daemon/WebServer_rb.html +0 -81
  728. data/doc/lib/daemon/WelcomePage_rb.html +0 -71
  729. data/doc/lib/deep_copy_rb.html +0 -67
  730. data/doc/lib/exchangebug_rb.html +0 -69
  731. data/doc/lib/reports/CSVFile_rb.html +0 -69
  732. data/doc/lib/reports/CollisionDetector_rb.html +0 -69
  733. data/doc/lib/reports/ColumnTable_rb.html +0 -69
  734. data/doc/lib/reports/GanttChart_rb.html +0 -75
  735. data/doc/lib/reports/GanttContainer_rb.html +0 -69
  736. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +0 -67
  737. data/doc/lib/reports/GanttHeader_rb.html +0 -69
  738. data/doc/lib/reports/GanttLine_rb.html +0 -79
  739. data/doc/lib/reports/GanttLoadStack_rb.html +0 -69
  740. data/doc/lib/reports/GanttMilestone_rb.html +0 -69
  741. data/doc/lib/reports/GanttRouter_rb.html +0 -69
  742. data/doc/lib/reports/GanttTaskBar_rb.html +0 -69
  743. data/doc/lib/reports/HTMLGraphics_rb.html +0 -67
  744. data/doc/lib/reports/Navigator_rb.html +0 -69
  745. data/doc/lib/reports/NikuReport_rb.html +0 -71
  746. data/doc/lib/reports/ReportBase_rb.html +0 -67
  747. data/doc/lib/reports/ReportContext_rb.html +0 -67
  748. data/doc/lib/reports/ReportTableCell_rb.html +0 -67
  749. data/doc/lib/reports/ReportTableColumn_rb.html +0 -67
  750. data/doc/lib/reports/ReportTableLegend_rb.html +0 -67
  751. data/doc/lib/reports/ReportTableLine_rb.html +0 -69
  752. data/doc/lib/reports/ReportTable_rb.html +0 -71
  753. data/doc/lib/reports/Report_rb.html +0 -93
  754. data/doc/lib/reports/ResourceListRE_rb.html +0 -75
  755. data/doc/lib/reports/StatusSheetReport_rb.html +0 -69
  756. data/doc/lib/reports/TableReport_rb.html +0 -77
  757. data/doc/lib/reports/TaskListRE_rb.html +0 -75
  758. data/doc/lib/reports/TextReport_rb.html +0 -69
  759. data/doc/lib/reports/TimeSheetReport_rb.html +0 -69
  760. data/doc/lib/reports/TjpExportRE_rb.html +0 -69
  761. data/doc/lib/ruby-signal-bug_rb.html +0 -69
  762. data/doc/lib/test_rb.html +0 -73
  763. data/doc/lib/tj3_rb.html +0 -75
  764. data/doc/lib/tj3client_rb.html +0 -75
  765. data/doc/lib/tj3d_rb.html +0 -75
  766. data/doc/lib/tj3man_rb.html +0 -75
  767. data/doc/lib/tj3ss_receiver_rb.html +0 -71
  768. data/doc/lib/tj3ss_sender_rb.html +0 -71
  769. data/doc/lib/tj3ts_receiver_rb.html +0 -71
  770. data/doc/lib/tj3ts_sender_rb.html +0 -71
  771. data/doc/lib/tj3ts_summary_rb.html +0 -71
  772. data/doc/rdoc.css +0 -706
  773. data/lib/test.rb +0 -19
  774. data/setup.rb +0 -1585
  775. data/test/TestSuite/CSV-Reports/genrefs +0 -6
  776. data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -2922
  777. data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
  778. data/test/TestSuite/Scheduler/Correct/Container.html +0 -513
  779. data/test/TestSuite/Scheduler/Correct/Precedes.html +0 -834
  780. data/test/TestSuite/Scheduler/Correct/Shift.html +0 -429
  781. data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
  782. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
  783. data/test/TestSuite/Scheduler/Errors/task_underspecified_2.tjp +0 -8
  784. data/test/TestSuite/Syntax/Correct/ReleasePlan.html +0 -160
  785. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
  786. data/test/TestSuite/Syntax/Correct/ResourceRoot.html +0 -108
  787. data/test/TestSuite/Syntax/Correct/niku.html +0 -67
File without changes
@@ -18,6 +18,16 @@ class TaskJuggler
18
18
  # necessary but make the file more readable and receptable to syntax folding.
19
19
  module TjpSyntaxRules
20
20
 
21
+ def rule_absoluteTaskId
22
+ pattern(%w( !taskIdUnverifd ), lambda {
23
+ id = (@taskprefix.empty? ? '' : @taskprefix + '.') + @val[0]
24
+ if (task = @project.task(id)).nil?
25
+ error('unknown_abs_task', "Unknown task #{id}", @sourceFileInfo[0])
26
+ end
27
+ task
28
+ })
29
+ end
30
+
21
31
  def rule_account
22
32
  pattern(%w( !accountHeader !accountBody ), lambda {
23
33
  @property = @property.parent
@@ -856,7 +866,19 @@ EOT
856
866
 
857
867
  def rule_exportHeader
858
868
  pattern(%w( _export !optionalID $STRING ), lambda {
859
- newReport(@val[1], @val[2], :export, sourceFileInfo)
869
+ report = newReport(@val[1], @val[2], :export, sourceFileInfo)
870
+
871
+ # By default, we export all scenarios.
872
+ scenarios = Array.new(@project.scenarios.items) { |i| i }
873
+ scenarios.delete_if { |sc| !@project.scenario(sc).get('enabled') }
874
+ report.set('scenarios', scenarios)
875
+ # Show all tasks, sorted by seqno-up.
876
+ report.set('hideTask', LogicalExpression.new(LogicalOperation.new(0)))
877
+ report.set('sortTasks', [ [ 'seqno', true, -1 ] ])
878
+ # Show all resources, sorted by seqno-up.
879
+ report.set('hideResource',
880
+ LogicalExpression.new(LogicalOperation.new(0)))
881
+ report.set('sortResources', [ [ 'seqno', true, -1 ] ])
860
882
  })
861
883
  arg(1, 'file name', <<'EOT'
862
884
  The name of the report file to generate. It must end with a .tjp or .tji
@@ -903,6 +925,18 @@ EOT
903
925
  { 'vacation' => 'Include vacations',
904
926
  'workinghours' => 'Include working hours' })
905
927
 
928
+ pattern(%w( _scenarios !scenarioIdList ), lambda {
929
+ # Don't include disabled scenarios in the report
930
+ @val[1].delete_if { |sc| !@project.scenario(sc).get('enabled') }
931
+ @property.set('scenarios', @val[1])
932
+ })
933
+ doc('scenarios.export', <<'EOT'
934
+ List of scenarios that should be included in the report. By default, all
935
+ scenarios will be included. This attribute can be used to limit the included
936
+ scenarios to a defined list.
937
+ EOT
938
+ )
939
+
906
940
  pattern(%w( _taskattributes !exportableTaskAttributes ), lambda {
907
941
  @property.set('taskAttributes', @val[1])
908
942
  })
@@ -922,6 +956,12 @@ EOT
922
956
  'note' => 'Include notes',
923
957
  'priority' => 'Include priorities',
924
958
  'responsible' => 'Include responsible resource' })
959
+
960
+ pattern(%w( _timezone !validTimeZone ), lambda {
961
+ @property.set('timezone', @val[1])
962
+ })
963
+ doc('timezone.export',
964
+ "Set the time zone to be used for all dates in the report.")
925
965
  end
926
966
 
927
967
  def rule_exportBody
@@ -970,6 +1010,29 @@ EOT
970
1010
  doc('reference.extend', <<'EOT'
971
1011
  Extend the property with a new attribute of type reference. A reference is a
972
1012
  URL and an optional text that will be shown instead of the URL if needed.
1013
+ EOT
1014
+ )
1015
+ arg(2, 'name', 'The name of the new attribute. It is used as header ' +
1016
+ 'in report columns and the like.')
1017
+
1018
+ pattern(%w( _richtext !extendId $STRING !extendOptionsBody ), lambda {
1019
+ # Extend the propertySet definition and parser rules
1020
+ if extendPropertySetDefinition(RichTextAttribute, nil)
1021
+ @ruleToExtendWithScenario.addPattern(TextParser::Pattern.new(
1022
+ [ '_' + @val[1], '$STRING' ], lambda {
1023
+ @property[@val[0], @scenarioIdx] =
1024
+ newRichText(@val[1], @sourceFileInfo[1])
1025
+ }))
1026
+ else
1027
+ @ruleToExtend.addPattern(TextParser::Pattern.new(
1028
+ [ '_' + @val[1], '$STRING' ], lambda {
1029
+ @property.set(@val[0], newRichText(@val[1], @sourceFileInfo[1]))
1030
+ }))
1031
+ end
1032
+ })
1033
+ doc('richtext.extend', <<'EOT'
1034
+ Extend the property with a new attribute of type [[Rich_Text_Attributes|Rich
1035
+ Text]].
973
1036
  EOT
974
1037
  )
975
1038
  arg(2, 'name', 'The name of the new attribute. It is used as header ' +
@@ -1090,8 +1153,11 @@ EOT
1090
1153
  pattern(%w( _flags !flagList ), lambda {
1091
1154
  @val[1].each do |flag|
1092
1155
  unless @property['flags', @scenarioIdx].include?(flag)
1093
- @property['flags', @scenarioIdx] =
1094
- @property['flags', @scenarioIdx] + @val[1]
1156
+ # We allow multiple instances of flag definitions.
1157
+ begin
1158
+ @property['flags', @scenarioIdx] += @val[1]
1159
+ rescue AttributeOverwrite
1160
+ end
1095
1161
  end
1096
1162
  end
1097
1163
  })
@@ -1305,7 +1371,7 @@ EOT
1305
1371
  optional
1306
1372
  repeatable
1307
1373
 
1308
- pattern(%w( _accountprefix !taskId ), lambda {
1374
+ pattern(%w( _accountprefix !accountId ), lambda {
1309
1375
  @accountprefix = @val[1].fullId
1310
1376
  })
1311
1377
  doc('accountprefix', <<'EOT'
@@ -1316,7 +1382,7 @@ EOT
1316
1382
  )
1317
1383
  arg(1, 'account ID', 'The absolute ID of an already defined account')
1318
1384
 
1319
- pattern(%w( _reportprefix !taskId ), lambda {
1385
+ pattern(%w( _reportprefix !reportId ), lambda {
1320
1386
  @reportprefix = @val[1].fullId
1321
1387
  })
1322
1388
  doc('reportprefix', <<'EOT'
@@ -1828,7 +1894,8 @@ EOT
1828
1894
  if @scanner.macroDefined?(@val[1])
1829
1895
  warning('marco_redefinition', "Redefining macro #{@val[1]}")
1830
1896
  end
1831
- @scanner.addMacro(Macro.new(@val[1], @val[2], @sourceFileInfo[0]))
1897
+ @scanner.addMacro(TextParser::Macro.new(@val[1], @val[2],
1898
+ @sourceFileInfo[0]))
1832
1899
  })
1833
1900
  doc('macro', <<'EOT'
1834
1901
  Defines a text fragment that can later be inserted by using the specified ID.
@@ -2335,10 +2402,10 @@ EOT
2335
2402
 
2336
2403
  pattern(%w( _now !date ), lambda {
2337
2404
  @project['now'] = @val[1]
2338
- @scanner.addMacro(Macro.new('now', @val[1].to_s,
2339
- @sourceFileInfo[0]))
2340
- @scanner.addMacro(Macro.new('today', @val[1].to_s(@project['timeFormat']),
2341
- @sourceFileInfo[0]))
2405
+ @scanner.addMacro(TextParser::Macro.new('now', @val[1].to_s,
2406
+ @sourceFileInfo[0]))
2407
+ @scanner.addMacro(TextParser::Macro.new(
2408
+ 'today', @val[1].to_s(@project['timeFormat']), @sourceFileInfo[0]))
2342
2409
  })
2343
2410
  doc('now', <<'EOT'
2344
2411
  Specify the date that TaskJuggler uses for calculation as current
@@ -2376,7 +2443,7 @@ EOT
2376
2443
  })
2377
2444
 
2378
2445
  pattern(%w( !timezone ), lambda {
2379
- @project['timezone'] = @val[1]
2446
+ @val[0]
2380
2447
  })
2381
2448
 
2382
2449
  pattern(%w( _timingresolution $INTEGER _min ), lambda {
@@ -2453,6 +2520,8 @@ EOT
2453
2520
  The project property is mandatory and should be the first property
2454
2521
  in a project file. It is used to capture basic attributes such as
2455
2522
  the project id, name and the expected time frame.
2523
+
2524
+ Be aware that the dates for the project period default to UTC times. See [[interval2]] for details.
2456
2525
  EOT
2457
2526
  )
2458
2527
  end
@@ -2724,7 +2793,7 @@ EOT
2724
2793
  if attributeDefinition.scenarioSpecific
2725
2794
  attr = @property[@val[1], 0]
2726
2795
  else
2727
- attr = @propert.get(@val[1])
2796
+ attr = @property.get(@val[1])
2728
2797
  end
2729
2798
  unless attr.is_a?(Array)
2730
2799
  error('purge_no_list',
@@ -2966,6 +3035,26 @@ EOT
2966
3035
  singlePattern('_index')
2967
3036
  descr('The index of the item based on the nesting hierachy')
2968
3037
 
3038
+ singlePattern('_inputs')
3039
+ descr(<<'EOT'
3040
+ A list of milestones that are a prerequiste for the current task. For
3041
+ container tasks it will also include the inputs of the child tasks. Inputs may
3042
+ not have any predecessors.
3043
+
3044
+ The list can be customized by the [listmode.column listmode] attribute. The
3045
+ following modes are supported:
3046
+
3047
+ # ID
3048
+ # Name
3049
+ # Name (ID)
3050
+ # ID: Name
3051
+ # ID (Date)
3052
+ # Name (Date)
3053
+ # Name (ID) Date ''(This is the default)''
3054
+ # ID: Name Date
3055
+ EOT
3056
+ )
3057
+
2969
3058
  singlePattern('_journal')
2970
3059
  descr(<<'EOT'
2971
3060
  The journal entries for the task or resource for the reported interval.
@@ -3144,7 +3233,8 @@ EOT
3144
3233
  singlePattern('_targets')
3145
3234
  descr(<<'EOT'
3146
3235
  A list of milestones that depend on the current task. For container tasks it
3147
- will also include the targets of the child tasks.
3236
+ will also include the targets of the child tasks. Targets may not have any
3237
+ follower tasks.
3148
3238
 
3149
3239
  The list can be customized by the [listmode.column listmode] attribute. The
3150
3240
  following modes are supported:
@@ -3154,8 +3244,8 @@ following modes are supported:
3154
3244
  # Name (ID)
3155
3245
  # ID: Name
3156
3246
  # ID (Date)
3157
- # Name (Date) ''(This is the default)''
3158
- # Name (ID) Date
3247
+ # Name (Date)
3248
+ # Name (ID) Date ''(This is the default)''
3159
3249
  # ID: Name Date
3160
3250
  EOT
3161
3251
  )
@@ -3331,7 +3421,11 @@ EOT
3331
3421
  @property.set('scenarios', @val[1])
3332
3422
  })
3333
3423
  doc('scenarios', <<'EOT'
3334
- List of scenarios that should be included in the report.
3424
+ List of scenarios that should be included in the report. By default, only the
3425
+ top-level scenario will be included. You can use this attribute to include
3426
+ data from the defined set of scenarios. Not all reports support reporting data
3427
+ from multiple scenarios. They will only include data from the first one in the
3428
+ list.
3335
3429
  EOT
3336
3430
  )
3337
3431
 
@@ -3378,6 +3472,17 @@ EOT
3378
3472
  @property.set('timeFormat', @val[0])
3379
3473
  })
3380
3474
 
3475
+ pattern(%w( _timezone !validTimeZone ), lambda {
3476
+ @property.set('timezone', @val[1])
3477
+ })
3478
+ doc('timezone.report', <<'EOT'
3479
+ Sets the time zone used for all dates in the report. This setting is ignored
3480
+ if the report is embedded into another report. Embedded in this context means
3481
+ the report is part of another generated report. It does not mean that the
3482
+ report definition is a sub report of another report definition.
3483
+ EOT
3484
+ )
3485
+
3381
3486
  pattern(%w( !reportTitle ))
3382
3487
  end
3383
3488
 
@@ -3731,15 +3836,15 @@ EOT
3731
3836
  )
3732
3837
 
3733
3838
  pattern(%w( _booking !resourceBooking ))
3734
- doc('booking', <<'EOT'
3839
+ doc('booking.resource', <<'EOT'
3735
3840
  The booking attribute can be used to report completed work. This can be part
3736
3841
  of the necessary effort or the whole effort. When the scenario is scheduled in
3737
3842
  [[projection]] mode, TaskJuggler assumes that only the work reported with
3738
3843
  bookings has been done up to now. It then schedules a plan for the still
3739
3844
  missing effort. All task with bookings must be scheduled in ''''asap'''' mode.
3740
3845
 
3741
- This attribute is also used within export reports to describe the details of a
3742
- scheduled project.
3846
+ Bookings are only valid in the scenario they have been defined in. They will
3847
+ not be passed to any other scenario.
3743
3848
 
3744
3849
  The sloppy attribute can be used when you want to skip non-working time or
3745
3850
  other allocations automatically. If it's not given, all bookings must only
@@ -3750,9 +3855,14 @@ work. This attribute is not really intended to specify completed effort by
3750
3855
  hand. Usually, booking statements are generated by [[export]] reports. The
3751
3856
  [[sloppy.booking|sloppy]] and [[overtime.booking|overtime]] attributes are
3752
3857
  only kludge for users who want to write them manually.
3858
+ Bookings can be used to report already completed work by specifying the exact
3859
+ time intervals a certain resource has worked on this task.
3860
+
3861
+ Bookings can be defined in the task or resource context. If you move tasks
3862
+ around very often, put your bookings in the task context.
3753
3863
  EOT
3754
3864
  )
3755
- also(%w( scheduling ))
3865
+ also(%w( scheduling booking.task ))
3756
3866
  example('Booking')
3757
3867
 
3758
3868
  pattern(%w( !fail ))
@@ -3852,7 +3962,7 @@ By default, the scheduler assigns resources to task beginning with the project
3852
3962
  start date. If the scenario is switched to projection mode, no assignments
3853
3963
  will be made prior to the current date or the date specified by [[now]]. In
3854
3964
  this case, TaskJuggler assumes, that all assignements prior to the
3855
- current date have been provided by [[booking]] statements.
3965
+ current date have been provided by [[booking.task]] statements.
3856
3966
  EOT
3857
3967
  )
3858
3968
  end
@@ -4487,6 +4597,25 @@ EOT
4487
4597
  repeatable
4488
4598
  optional
4489
4599
 
4600
+ pattern(%w( _adopt !taskList ), lambda {
4601
+ @val[1].each do |task|
4602
+ @property.adopt(task)
4603
+ end
4604
+ })
4605
+ doc('adopt.task', <<'EOT'
4606
+ Add a previously defined task to the sub-tasks of this task. This can be used
4607
+ to create virtual sub projects that contain of task trees that were defined as
4608
+ sub tasks of other tasks. Adopted tasks don't inherit anything from their step
4609
+ parents. However, the adopting task is scheduled to fit all adopted childs as
4610
+ well.
4611
+
4612
+ The adopting task and the adopted task must not share a common top-level task.
4613
+ Adopted tasks may not have overlaping sub trees.
4614
+
4615
+ '''This feature is experimental right now. Don't use it!'''.
4616
+ EOT
4617
+ )
4618
+
4490
4619
  pattern(%w( !journalEntry ))
4491
4620
 
4492
4621
  pattern(%w( _note $STRING ), lambda {
@@ -4686,6 +4815,10 @@ EOT
4686
4815
  singlePattern('$ID')
4687
4816
  end
4688
4817
 
4818
+ def rule_taskList
4819
+ listRule('moreTasks', '!absoluteTaskId')
4820
+ end
4821
+
4689
4822
  def rule_taskPeriod
4690
4823
  pattern(%w( _period !valInterval), lambda {
4691
4824
  @property['start', @scenarioIdx] = @val[1].start
@@ -4730,10 +4863,33 @@ EOT
4730
4863
 
4731
4864
  pattern(%w( _booking !taskBooking ))
4732
4865
  doc('booking.task', <<'EOT'
4866
+ The booking attribute can be used to report completed work. This can be part
4867
+ of the necessary effort or the whole effort. When the scenario is scheduled in
4868
+ [[projection]] mode, TaskJuggler assumes that only the work reported with
4869
+ bookings has been done up to now. It then schedules a plan for the still
4870
+ missing effort. All task with bookings must be scheduled in ''''asap'''' mode.
4871
+
4872
+ Bookings are only valid in the scenario they have been defined in. They will
4873
+ not be passed to any other scenario.
4874
+
4875
+ The sloppy attribute can be used when you want to skip non-working time or
4876
+ other allocations automatically. If it's not given, all bookings must only
4877
+ cover working time for the resource.
4878
+
4879
+ The booking attributes is designed to capture the exact amount of completed
4880
+ work. This attribute is not really intended to specify completed effort by
4881
+ hand. Usually, booking statements are generated by [[export]] reports. The
4882
+ [[sloppy.booking|sloppy]] and [[overtime.booking|overtime]] attributes are
4883
+ only kludge for users who want to write them manually.
4733
4884
  Bookings can be used to report already completed work by specifying the exact
4734
4885
  time intervals a certain resource has worked on this task.
4886
+
4887
+ Bookings can be defined in the task or resource context. If you move tasks
4888
+ around very often, put your bookings in the task context.
4735
4889
  EOT
4736
4890
  )
4891
+ also(%w( booking.resource ))
4892
+ example('Booking')
4737
4893
 
4738
4894
  pattern(%w( _charge !number !chargeMode ), lambda {
4739
4895
  checkContainer('charge')
@@ -4760,9 +4916,12 @@ EOT
4760
4916
  mode = :perDiem
4761
4917
  amount = @val[1] / 7.0
4762
4918
  end
4763
- @property['charge', @scenarioIdx] =
4764
- @property['charge', @scenarioIdx] +
4765
- [ Charge.new(amount, mode, @property, @scenarioIdx) ]
4919
+ # Multiple 'charge' attributes are allowed.
4920
+ begin
4921
+ @property['charge', @scenarioIdx] +=
4922
+ [ Charge.new(amount, mode, @property, @scenarioIdx) ]
4923
+ rescue AttributeOverwrite
4924
+ end
4766
4925
  })
4767
4926
  doc('charge', <<'EOT'
4768
4927
  Specify a one-time or per-period charge to a certain account. The charge can
@@ -4796,9 +4955,9 @@ EOT
4796
4955
 
4797
4956
  pattern(%w( _depends !taskDepList ), lambda {
4798
4957
  checkContainer('depends')
4799
- @property['depends', @scenarioIdx] =
4800
- @property['depends', @scenarioIdx] + @val[1]
4801
4958
  begin
4959
+ @property['depends', @scenarioIdx] =
4960
+ @property['depends', @scenarioIdx] + @val[1]
4802
4961
  @property['forward', @scenarioIdx] = true
4803
4962
  rescue AttributeOverwrite
4804
4963
  end
@@ -4813,10 +4972,7 @@ EOT
4813
4972
  )
4814
4973
  example('Depends1')
4815
4974
  pattern(%w( _duration !calendarDuration ), lambda {
4816
- checkContainer('duration')
4817
- @property['duration', @scenarioIdx] = @val[1]
4818
- @property['effort', @scenarioIdx] = 0
4819
- @property['length', @scenarioIdx] = 0
4975
+ setDurationAttribute('duration', @val[1])
4820
4976
  })
4821
4977
  doc('duration', <<'EOT'
4822
4978
  Specifies the time the task should last. This is calendar time, not working
@@ -4832,14 +4988,11 @@ EOT
4832
4988
  also(%w( effort length ))
4833
4989
 
4834
4990
  pattern(%w( _effort !workingDuration ), lambda {
4835
- checkContainer('effort')
4836
4991
  if @val[1] <= 0.0
4837
4992
  error('effort_zero', "Effort value must be larger than 0",
4838
4993
  @sourceFileInfo[1], @property)
4839
4994
  end
4840
- @property['effort', @scenarioIdx] = @val[1]
4841
- @property['duration', @scenarioIdx] = 0
4842
- @property['length', @scenarioIdx] = 0
4995
+ setDurationAttribute('effort', @val[1])
4843
4996
  })
4844
4997
  doc('effort', <<'EOT'
4845
4998
  Specifies the effort needed to complete the task. An effort of 4d can be done
@@ -4867,13 +5020,14 @@ EOT
4867
5020
  end
4868
5021
  })
4869
5022
  doc('end', <<'EOT'
4870
- The end date of the task. When specified for the top-level (default) scenario
4871
- this attributes also implicitly sets the scheduling policy of the tasks to
4872
- alap.
5023
+ The end attribute provides a guideline to the scheduler when the task should
5024
+ end. It will never end later, but it may end earlier when allocated
5025
+ resources are not available that long. When an end date is provided for a
5026
+ container task, it will be passed down to ALAP task that don't have a well
5027
+ defined end criteria.
4873
5028
 
4874
- If no end date is given for a task and the end is not specified by a
4875
- dependency on another task, or by a start date plus a duration, the end date
4876
- will be inherited from the enclosing tasks or the project end date.
5029
+ Setting an end date will implicitely set the scheduling policy for this task
5030
+ to ALAP.
4877
5031
  EOT
4878
5032
  )
4879
5033
  example('Export', '1')
@@ -4899,23 +5053,29 @@ EOT
4899
5053
  pattern(%w( !fail ))
4900
5054
 
4901
5055
  pattern(%w( _length !workingDuration ), lambda {
4902
- checkContainer('length')
4903
- @property['length', @scenarioIdx] = @val[1]
4904
- @property['duration', @scenarioIdx] = 0
4905
- @property['effort', @scenarioIdx] = 0
5056
+ setDurationAttribute('length', @val[1])
4906
5057
  })
4907
5058
  doc('length', <<'EOT'
4908
- Specifies the time the task occupies the resources. This is working time, not
4909
- calendar time. 7d means 7 working days, not one week. Whether a day is
4910
- considered a working day or not depends on the defined working hours and
4911
- global vacations. A task with a length specification may have resource
4912
- allocations. Resources are allocated when they are available. The availability
4913
- has no impact on the duration of the task. A day where none of the specified
4914
- resources is available is still considered a working day, if there is no
4915
- global vacation or global working time defined.
5059
+ Specifies the global working time to be used for this task. The value is
5060
+ specified in working time, not calendar time. 7d means 7 working days, or 7
5061
+ times 8 hours (assuming default settings), not one week.
5062
+
5063
+ A task with a length specification may have resource allocations. Resources
5064
+ are allocated when they are available. There is no guarantee that the task
5065
+ will get any resources allocated. The availability of resources has no impact
5066
+ on the duration of the task. A time slot where none of the specified resources
5067
+ is available is still considered working time, if there is no global vacation
5068
+ and global working hours are defined accordingly.
5069
+
5070
+ For the length calculation, only the global working hours and the global
5071
+ vacations matter. If a resource has additinal working hours defined, it's
5072
+ quite possible that a task with a length of 5d will have an allocated effort
5073
+ larger than 40 hours. Resource working hours only have an impact on whether an
5074
+ allocation is made or not for a particular time slot. They don't effect the
5075
+ resulting duration of the task.
4916
5076
 
4917
5077
  Tasks may not have subtasks if this attribute is used. Setting this attribute
4918
- will reset the [[duration]] and [[effort]] attributes.
5078
+ will reset the [[duration]], [[effort]] and [[milestone]] attributes.
4919
5079
  EOT
4920
5080
  )
4921
5081
  also(%w( duration effort ))
@@ -4952,8 +5112,7 @@ EOT
4952
5112
  )
4953
5113
 
4954
5114
  pattern(%w( _milestone ), lambda {
4955
- checkContainer('limits')
4956
- @property['milestone', @scenarioIdx] = true
5115
+ setDurationAttribute('milestone')
4957
5116
  })
4958
5117
  doc('milestone', <<'EOT'
4959
5118
  Turns the task into a special task that has no duration. You may not specify a
@@ -5002,9 +5161,9 @@ EOT
5002
5161
 
5003
5162
  pattern(%w( _precedes !taskPredList ), lambda {
5004
5163
  checkContainer('precedes')
5005
- @property['precedes', @scenarioIdx] =
5006
- @property['precedes', @scenarioIdx] + @val[1]
5007
5164
  begin
5165
+ @property['precedes', @scenarioIdx] =
5166
+ @property['precedes', @scenarioIdx] + @val[1]
5008
5167
  @property['forward', @scenarioIdx] = false
5009
5168
  rescue AttributeOverwrite
5010
5169
  end
@@ -5172,13 +5331,14 @@ EOT
5172
5331
  end
5173
5332
  })
5174
5333
  doc('start', <<'EOT'
5175
- The start date of the task. When specified for the top-level (default)
5176
- scenario this attribute also implicitly sets the scheduling policy of the task
5177
- to asap.
5334
+ The start attribute provides a guideline to the scheduler when the task should
5335
+ start. It will never start earlier, but it may start later when allocated
5336
+ resources are not available immediately. When a start date is provided for a
5337
+ container task, it will be passed down to ASAP task that don't have a well
5338
+ defined start criteria.
5178
5339
 
5179
- If no start date is given for a task and the start is not specified by a
5180
- dependency on another task, or by an end date plus a duration, the start date
5181
- will be inherited from the enclosing tasks or the project start date.
5340
+ Setting a start date will implicitely set the scheduling policy for this task
5341
+ to ASAP.
5182
5342
  EOT
5183
5343
  )
5184
5344
  also(%w( end period.task maxstart minstart scheduling ))
@@ -5361,15 +5521,15 @@ The intended use for time sheets is to have all resources report a time sheet
5361
5521
  every day, week or month. All time sheets can be added to the project plan.
5362
5522
  The status information is always used to determin the current status of the
5363
5523
  project. The [[work]], [[remaining]] and [[end.timesheet|end]] attributes are
5364
- ignored if there are also [[booking|bookings]] for the resource in the time
5365
- sheet period. The non-ignored attributes of the time sheets
5366
- will be converted into [[booking]] statements internally. These bookings can
5367
- then be [[export|exported]] into a file which can then be added to the project
5368
- again. This way, you can use time sheets to incrementally record progress of
5369
- your project. There is a possibility that time sheets conflict with other data
5370
- in the plan. In case TaskJuggler cannot automatically resolve them, these
5371
- conflicts have to be manually resolved by either changing the plan or the time
5372
- sheet.
5524
+ ignored if there are also [[booking.task|bookings]] for the resource in the
5525
+ time sheet period. The non-ignored attributes of the time sheets will be
5526
+ converted into [[booking.task|booking]] statements internally. These bookings
5527
+ can then be [[export|exported]] into a file which can then be added to the
5528
+ project again. This way, you can use time sheets to incrementally record
5529
+ progress of your project. There is a possibility that time sheets conflict
5530
+ with other data in the plan. In case TaskJuggler cannot automatically resolve
5531
+ them, these conflicts have to be manually resolved by either changing the plan
5532
+ or the time sheet.
5373
5533
 
5374
5534
  The status messages are interpreted as [[journalentry|journal entries]]. The
5375
5535
  alert level will be evaluated and the current state of the project can be put
@@ -5474,19 +5634,16 @@ EOT
5474
5634
 
5475
5635
  def rule_timezone
5476
5636
  pattern(%w( _timezone !validTimeZone ), lambda{
5477
- ENV['TZ'] = @project['timezone'] = @val[1]
5637
+ TjTime.setTimeZone(@val[1])
5638
+ @project['timezone'] = @val[1]
5478
5639
  })
5479
5640
  doc('timezone', <<'EOT'
5480
- Sets the default time zone of the project. All times that have no time
5481
- zones specified will be assumed to be in this time zone. The value must be a
5482
- string just like those used for the TZ environment variable. Most
5483
- Linux systems have a command line utility called tzselect to lookup
5484
- possible values.
5641
+ Sets the default time zone of the project. All dates and times that have no
5642
+ time zones specified will be assumed to be in this time zone. If no time zone
5643
+ is specified for the project, UTC is assumed.
5485
5644
 
5486
- The project start and end time are not affected by this setting. You
5487
- have to explicitly state the time zone for those dates or the system defaults
5488
- are assumed. Using the TZ environment variable is the recommended way to
5489
- specify the time zone for your project.
5645
+ The project start and end time are not affected by this setting. They are
5646
+ always considered to be UTC unless specified differently.
5490
5647
 
5491
5648
  In case the specified time zone is not hour-aligned with UTC, the
5492
5649
  [[timingresolution]] will automatically be decreased accordingly. Do not
@@ -5629,10 +5786,10 @@ EOT
5629
5786
  })
5630
5787
  doc('priority.timesheet', <<'EOT'
5631
5788
  The priority is a value between 1 and 1000. It is used to determine the
5632
- sequence of task when converting [[work]] to [[booking|bookings]]. Tasks that
5633
- need to finish earlier in the period should have a high priority, tasks that
5634
- end later in the period should have a low priority. For tasks that don't get
5635
- finished in the reported period the priority should be set to 1.
5789
+ sequence of task when converting [[work]] to [[booking.task|bookings]]. Tasks
5790
+ that need to finish earlier in the period should have a high priority, tasks
5791
+ that end later in the period should have a low priority. For tasks that don't
5792
+ get finished in the reported period the priority should be set to 1.
5636
5793
  EOT
5637
5794
  )
5638
5795
 
@@ -5641,8 +5798,8 @@ EOT
5641
5798
  })
5642
5799
  doc('remaining', <<'EOT'
5643
5800
  The remaining effort for the task. This value is ignored if there are
5644
- [[booking|bookings]] for the resource that overlap with the time sheet period.
5645
- If there are no bookings, the value is compared with the [[effort]]
5801
+ [[booking.task|bookings]] for the resource that overlap with the time sheet
5802
+ period. If there are no bookings, the value is compared with the [[effort]]
5646
5803
  specification of the task. If there a mismatch between the accumulated effort
5647
5804
  specified with bookings, [[work]] and [[remaining]] on one side and the
5648
5805
  specified [[effort]] on the other, a warning is generated.
@@ -5660,10 +5817,11 @@ EOT
5660
5817
  })
5661
5818
  doc('work', <<'EOT'
5662
5819
  The amount of time that the resource has spend with the task during the
5663
- reported period. This value is ignored when there are [[booking|bookings]] for
5664
- the resource overlapping with the time sheet period. If there are no bookings,
5665
- TaskJuggler will try to convert the work specification into bookings
5666
- internally before the actual scheduling is started.
5820
+ reported period. This value is ignored when there are
5821
+ [[booking.task|bookings]] for the resource overlapping with the time sheet
5822
+ period. If there are no bookings, TaskJuggler will try to convert the work
5823
+ specification into bookings internally before the actual scheduling is
5824
+ started.
5667
5825
 
5668
5826
  Every task listed in the time sheet needs to have a work attribute. The total
5669
5827
  accumulated work time that is reported must match exactly the total working
@@ -5705,7 +5863,8 @@ EOT
5705
5863
  def rule_valDate
5706
5864
  pattern(%w( !date ), lambda {
5707
5865
  if @val[0] < @project['start'] || @val[0] > @project['end']
5708
- error('date_in_range', "Date must be within the project time frame " +
5866
+ error('date_in_range',
5867
+ "Date #{@val[0]} must be within the project time frame " +
5709
5868
  "#{@project['start']} - #{@project['end']}",
5710
5869
  @sourceFileInfo[0])
5711
5870
  end
@@ -5908,8 +6067,7 @@ EOT
5908
6067
  @property['workinghours', @scenarioIdx] = wh
5909
6068
  end
5910
6069
  end
5911
- wh.timezone = @property.nil? ? @project['timezone'] :
5912
- @property['timezone', @scenarioIdx]
6070
+ wh.timezone = @project['timezone']
5913
6071
  7.times { |i| wh.setWorkingHours(i, @val[2]) if @val[1][i] }
5914
6072
  })
5915
6073
  end