taskjuggler 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. data/COPYING +280 -0
  2. data/README +31 -0
  3. data/Rakefile +20 -0
  4. data/benchmarks/UTF-8-Strings.rb +58 -0
  5. data/benchmarks/allocate.tjp +30 -0
  6. data/benchmarks/booking.tjp +62 -0
  7. data/benchmarks/depends.tjp +112 -0
  8. data/benchmarks/htmltaskreport.tjp +45 -0
  9. data/benchmarks/runbench.rb +24 -0
  10. data/bin/tj3 +3 -0
  11. data/bin/tj3man +3 -0
  12. data/doc/classes/AppConfig.html +808 -0
  13. data/doc/classes/Arguments.html +226 -0
  14. data/doc/classes/String.html +395 -0
  15. data/doc/classes/TaskJuggler.html +1358 -0
  16. data/doc/classes/TaskJuggler/Account.html +257 -0
  17. data/doc/classes/TaskJuggler/AccountScenario.html +218 -0
  18. data/doc/classes/TaskJuggler/Allocation.html +419 -0
  19. data/doc/classes/TaskJuggler/AllocationAttribute.html +291 -0
  20. data/doc/classes/TaskJuggler/AttributeBase.html +608 -0
  21. data/doc/classes/TaskJuggler/AttributeDefinition.html +259 -0
  22. data/doc/classes/TaskJuggler/Booking.html +307 -0
  23. data/doc/classes/TaskJuggler/BookingListAttribute.html +263 -0
  24. data/doc/classes/TaskJuggler/BooleanAttribute.html +261 -0
  25. data/doc/classes/TaskJuggler/CSVFile.html +325 -0
  26. data/doc/classes/TaskJuggler/Charge.html +279 -0
  27. data/doc/classes/TaskJuggler/ChargeListAttribute.html +229 -0
  28. data/doc/classes/TaskJuggler/ChargeSet.html +440 -0
  29. data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +276 -0
  30. data/doc/classes/TaskJuggler/ColumnTable.html +260 -0
  31. data/doc/classes/TaskJuggler/DateAttribute.html +194 -0
  32. data/doc/classes/TaskJuggler/DependencyListAttribute.html +267 -0
  33. data/doc/classes/TaskJuggler/DurationAttribute.html +229 -0
  34. data/doc/classes/TaskJuggler/FixnumAttribute.html +194 -0
  35. data/doc/classes/TaskJuggler/FlagListAttribute.html +263 -0
  36. data/doc/classes/TaskJuggler/FloatAttribute.html +229 -0
  37. data/doc/classes/TaskJuggler/GanttChart.html +667 -0
  38. data/doc/classes/TaskJuggler/GanttContainer.html +441 -0
  39. data/doc/classes/TaskJuggler/GanttHeader.html +280 -0
  40. data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +245 -0
  41. data/doc/classes/TaskJuggler/GanttLine.html +398 -0
  42. data/doc/classes/TaskJuggler/GanttLoadStack.html +327 -0
  43. data/doc/classes/TaskJuggler/GanttMilestone.html +415 -0
  44. data/doc/classes/TaskJuggler/GanttRouter.html +425 -0
  45. data/doc/classes/TaskJuggler/GanttTaskBar.html +429 -0
  46. data/doc/classes/TaskJuggler/HTMLDocument.html +240 -0
  47. data/doc/classes/TaskJuggler/HTMLGraphics.html +231 -0
  48. data/doc/classes/TaskJuggler/Interval.html +552 -0
  49. data/doc/classes/TaskJuggler/IntervalListAttribute.html +267 -0
  50. data/doc/classes/TaskJuggler/KeywordDocumentation.html +796 -0
  51. data/doc/classes/TaskJuggler/Limits.html +416 -0
  52. data/doc/classes/TaskJuggler/Limits/Limit.html +381 -0
  53. data/doc/classes/TaskJuggler/LimitsAttribute.html +261 -0
  54. data/doc/classes/TaskJuggler/Log.html +613 -0
  55. data/doc/classes/TaskJuggler/LogicalAttribute.html +226 -0
  56. data/doc/classes/TaskJuggler/LogicalExpression.html +251 -0
  57. data/doc/classes/TaskJuggler/LogicalFlag.html +229 -0
  58. data/doc/classes/TaskJuggler/LogicalFunction.html +324 -0
  59. data/doc/classes/TaskJuggler/LogicalOperation.html +299 -0
  60. data/doc/classes/TaskJuggler/Macro.html +194 -0
  61. data/doc/classes/TaskJuggler/MacroParser.html +360 -0
  62. data/doc/classes/TaskJuggler/MacroTable.html +366 -0
  63. data/doc/classes/TaskJuggler/Message.html +281 -0
  64. data/doc/classes/TaskJuggler/MessageHandler.html +215 -0
  65. data/doc/classes/TaskJuggler/Project.html +1606 -0
  66. data/doc/classes/TaskJuggler/ProjectFileParser.html +412 -0
  67. data/doc/classes/TaskJuggler/PropertyList.html +597 -0
  68. data/doc/classes/TaskJuggler/PropertySet.html +1200 -0
  69. data/doc/classes/TaskJuggler/PropertyTreeNode.html +1449 -0
  70. data/doc/classes/TaskJuggler/Query.html +600 -0
  71. data/doc/classes/TaskJuggler/RealFormat.html +252 -0
  72. data/doc/classes/TaskJuggler/ReferenceAttribute.html +194 -0
  73. data/doc/classes/TaskJuggler/Report.html +528 -0
  74. data/doc/classes/TaskJuggler/ReportElement.html +1070 -0
  75. data/doc/classes/TaskJuggler/ReportTable.html +497 -0
  76. data/doc/classes/TaskJuggler/ReportTableCell.html +518 -0
  77. data/doc/classes/TaskJuggler/ReportTableColumn.html +364 -0
  78. data/doc/classes/TaskJuggler/ReportTableElement.html +644 -0
  79. data/doc/classes/TaskJuggler/ReportTableLegend.html +343 -0
  80. data/doc/classes/TaskJuggler/ReportTableLine.html +431 -0
  81. data/doc/classes/TaskJuggler/Resource.html +211 -0
  82. data/doc/classes/TaskJuggler/ResourceListAttribute.html +267 -0
  83. data/doc/classes/TaskJuggler/ResourceListRE.html +249 -0
  84. data/doc/classes/TaskJuggler/ResourceScenario.html +1137 -0
  85. data/doc/classes/TaskJuggler/RichText.html +537 -0
  86. data/doc/classes/TaskJuggler/RichTextAttribute.html +229 -0
  87. data/doc/classes/TaskJuggler/RichTextDocument.html +418 -0
  88. data/doc/classes/TaskJuggler/RichTextElement.html +829 -0
  89. data/doc/classes/TaskJuggler/RichTextException.html +212 -0
  90. data/doc/classes/TaskJuggler/RichTextParser.html +317 -0
  91. data/doc/classes/TaskJuggler/RichTextProtocolExample.html +303 -0
  92. data/doc/classes/TaskJuggler/RichTextProtocolHandler.html +194 -0
  93. data/doc/classes/TaskJuggler/RichTextScanner.html +561 -0
  94. data/doc/classes/TaskJuggler/RichTextSnip.html +364 -0
  95. data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +883 -0
  96. data/doc/classes/TaskJuggler/Scenario.html +163 -0
  97. data/doc/classes/TaskJuggler/ScenarioData.html +354 -0
  98. data/doc/classes/TaskJuggler/Scoreboard.html +638 -0
  99. data/doc/classes/TaskJuggler/Shift.html +255 -0
  100. data/doc/classes/TaskJuggler/ShiftAssignment.html +488 -0
  101. data/doc/classes/TaskJuggler/ShiftAssignments.html +715 -0
  102. data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +261 -0
  103. data/doc/classes/TaskJuggler/ShiftScenario.html +282 -0
  104. data/doc/classes/TaskJuggler/SourceFileInfo.html +247 -0
  105. data/doc/classes/TaskJuggler/StringAttribute.html +229 -0
  106. data/doc/classes/TaskJuggler/SymbolAttribute.html +194 -0
  107. data/doc/classes/TaskJuggler/SyntaxReference.html +516 -0
  108. data/doc/classes/TaskJuggler/TOCEntry.html +242 -0
  109. data/doc/classes/TaskJuggler/TableColumnDefinition.html +273 -0
  110. data/doc/classes/TaskJuggler/TableOfContents.html +256 -0
  111. data/doc/classes/TaskJuggler/Task.html +203 -0
  112. data/doc/classes/TaskJuggler/TaskDependency.html +251 -0
  113. data/doc/classes/TaskJuggler/TaskListAttribute.html +267 -0
  114. data/doc/classes/TaskJuggler/TaskListRE.html +250 -0
  115. data/doc/classes/TaskJuggler/TaskScenario.html +2206 -0
  116. data/doc/classes/TaskJuggler/TextParser.html +670 -0
  117. data/doc/classes/TaskJuggler/TextParser/Pattern.html +923 -0
  118. data/doc/classes/TaskJuggler/TextParser/Rule.html +779 -0
  119. data/doc/classes/TaskJuggler/TextParser/StackElement.html +267 -0
  120. data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +212 -0
  121. data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +221 -0
  122. data/doc/classes/TaskJuggler/TextScanner.html +708 -0
  123. data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +355 -0
  124. data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +341 -0
  125. data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +260 -0
  126. data/doc/classes/TaskJuggler/TjException.html +185 -0
  127. data/doc/classes/TaskJuggler/TjTime.html +1845 -0
  128. data/doc/classes/TaskJuggler/TjpExample.html +310 -0
  129. data/doc/classes/TaskJuggler/TjpExportRE.html +329 -0
  130. data/doc/classes/TaskJuggler/TjpSyntaxRules.html +8928 -0
  131. data/doc/classes/TaskJuggler/UserManual.html +606 -0
  132. data/doc/classes/TaskJuggler/WorkingHours.html +582 -0
  133. data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +284 -0
  134. data/doc/classes/TaskJuggler/XMLBlob.html +207 -0
  135. data/doc/classes/TaskJuggler/XMLComment.html +206 -0
  136. data/doc/classes/TaskJuggler/XMLDocument.html +293 -0
  137. data/doc/classes/TaskJuggler/XMLElement.html +341 -0
  138. data/doc/classes/TaskJuggler/XMLNamedText.html +174 -0
  139. data/doc/classes/TaskJuggler/XMLText.html +221 -0
  140. data/doc/files/COPYING.html +448 -0
  141. data/doc/files/README.html +134 -0
  142. data/doc/files/lib/AccountScenario_rb.html +116 -0
  143. data/doc/files/lib/Account_rb.html +118 -0
  144. data/doc/files/lib/Allocation_rb.html +118 -0
  145. data/doc/files/lib/AppConfig_rb.html +116 -0
  146. data/doc/files/lib/AttributeBase_rb.html +106 -0
  147. data/doc/files/lib/AttributeDefinition_rb.html +106 -0
  148. data/doc/files/lib/Attributes_rb.html +130 -0
  149. data/doc/files/lib/Booking_rb.html +106 -0
  150. data/doc/files/lib/ChargeSet_rb.html +116 -0
  151. data/doc/files/lib/Charge_rb.html +116 -0
  152. data/doc/files/lib/HTMLDocument_rb.html +116 -0
  153. data/doc/files/lib/Interval_rb.html +116 -0
  154. data/doc/files/lib/KeywordDocumentation_rb.html +122 -0
  155. data/doc/files/lib/Limits_rb.html +116 -0
  156. data/doc/files/lib/Log_rb.html +116 -0
  157. data/doc/files/lib/LogicalExpression_rb.html +122 -0
  158. data/doc/files/lib/LogicalFlag_rb.html +116 -0
  159. data/doc/files/lib/LogicalFunction_rb.html +116 -0
  160. data/doc/files/lib/LogicalOperation_rb.html +116 -0
  161. data/doc/files/lib/MacroParser_rb.html +118 -0
  162. data/doc/files/lib/MacroTable_rb.html +122 -0
  163. data/doc/files/lib/MessageHandler_rb.html +106 -0
  164. data/doc/files/lib/Message_rb.html +116 -0
  165. data/doc/files/lib/ProjectFileParser_rb.html +122 -0
  166. data/doc/files/lib/Project_rb.html +148 -0
  167. data/doc/files/lib/PropertyList_rb.html +106 -0
  168. data/doc/files/lib/PropertySet_rb.html +118 -0
  169. data/doc/files/lib/PropertyTreeNode_rb.html +106 -0
  170. data/doc/files/lib/Query_rb.html +116 -0
  171. data/doc/files/lib/RealFormat_rb.html +106 -0
  172. data/doc/files/lib/ResourceScenario_rb.html +116 -0
  173. data/doc/files/lib/Resource_rb.html +118 -0
  174. data/doc/files/lib/RichTextDocument_rb.html +120 -0
  175. data/doc/files/lib/RichTextElement_rb.html +120 -0
  176. data/doc/files/lib/RichTextParser_rb.html +120 -0
  177. data/doc/files/lib/RichTextProtocolExample_rb.html +120 -0
  178. data/doc/files/lib/RichTextProtocolHandler_rb.html +106 -0
  179. data/doc/files/lib/RichTextScanner_rb.html +116 -0
  180. data/doc/files/lib/RichTextSnip_rb.html +118 -0
  181. data/doc/files/lib/RichTextSyntaxRules_rb.html +106 -0
  182. data/doc/files/lib/RichText_rb.html +118 -0
  183. data/doc/files/lib/ScenarioData_rb.html +118 -0
  184. data/doc/files/lib/Scenario_rb.html +116 -0
  185. data/doc/files/lib/Scoreboard_rb.html +106 -0
  186. data/doc/files/lib/ShiftAssignments_rb.html +116 -0
  187. data/doc/files/lib/ShiftScenario_rb.html +116 -0
  188. data/doc/files/lib/Shift_rb.html +118 -0
  189. data/doc/files/lib/SourceFileInfo_rb.html +106 -0
  190. data/doc/files/lib/SyntaxReference_rb.html +122 -0
  191. data/doc/files/lib/TOCEntry_rb.html +118 -0
  192. data/doc/files/lib/TableColumnDefinition_rb.html +106 -0
  193. data/doc/files/lib/TableOfContents_rb.html +118 -0
  194. data/doc/files/lib/TaskDependency_rb.html +106 -0
  195. data/doc/files/lib/TaskJuggler_rb.html +120 -0
  196. data/doc/files/lib/TaskScenario_rb.html +116 -0
  197. data/doc/files/lib/Task_rb.html +118 -0
  198. data/doc/files/lib/TextParser/Pattern_rb.html +116 -0
  199. data/doc/files/lib/TextParser/Rule_rb.html +106 -0
  200. data/doc/files/lib/TextParser/StackElement_rb.html +106 -0
  201. data/doc/files/lib/TextParser/TokenDoc_rb.html +106 -0
  202. data/doc/files/lib/TextParser_rb.html +124 -0
  203. data/doc/files/lib/TextScanner_rb.html +128 -0
  204. data/doc/files/lib/Tj3Config_rb.html +118 -0
  205. data/doc/files/lib/TjException_rb.html +106 -0
  206. data/doc/files/lib/TjTime_rb.html +118 -0
  207. data/doc/files/lib/TjpExample_rb.html +116 -0
  208. data/doc/files/lib/TjpSyntaxRules_rb.html +106 -0
  209. data/doc/files/lib/UTF8String_rb.html +132 -0
  210. data/doc/files/lib/UserManual_rb.html +124 -0
  211. data/doc/files/lib/WorkingHours_rb.html +116 -0
  212. data/doc/files/lib/XMLDocument_rb.html +116 -0
  213. data/doc/files/lib/XMLElement_rb.html +116 -0
  214. data/doc/files/lib/reports/CSVFile_rb.html +116 -0
  215. data/doc/files/lib/reports/ColumnTable_rb.html +116 -0
  216. data/doc/files/lib/reports/GanttChart_rb.html +122 -0
  217. data/doc/files/lib/reports/GanttContainer_rb.html +116 -0
  218. data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +106 -0
  219. data/doc/files/lib/reports/GanttHeader_rb.html +116 -0
  220. data/doc/files/lib/reports/GanttLine_rb.html +126 -0
  221. data/doc/files/lib/reports/GanttLoadStack_rb.html +116 -0
  222. data/doc/files/lib/reports/GanttMilestone_rb.html +116 -0
  223. data/doc/files/lib/reports/GanttRouter_rb.html +106 -0
  224. data/doc/files/lib/reports/GanttTaskBar_rb.html +116 -0
  225. data/doc/files/lib/reports/HTMLGraphics_rb.html +106 -0
  226. data/doc/files/lib/reports/ReportElement_rb.html +118 -0
  227. data/doc/files/lib/reports/ReportTableCell_rb.html +106 -0
  228. data/doc/files/lib/reports/ReportTableColumn_rb.html +106 -0
  229. data/doc/files/lib/reports/ReportTableElement_rb.html +122 -0
  230. data/doc/files/lib/reports/ReportTableLegend_rb.html +106 -0
  231. data/doc/files/lib/reports/ReportTableLine_rb.html +116 -0
  232. data/doc/files/lib/reports/ReportTable_rb.html +118 -0
  233. data/doc/files/lib/reports/Report_rb.html +126 -0
  234. data/doc/files/lib/reports/ResourceListRE_rb.html +122 -0
  235. data/doc/files/lib/reports/TaskListRE_rb.html +122 -0
  236. data/doc/files/lib/reports/TjpExportRE_rb.html +116 -0
  237. data/doc/files/lib/taskjuggler3_rb.html +276 -0
  238. data/doc/files/lib/tj3man_rb.html +189 -0
  239. data/doc/fr_class_index.html +285 -0
  240. data/doc/fr_file_index.html +223 -0
  241. data/doc/fr_method_index.html +1953 -0
  242. data/doc/index.html +21 -0
  243. data/doc/rdoc-style.css +299 -0
  244. data/examples/tutorial.tjp +361 -0
  245. data/gem_spec.rb +30 -0
  246. data/lib/Account.rb +50 -0
  247. data/lib/AccountScenario.rb +39 -0
  248. data/lib/Allocation.rb +102 -0
  249. data/lib/AppConfig.rb +134 -0
  250. data/lib/AttributeBase.rb +131 -0
  251. data/lib/AttributeDefinition.rb +47 -0
  252. data/lib/Attributes.rb +478 -0
  253. data/lib/BatchProcessor.rb +209 -0
  254. data/lib/Booking.rb +59 -0
  255. data/lib/Charge.rb +71 -0
  256. data/lib/ChargeSet.rb +126 -0
  257. data/lib/HTMLDocument.rb +59 -0
  258. data/lib/Interval.rb +127 -0
  259. data/lib/KeywordDocumentation.rb +560 -0
  260. data/lib/Limits.rb +219 -0
  261. data/lib/Log.rb +160 -0
  262. data/lib/LogicalExpression.rb +71 -0
  263. data/lib/LogicalFlag.rb +34 -0
  264. data/lib/LogicalFunction.rb +102 -0
  265. data/lib/LogicalOperation.rb +118 -0
  266. data/lib/MacroParser.rb +77 -0
  267. data/lib/MacroTable.rb +84 -0
  268. data/lib/Message.rb +56 -0
  269. data/lib/MessageHandler.rb +34 -0
  270. data/lib/Project.rb +662 -0
  271. data/lib/ProjectFileParser.rb +333 -0
  272. data/lib/PropertyList.rb +181 -0
  273. data/lib/PropertySet.rb +304 -0
  274. data/lib/PropertyTreeNode.rb +461 -0
  275. data/lib/Query.rb +227 -0
  276. data/lib/RealFormat.rb +73 -0
  277. data/lib/Resource.rb +42 -0
  278. data/lib/ResourceScenario.rb +511 -0
  279. data/lib/RichText.rb +147 -0
  280. data/lib/RichTextDocument.rb +139 -0
  281. data/lib/RichTextElement.rb +391 -0
  282. data/lib/RichTextParser.rb +66 -0
  283. data/lib/RichTextProtocolExample.rb +65 -0
  284. data/lib/RichTextProtocolHandler.rb +35 -0
  285. data/lib/RichTextScanner.rb +390 -0
  286. data/lib/RichTextSnip.rb +104 -0
  287. data/lib/RichTextSyntaxRules.rb +265 -0
  288. data/lib/Scenario.rb +27 -0
  289. data/lib/ScenarioData.rb +65 -0
  290. data/lib/Scoreboard.rb +141 -0
  291. data/lib/Shift.rb +48 -0
  292. data/lib/ShiftAssignments.rb +291 -0
  293. data/lib/ShiftScenario.rb +46 -0
  294. data/lib/SourceFileInfo.rb +37 -0
  295. data/lib/SyntaxReference.rb +284 -0
  296. data/lib/TOCEntry.rb +76 -0
  297. data/lib/TableColumnDefinition.rb +54 -0
  298. data/lib/TableOfContents.rb +46 -0
  299. data/lib/Task.rb +37 -0
  300. data/lib/TaskDependency.rb +39 -0
  301. data/lib/TaskJuggler.rb +84 -0
  302. data/lib/TaskScenario.rb +1622 -0
  303. data/lib/TextParser.rb +416 -0
  304. data/lib/TextParser/Pattern.rb +263 -0
  305. data/lib/TextParser/Rule.rb +171 -0
  306. data/lib/TextParser/StackElement.rb +45 -0
  307. data/lib/TextParser/TokenDoc.rb +38 -0
  308. data/lib/TextScanner.rb +682 -0
  309. data/lib/Tj3Config.rb +27 -0
  310. data/lib/TjException.rb +27 -0
  311. data/lib/TjTime.rb +395 -0
  312. data/lib/TjpExample.rb +119 -0
  313. data/lib/TjpSyntaxRules.rb +4022 -0
  314. data/lib/UTF8String.rb +100 -0
  315. data/lib/UserManual.rb +282 -0
  316. data/lib/WorkingHours.rb +323 -0
  317. data/lib/XMLDocument.rb +54 -0
  318. data/lib/XMLElement.rb +175 -0
  319. data/lib/reports/CSVFile.rb +146 -0
  320. data/lib/reports/ColumnTable.rb +66 -0
  321. data/lib/reports/GanttChart.rb +308 -0
  322. data/lib/reports/GanttContainer.rb +107 -0
  323. data/lib/reports/GanttHeader.rb +141 -0
  324. data/lib/reports/GanttHeaderScaleItem.rb +42 -0
  325. data/lib/reports/GanttLine.rb +329 -0
  326. data/lib/reports/GanttLoadStack.rb +113 -0
  327. data/lib/reports/GanttMilestone.rb +80 -0
  328. data/lib/reports/GanttRouter.rb +375 -0
  329. data/lib/reports/GanttTaskBar.rb +95 -0
  330. data/lib/reports/HTMLGraphics.rb +65 -0
  331. data/lib/reports/Report.rb +344 -0
  332. data/lib/reports/ReportElement.rb +427 -0
  333. data/lib/reports/ReportTable.rb +144 -0
  334. data/lib/reports/ReportTableCell.rb +142 -0
  335. data/lib/reports/ReportTableColumn.rb +82 -0
  336. data/lib/reports/ReportTableElement.rb +852 -0
  337. data/lib/reports/ReportTableLegend.rb +167 -0
  338. data/lib/reports/ReportTableLine.rb +87 -0
  339. data/lib/reports/ResourceListRE.rb +72 -0
  340. data/lib/reports/TaskListRE.rb +73 -0
  341. data/lib/reports/TjpExportRE.rb +394 -0
  342. data/lib/taskjuggler3.rb +106 -0
  343. data/lib/tj3man.rb +88 -0
  344. data/manual/Day_To_Day_Juggling +168 -0
  345. data/manual/Getting_Started +61 -0
  346. data/manual/How_To_Contribute +185 -0
  347. data/manual/Installation +68 -0
  348. data/manual/Intro +102 -0
  349. data/manual/Reporting_Bugs +26 -0
  350. data/manual/Rich_Text_Attributes +90 -0
  351. data/manual/TaskJuggler_2x_Migration +40 -0
  352. data/manual/Tutorial +579 -0
  353. data/manual/fdl +450 -0
  354. data/prj_cfg.rb +43 -0
  355. data/setup.rb +1585 -0
  356. data/tasks/csts.rake +72 -0
  357. data/tasks/gem.rake +14 -0
  358. data/tasks/manual.rake +10 -0
  359. data/tasks/missing.rake +21 -0
  360. data/tasks/rcov.rake +14 -0
  361. data/tasks/rdoc.rake +17 -0
  362. data/tasks/rexml_fix.rb +16 -0
  363. data/tasks/rexml_fix_19.rb +49 -0
  364. data/tasks/show.rake +21 -0
  365. data/tasks/stats.rake +25 -0
  366. data/tasks/test.rake +11 -0
  367. data/test/MessageChecker.rb +53 -0
  368. data/test/TestSuite/CSV-Reports/celltext-Reference.csv +14 -0
  369. data/test/TestSuite/CSV-Reports/celltext.tjp +7 -0
  370. data/test/TestSuite/CSV-Reports/genrefs +6 -0
  371. data/test/TestSuite/CSV-Reports/project-1.tji +57 -0
  372. data/test/TestSuite/CSV-Reports/resourcereport-Reference.csv +4 -0
  373. data/test/TestSuite/CSV-Reports/resourcereport.tjp +10 -0
  374. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks-Reference.csv +22 -0
  375. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +11 -0
  376. data/test/TestSuite/CSV-Reports/sortByTree-Reference.csv +14 -0
  377. data/test/TestSuite/CSV-Reports/sortByTree.tjp +8 -0
  378. data/test/TestSuite/CSV-Reports/sortBy_duration.down-Reference.csv +14 -0
  379. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +10 -0
  380. data/test/TestSuite/CSV-Reports/sortBy_effort.up-Reference.csv +14 -0
  381. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +10 -0
  382. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down-Reference.csv +14 -0
  383. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +10 -0
  384. data/test/TestSuite/CSV-Reports/taskreport-Reference.csv +14 -0
  385. data/test/TestSuite/CSV-Reports/taskreport.tjp +10 -0
  386. data/test/TestSuite/CSV-Reports/taskreport_with_resources-Reference.csv +24 -0
  387. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +11 -0
  388. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +86 -0
  389. data/test/TestSuite/Scheduler/Correct/AutomaticMilestones.tjp +63 -0
  390. data/test/TestSuite/Scheduler/Correct/Booking.tjp +161 -0
  391. data/test/TestSuite/Scheduler/Correct/Depends.tjp +50 -0
  392. data/test/TestSuite/Scheduler/Correct/Duration.tjp +34 -0
  393. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +129 -0
  394. data/test/TestSuite/Scheduler/Correct/Limits.tjp +81 -0
  395. data/test/TestSuite/Scheduler/Correct/MultipleMandatories.tjp +43 -0
  396. data/test/TestSuite/Scheduler/Correct/Optimize-1.tjp +28 -0
  397. data/test/TestSuite/Scheduler/Correct/Optimize-2.tjp +33 -0
  398. data/test/TestSuite/Scheduler/Correct/Optimize-3.tjp +33 -0
  399. data/test/TestSuite/Scheduler/Correct/Optimize-4.tjp +34 -0
  400. data/test/TestSuite/Scheduler/Correct/Optimize-5.tjp +62 -0
  401. data/test/TestSuite/Scheduler/Correct/Precedes.tjp +50 -0
  402. data/test/TestSuite/Scheduler/Correct/Shift.tjp +102 -0
  403. data/test/TestSuite/Scheduler/Errors/account_no_leaf.tjp +13 -0
  404. data/test/TestSuite/Scheduler/Errors/booking_conflict.tjp +10 -0
  405. data/test/TestSuite/Scheduler/Errors/booking_no_duty.tjp +9 -0
  406. data/test/TestSuite/Scheduler/Errors/booking_on_vacation.tjp +9 -0
  407. data/test/TestSuite/Scheduler/Errors/container_booking.tjp +14 -0
  408. data/test/TestSuite/Scheduler/Errors/container_duration.tjp +11 -0
  409. data/test/TestSuite/Scheduler/Errors/effort_no_allocations.tjp +7 -0
  410. data/test/TestSuite/Scheduler/Errors/loop_detected_1.tjp +19 -0
  411. data/test/TestSuite/Scheduler/Errors/loop_detected_10.tjp +36 -0
  412. data/test/TestSuite/Scheduler/Errors/loop_detected_11.tjp +27 -0
  413. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +20 -0
  414. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +27 -0
  415. data/test/TestSuite/Scheduler/Errors/loop_detected_14.tjp +26 -0
  416. data/test/TestSuite/Scheduler/Errors/loop_detected_2.tjp +24 -0
  417. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +18 -0
  418. data/test/TestSuite/Scheduler/Errors/loop_detected_4.tjp +36 -0
  419. data/test/TestSuite/Scheduler/Errors/loop_detected_5.tjp +37 -0
  420. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +35 -0
  421. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +46 -0
  422. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +51 -0
  423. data/test/TestSuite/Scheduler/Errors/loop_detected_9.tjp +20 -0
  424. data/test/TestSuite/Scheduler/Errors/maxend.tjp +8 -0
  425. data/test/TestSuite/Scheduler/Errors/maxstart.tjp +8 -0
  426. data/test/TestSuite/Scheduler/Errors/milestone_booking.tjp +10 -0
  427. data/test/TestSuite/Scheduler/Errors/milestone_duration.tjp +8 -0
  428. data/test/TestSuite/Scheduler/Errors/milestone_start_end.tjp +8 -0
  429. data/test/TestSuite/Scheduler/Errors/minend.tjp +8 -0
  430. data/test/TestSuite/Scheduler/Errors/minstart.tjp +8 -0
  431. data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +11 -0
  432. data/test/TestSuite/Scheduler/Errors/no_tasks.tjp +6 -0
  433. data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +8 -0
  434. data/test/TestSuite/Scheduler/Errors/task_depend_child.tjp +10 -0
  435. data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +13 -0
  436. data/test/TestSuite/Scheduler/Errors/task_depend_parent.tjp +11 -0
  437. data/test/TestSuite/Scheduler/Errors/task_depend_self.tjp +10 -0
  438. data/test/TestSuite/Scheduler/Errors/task_depend_unknown.tjp +10 -0
  439. data/test/TestSuite/Scheduler/Errors/task_overspecified_1.tjp +9 -0
  440. data/test/TestSuite/Scheduler/Errors/task_overspecified_2.tjp +14 -0
  441. data/test/TestSuite/Scheduler/Errors/task_overspecified_3.tjp +14 -0
  442. data/test/TestSuite/Scheduler/Errors/task_underspecified_1.tjp +8 -0
  443. data/test/TestSuite/Scheduler/Errors/task_underspecified_2.tjp +8 -0
  444. data/test/TestSuite/Scheduler/Errors/task_underspecified_3.tjp +9 -0
  445. data/test/TestSuite/Syntax/Correct/Account.tjp +53 -0
  446. data/test/TestSuite/Syntax/Correct/Allocate-1.tjp +24 -0
  447. data/test/TestSuite/Syntax/Correct/Alternative.tjp +13 -0
  448. data/test/TestSuite/Syntax/Correct/AutoMacros.tjp +14 -0
  449. data/test/TestSuite/Syntax/Correct/Booking.tjp +26 -0
  450. data/test/TestSuite/Syntax/Correct/Caption.tjp +33 -0
  451. data/test/TestSuite/Syntax/Correct/Celltext.tjp +28 -0
  452. data/test/TestSuite/Syntax/Correct/Comments.tjp +29 -0
  453. data/test/TestSuite/Syntax/Correct/Complete.tjp +16 -0
  454. data/test/TestSuite/Syntax/Correct/CompletedWork.tji +20 -0
  455. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +31 -0
  456. data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +12 -0
  457. data/test/TestSuite/Syntax/Correct/CustomAttributes.tjp +14 -0
  458. data/test/TestSuite/Syntax/Correct/Depends1.tjp +22 -0
  459. data/test/TestSuite/Syntax/Correct/Durations.tjp +29 -0
  460. data/test/TestSuite/Syntax/Correct/Efficiency.tjp +19 -0
  461. data/test/TestSuite/Syntax/Correct/Export.tjp +40 -0
  462. data/test/TestSuite/Syntax/Correct/Flags.tjp +32 -0
  463. data/test/TestSuite/Syntax/Correct/Freeze.tjp +28 -0
  464. data/test/TestSuite/Syntax/Correct/Gap.tjp +15 -0
  465. data/test/TestSuite/Syntax/Correct/HtmlTaskReport.tjp +33 -0
  466. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +71 -0
  467. data/test/TestSuite/Syntax/Correct/LoadUnits.tjp +31 -0
  468. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +19 -0
  469. data/test/TestSuite/Syntax/Correct/Mandatory.tjp +17 -0
  470. data/test/TestSuite/Syntax/Correct/Milestone.tjp +12 -0
  471. data/test/TestSuite/Syntax/Correct/MinMax.tjp +17 -0
  472. data/test/TestSuite/Syntax/Correct/Numberformat.tjp +12 -0
  473. data/test/TestSuite/Syntax/Correct/Period.tjp +16 -0
  474. data/test/TestSuite/Syntax/Correct/Persistent.tjp +11 -0
  475. data/test/TestSuite/Syntax/Correct/Precedes1.tjp +17 -0
  476. data/test/TestSuite/Syntax/Correct/Priority.tjp +30 -0
  477. data/test/TestSuite/Syntax/Correct/Project.tjp +21 -0
  478. data/test/TestSuite/Syntax/Correct/ProjectIDs.tjp +23 -0
  479. data/test/TestSuite/Syntax/Correct/RawHTML.tjp +29 -0
  480. data/test/TestSuite/Syntax/Correct/Reports.tjp +54 -0
  481. data/test/TestSuite/Syntax/Correct/Resource.tjp +20 -0
  482. data/test/TestSuite/Syntax/Correct/Responsible.tjp +16 -0
  483. data/test/TestSuite/Syntax/Correct/Scenario.tjp +15 -0
  484. data/test/TestSuite/Syntax/Correct/Scheduling.tjp +26 -0
  485. data/test/TestSuite/Syntax/Correct/Select.tjp +27 -0
  486. data/test/TestSuite/Syntax/Correct/Shift.tjp +55 -0
  487. data/test/TestSuite/Syntax/Correct/Simple.tjp +25 -0
  488. data/test/TestSuite/Syntax/Correct/String.tjp +12 -0
  489. data/test/TestSuite/Syntax/Correct/Supplement.tjp +24 -0
  490. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +34 -0
  491. data/test/TestSuite/Syntax/Correct/TimeFrame.tjp +19 -0
  492. data/test/TestSuite/Syntax/Correct/Timezone.tjp +8 -0
  493. data/test/TestSuite/Syntax/Correct/Vacation.tjp +33 -0
  494. data/test/TestSuite/Syntax/Correct/csvtest +16 -0
  495. data/test/TestSuite/Syntax/Correct/manual2example.rb +24 -0
  496. data/test/TestSuite/Syntax/Correct/tutorial.tjp +485 -0
  497. data/test/TestSuite/Syntax/Errors/bad_include.tjp +11 -0
  498. data/test/TestSuite/Syntax/Errors/booking_group.tjp +14 -0
  499. data/test/TestSuite/Syntax/Errors/booking_milestone.tjp +13 -0
  500. data/test/TestSuite/Syntax/Errors/booking_no_leaf.tjp +13 -0
  501. data/test/TestSuite/Syntax/Errors/chargeset.tjp +14 -0
  502. data/test/TestSuite/Syntax/Errors/chargeset_master.tjp +15 -0
  503. data/test/TestSuite/Syntax/Errors/container_attribute.tjp +13 -0
  504. data/test/TestSuite/Syntax/Errors/cost_acct_no_top.tjp +24 -0
  505. data/test/TestSuite/Syntax/Errors/cost_rev_same.tjp +24 -0
  506. data/test/TestSuite/Syntax/Errors/date_in_range.tjp +7 -0
  507. data/test/TestSuite/Syntax/Errors/effort_zero.tjp +8 -0
  508. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -0
  509. data/test/TestSuite/Syntax/Errors/export_bad_extn.tjp +9 -0
  510. data/test/TestSuite/Syntax/Errors/extend_id_cap.tjp +7 -0
  511. data/test/TestSuite/Syntax/Errors/interval_end_in_range.tjp +7 -0
  512. data/test/TestSuite/Syntax/Errors/interval_start_in_range.tjp +7 -0
  513. data/test/TestSuite/Syntax/Errors/leaf_resource_id_expected.tjp +12 -0
  514. data/test/TestSuite/Syntax/Errors/misaligned_date.tjp +7 -0
  515. data/test/TestSuite/Syntax/Errors/no_csv_suffix.tjp +10 -0
  516. data/test/TestSuite/Syntax/Errors/no_html_suffix.tjp +10 -0
  517. data/test/TestSuite/Syntax/Errors/operand_attribute.tjp +11 -0
  518. data/test/TestSuite/Syntax/Errors/operand_unkn_flag.tjp +11 -0
  519. data/test/TestSuite/Syntax/Errors/operand_unkn_scen.tjp +11 -0
  520. data/test/TestSuite/Syntax/Errors/overtime_range.tjp +13 -0
  521. data/test/TestSuite/Syntax/Errors/purge_no_list.tjp +8 -0
  522. data/test/TestSuite/Syntax/Errors/purge_unknown_id.tjp +8 -0
  523. data/test/TestSuite/Syntax/Errors/report_end.tjp +10 -0
  524. data/test/TestSuite/Syntax/Errors/report_redifinition.tjp +10 -0
  525. data/test/TestSuite/Syntax/Errors/report_start.tjp +10 -0
  526. data/test/TestSuite/Syntax/Errors/resource_exists.tjp +7 -0
  527. data/test/TestSuite/Syntax/Errors/resource_id_expected.tjp +8 -0
  528. data/test/TestSuite/Syntax/Errors/rev_acct_no_top.tjp +24 -0
  529. data/test/TestSuite/Syntax/Errors/scenario_exists.tjp +7 -0
  530. data/test/TestSuite/Syntax/Errors/shift_assignment_overlap.tjp +15 -0
  531. data/test/TestSuite/Syntax/Errors/shift_exists.tjp +7 -0
  532. data/test/TestSuite/Syntax/Errors/shift_id_expected.tjp +7 -0
  533. data/test/TestSuite/Syntax/Errors/sloppy_range.tjp +13 -0
  534. data/test/TestSuite/Syntax/Errors/sort_direction.tjp +11 -0
  535. data/test/TestSuite/Syntax/Errors/sort_unknown_scen.tjp +11 -0
  536. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd1.tjp +11 -0
  537. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd2.tjp +11 -0
  538. data/test/TestSuite/Syntax/Errors/sorting_wbs.tjp +11 -0
  539. data/test/TestSuite/Syntax/Errors/start_before_end1.tjp +7 -0
  540. data/test/TestSuite/Syntax/Errors/start_before_end2.tjp +6 -0
  541. data/test/TestSuite/Syntax/Errors/task_complete.tjp +8 -0
  542. data/test/TestSuite/Syntax/Errors/task_exists.tjp +7 -0
  543. data/test/TestSuite/Syntax/Errors/task_priority.tjp +8 -0
  544. data/test/TestSuite/Syntax/Errors/task_without_chargeset.tjp +9 -0
  545. data/test/TestSuite/Syntax/Errors/time_interval.tjp +12 -0
  546. data/test/TestSuite/Syntax/Errors/too_many_bangs.tjp +10 -0
  547. data/test/TestSuite/Syntax/Errors/undecl_flag.tjp +6 -0
  548. data/test/TestSuite/Syntax/Errors/unknown_projectid.tjp +7 -0
  549. data/test/TestSuite/Syntax/Errors/unknown_scenario_id.tjp +6 -0
  550. data/test/TestSuite/Syntax/Errors/unknown_scenario_idx.tjp +11 -0
  551. data/test/TestSuite/Syntax/Errors/unknown_task.tjp +10 -0
  552. data/test/all.rb +31 -0
  553. data/test/test_BatchProcessor.rb +54 -0
  554. data/test/test_CSV-Reports.rb +101 -0
  555. data/test/test_Limits.rb +104 -0
  556. data/test/test_LogicalExpression.rb +110 -0
  557. data/test/test_MacroTable.rb +51 -0
  558. data/test/test_Project.rb +57 -0
  559. data/test/test_PropertySet.rb +71 -0
  560. data/test/test_Query.rb +83 -0
  561. data/test/test_RealFormat.rb +83 -0
  562. data/test/test_RichText.rb +869 -0
  563. data/test/test_Scheduler.rb +42 -0
  564. data/test/test_ShiftAssignments.rb +77 -0
  565. data/test/test_Syntax.rb +41 -0
  566. data/test/test_TextScanner.rb +95 -0
  567. data/test/test_TjTime.rb +114 -0
  568. data/test/test_TjpExample.rb +169 -0
  569. data/test/test_UTF8String.rb +84 -0
  570. data/test/test_WorkingHours.rb +56 -0
  571. metadata +649 -0
@@ -0,0 +1,16 @@
1
+ No.;Name;Id;Effort;Revenue;Cost
2
+ 1;Accounting Software;AcSo;180.3;98,000;80,437
3
+ 2; Specification;AcSo.spec;20.3;0;7,628
4
+ 3; Software Development;AcSo.software;85.0;0;32,150
5
+ 4; Database coupling;AcSo.software.database;20.0;0;7,400
6
+ 5; Graphical User Interface;AcSo.software.gui;35.0;0;13,650
7
+ 6; Back-End Functions;AcSo.software.backend;30.0;0;11,100
8
+ 7; Software testing;AcSo.test;25.0;0;8,425
9
+ 8; Alpha Test;AcSo.test.alpha;5.0;0;1,770
10
+ 9; Beta Test;AcSo.test.beta;20.0;0;6,655
11
+ 10; Manual;AcSo.manual;50.0;0;16,856
12
+ 11; Milestones;AcSo.deliveries;0.0;98,000;0
13
+ 12; Project start;AcSo.deliveries.start;0.0;21,000;0
14
+ 13; Technology Preview;AcSo.deliveries.prev;0.0;31,000;0
15
+ 14; Beta version;AcSo.deliveries.beta;0.0;13,000;0
16
+ 15; Ship Product to Customer;AcSo.deliveries.done;0.0;33,000;0
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby -w
2
+ # encoding: UTF-8
3
+ #
4
+ # = manual2example.rb -- The TaskJuggler III Project Management Software
5
+ #
6
+ # Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
7
+ #
8
+ # This program is free software; you can redistribute it and/or modify
9
+ # it under the terms of version 2 of the GNU General Public License as
10
+ # published by the Free Software Foundation.
11
+ #
12
+
13
+ def removeTags(fileName)
14
+ oFile = File.open('../../../../examples/' + fileName, 'w')
15
+ File.open(fileName, 'r') do |iFile|
16
+ while line = iFile.gets
17
+ oFile.puts line unless line =~ /^# \*\*\* EXAMPLE:/
18
+ end
19
+ end
20
+ oFile.close
21
+ end
22
+
23
+ removeTags('tutorial.tjp')
24
+
@@ -0,0 +1,485 @@
1
+ /*
2
+ * This file contains an example project. It is part of the
3
+ * TaskJuggler project management tool. It uses a made up software
4
+ * development project to demonstrate some of the basic features of
5
+ * TaskJuggler. Please see the TaskJuggler manual for a more detailed
6
+ * description of the various syntax elements.
7
+ */
8
+ # *** EXAMPLE: header1 +
9
+ # *** EXAMPLE: header2 +
10
+ project acso "Accounting Software" "1.0" 2002-01-16 - 2002-04-28 {
11
+ # *** EXAMPLE: header1 -
12
+ # Hide the clock time. Only show the date.
13
+ # *** EXAMPLE: formats +
14
+ timeformat "%Y-%m-%d"
15
+ # *** EXAMPLE: formats -
16
+ # Use US format for numbers
17
+ # *** EXAMPLE: formats +
18
+ numberformat "-" "" "," "." 1
19
+ # *** EXAMPLE: formats -
20
+ # Use US financial format for currency values. Don't show pence.
21
+ # *** EXAMPLE: formats +
22
+ currencyformat "(" ")" "," "." 0
23
+ # *** EXAMPLE: formats -
24
+ # Pick a day during the project that will be reported as 'today' in
25
+ # the project reports. If not specified, the current day will be
26
+ # used, but this will likely be outside of the project range, so it
27
+ # can't be seen in the reports.
28
+ # *** EXAMPLE: now +
29
+ now 2002-03-05-13:00
30
+ # *** EXAMPLE: now -
31
+ # The currency for all money values is the Euro.
32
+ # *** EXAMPLE: currency +
33
+ currency "USD"
34
+ # *** EXAMPLE: currency -
35
+
36
+ # We want to compare the baseline scenario to one with a slightly
37
+ # delayed start.
38
+ # *** EXAMPLE: scenario +
39
+ scenario plan "Plan" {
40
+ scenario delayed "Delayed"
41
+ }
42
+ # *** EXAMPLE: scenario -
43
+ # *** EXAMPLE: extend +
44
+ extend resource {
45
+ text Email "Email"
46
+ text Phone "Phone"
47
+ }
48
+ # *** EXAMPLE: extend -
49
+ # *** EXAMPLE: header1 +
50
+ }
51
+ # *** EXAMPLE: header1 -
52
+ # *** EXAMPLE: header2 -
53
+
54
+ # This is not a real copyright for this file. It's just used as an example.
55
+ # *** EXAMPLE: copyright +
56
+ copyright "© 2002 Crappy Software, Inc."
57
+ # *** EXAMPLE: copyright -
58
+
59
+ # The daily default rate of all resources. This can be overridden for each
60
+ # resource. We specify this, so that we can do a good calculation of
61
+ # the costs of the project.
62
+ # *** EXAMPLE: rate +
63
+ rate 390.0
64
+ # *** EXAMPLE: rate -
65
+
66
+ # Register Good Friday as a global holiday for all resources.
67
+ # *** EXAMPLE: vacation +
68
+ vacation "Good Friday" 2002-03-29
69
+ # *** EXAMPLE: vacation -
70
+
71
+ # *** EXAMPLE: flags +
72
+ flags team
73
+ # *** EXAMPLE: flags -
74
+
75
+ # This is one way to form teams
76
+ # *** EXAMPLE: macro +
77
+ macro allocate_developers [
78
+ # *** EXAMPLE: expandedmacro +
79
+ allocate dev1
80
+ allocate dev2
81
+ allocate dev3
82
+ # *** EXAMPLE: expandedmacro -
83
+ ]
84
+ # *** EXAMPLE: macro -
85
+
86
+ # In order to do a simple profit and loss analysis of the project we
87
+ # specify accounts. One for the development costs, one for the
88
+ # documentation costs, and one account to credit the customer payments
89
+ # to.
90
+ # *** EXAMPLE: accounts +
91
+ account cost "Project Cost" {
92
+ account dev "Development"
93
+ account doc "Documentation"
94
+ }
95
+ account rev "Payments"
96
+ # *** EXAMPLE: accounts -
97
+ # The Profit&Loss analysis should be rev - cost accounts.
98
+ # *** EXAMPLE: balance +
99
+ balance cost rev
100
+ # *** EXAMPLE: balance -
101
+
102
+ # *** EXAMPLE: resources +
103
+ resource dev "Developers" {
104
+ resource dev1 "Paul Smith" {
105
+ Email "paul@crappysoftware.com"
106
+ Phone "x362"
107
+ rate 350.0
108
+ }
109
+ resource dev2 "Sébastien Bono" {
110
+ Email "SBono@crappysoftware.com"
111
+ Phone "x234"
112
+ }
113
+ resource dev3 "Klaus Müller" {
114
+ Email "Klaus.Mueller@crappysoftware.com"
115
+ Phone "x490"
116
+ vacation 2002-02-01 - 2002-02-05
117
+ }
118
+
119
+ flags team
120
+ }
121
+ resource misc "The Others" {
122
+ resource test "Peter Murphy" {
123
+ Email "murphy@crappysoftware.com"
124
+ Phone "x666"
125
+ limits { dailymax 6.4h }
126
+ rate 310.0
127
+ }
128
+ resource doc "Dim Sung" {
129
+ Email "sung@crappysoftware.com"
130
+ Phone "x482"
131
+ rate 300.0
132
+ vacation 2002-03-11 - 2002-03-16
133
+ }
134
+
135
+ flags team
136
+ }
137
+ # *** EXAMPLE: resources -
138
+
139
+ # Now we specify the work packages. The whole project is described as
140
+ # a task that contains subtasks. These subtasks are then broken down
141
+ # into smaller tasks and so on. The innermost tasks describe the real
142
+ # work and have resources allocated to them. Many attributes of tasks
143
+ # are inherited from the enclosing task. This saves you a lot of typing.
144
+ # *** EXAMPLE: task1 +
145
+ # *** EXAMPLE: charge +
146
+ task AcSo "Accounting Software" {
147
+ # *** EXAMPLE: task1 -
148
+ # *** EXAMPLE: charge -
149
+
150
+ # All work-related costs will be booked to this account unless the
151
+ # subtasks specify something different.
152
+ # *** EXAMPLE: charge +
153
+ chargeset dev
154
+ # *** EXAMPLE: charge -
155
+ # For the duration of the project we have running cost that are not
156
+ # included in the labor cost.
157
+ # *** EXAMPLE: charge +
158
+ charge 170 perday
159
+ # *** EXAMPLE: charge -
160
+
161
+ # *** EXAMPLE: task1 +
162
+ # *** EXAMPLE: spec +
163
+ # *** EXAMPLE: charge +
164
+ task spec "Specification" {
165
+ # *** EXAMPLE: charge -
166
+ # *** EXAMPLE: task1 -
167
+ # *** EXAMPLE: spec -
168
+ # The effort to finish this task is 20 man-days.
169
+ # *** EXAMPLE: spec +
170
+ effort 20d
171
+ # *** EXAMPLE: spec -
172
+ # Now we use the macro declared above to allocate the resources
173
+ # for this task. Because they can work in parallel, they may finish this
174
+ # task earlier than in 20 working-days.
175
+ # *** EXAMPLE: spec +
176
+ ${allocate_developers}
177
+ # *** EXAMPLE: spec -
178
+ # Each task without subtasks must have a start or an end
179
+ # criterion and a duration. For this task we use a reference to a
180
+ # milestone defined further below as the start criterion. So this task
181
+ # can not start before the specified milestone has been reached.
182
+ # References to other tasks may be relative. Each exclamation mark (!)
183
+ # means 'in the scope of the enclosing task'. To descent into a task, the
184
+ # fullstop (.) together with the id of the tasks have to be specified.
185
+ # *** EXAMPLE: spec +
186
+ depends !deliveries.start
187
+ # *** EXAMPLE: task1 +
188
+ }
189
+ # *** EXAMPLE: task1 -
190
+ # *** EXAMPLE: spec -
191
+
192
+ # *** EXAMPLE: task1 +
193
+ # *** EXAMPLE: software +
194
+ task software "Software Development" {
195
+ # *** EXAMPLE: task1 -
196
+ # *** EXAMPLE: software -
197
+
198
+ # The software is the most critical task of the project. So we set
199
+ # the priority of this task (and all its subtasks) to 1000, the top
200
+ # priority. The higher the priority, the more likely the task will
201
+ # get the requested resources.
202
+ # *** EXAMPLE: software +
203
+ priority 1000
204
+ # *** EXAMPLE: software -
205
+
206
+ # All subtasks depend on the specification task.
207
+ depends !spec
208
+
209
+ # *** EXAMPLE: software +
210
+ # *** EXAMPLE: database +
211
+ task database "Database coupling" {
212
+ # *** EXAMPLE: software -
213
+ effort 20d
214
+ allocate dev1, dev2
215
+ # *** EXAMPLE: software +
216
+ }
217
+ # *** EXAMPLE: database -
218
+ # *** EXAMPLE: software -
219
+
220
+ # *** EXAMPLE: software +
221
+ # *** EXAMPLE: gui +
222
+ task gui "Graphical User Interface" {
223
+ # *** EXAMPLE: software -
224
+ effort 35d
225
+ # *** EXAMPLE: gui -
226
+ # This task has taken 5 man-days more than originally planned.
227
+ # We record this as well, so that we can generate reports that
228
+ # compare the delayed schedule of the project to the original plan.
229
+ # *** EXAMPLE: gui +
230
+ delayed:effort 40d
231
+ depends !database, !backend
232
+ allocate dev2, dev3
233
+ # *** EXAMPLE: software +
234
+ }
235
+ # *** EXAMPLE: gui -
236
+ # *** EXAMPLE: software -
237
+
238
+ # *** EXAMPLE: software +
239
+ # *** EXAMPLE: backend +
240
+ task backend "Back-End Functions" {
241
+ # *** EXAMPLE: software -
242
+ effort 30d
243
+ # *** EXAMPLE: backend -
244
+ # This task is behind schedule, because it should have been
245
+ # finished already. To document this, we specify that the task
246
+ # is 95% completed. If nothing is specified, TaskJuggler assumes
247
+ # that the task is on schedule and computes the completion rate
248
+ # according to the current day and the plan data.
249
+ # *** EXAMPLE: backend +
250
+ complete 95
251
+ depends !database
252
+ allocate dev1, dev2
253
+ # *** EXAMPLE: software +
254
+ }
255
+ # *** EXAMPLE: backend -
256
+ # *** EXAMPLE: task1 +
257
+ }
258
+ # *** EXAMPLE: task1 -
259
+ # *** EXAMPLE: software -
260
+
261
+ # *** EXAMPLE: task1 +
262
+ # *** EXAMPLE: test +
263
+ task test "Software testing" {
264
+ # *** EXAMPLE: task1 -
265
+
266
+ task alpha "Alpha Test" {
267
+ # *** EXAMPLE: test -
268
+ # Efforts can not only be specified as man-days, but also as
269
+ # man-weeks, man-hours, etc. By default, TaskJuggler assumes
270
+ # that a man-week is 5 man-days or 40 man-hours. These values
271
+ # can be changed, of course.
272
+ # *** EXAMPLE: test +
273
+ effort 1w
274
+ # *** EXAMPLE: test -
275
+ # This task depends on a task in the scope of the enclosing
276
+ # task's enclosing task. So we need two exclamation marks (!!)
277
+ # to get there.
278
+ # *** EXAMPLE: test +
279
+ depends !!software
280
+ allocate test, dev2
281
+ note "Hopefully most bugs will be found and fixed here."
282
+ }
283
+
284
+ task beta "Beta Test" {
285
+ effort 4w
286
+ depends !alpha
287
+ allocate test, dev1
288
+ }
289
+ # *** EXAMPLE: task1 +
290
+ }
291
+ # *** EXAMPLE: test -
292
+ # *** EXAMPLE: task1 -
293
+
294
+ # *** EXAMPLE: task1 +
295
+ # *** EXAMPLE: manual +
296
+ task manual "Manual" {
297
+ # *** EXAMPLE: task1 -
298
+ effort 10w
299
+ depends !deliveries.start
300
+ allocate doc, dev3
301
+ purge chargeset
302
+ chargeset doc
303
+ # *** EXAMPLE: task1 +
304
+ }
305
+ # *** EXAMPLE: manual -
306
+ # *** EXAMPLE: task1 -
307
+
308
+ # *** EXAMPLE: task1 +
309
+ # *** EXAMPLE: deliveries +
310
+ task deliveries "Milestones" {
311
+ # *** EXAMPLE: deliveries -
312
+ # *** EXAMPLE: task1 -
313
+
314
+ # Some milestones have customer payments associated with them. We
315
+ # credit these payments to the 'rev' account.
316
+ # *** EXAMPLE: deliveries +
317
+ purge chargeset
318
+ chargeset rev
319
+
320
+ task start "Project start" {
321
+ # *** EXAMPLE: deliveries -
322
+ # A task that has no duration is a milestone. It only needs a
323
+ # start or end criterion. All other tasks depend on this task.
324
+ # *** EXAMPLE: deliveries +
325
+ start 2002-01-16
326
+ # *** EXAMPLE: deliveries -
327
+ # For some reason the actual start of the project got delayed.
328
+ # We record this, so that we can compare the planned run to the
329
+ # delayed run of the project.
330
+ # *** EXAMPLE: deliveries +
331
+ delayed:start 2002-01-20
332
+ # *** EXAMPLE: deliveries -
333
+ # At the beginning of this task we receive a payment from the
334
+ # customer. This is credited to the account associated with this
335
+ # task when the task starts.
336
+ # *** EXAMPLE: deliveries +
337
+ charge 21000.0 onstart
338
+ }
339
+
340
+ task prev "Technology Preview" {
341
+ depends !!software.backend
342
+ startcredit 31000.0
343
+ }
344
+
345
+ task beta "Beta version" {
346
+ depends !!test.alpha
347
+ charge 13000.0 onstart
348
+ }
349
+
350
+ task done "Ship Product to Customer" {
351
+ # *** EXAMPLE: deliveries -
352
+ # The next line can be uncommented to trigger a warning about
353
+ # the project being late. For all tasks, limits for the start and
354
+ # end values can be specified. Those limits are checked after the
355
+ # project has been scheduled. For all violated limits a warning
356
+ # is issued.
357
+ # *** EXAMPLE: deliveries +
358
+ # maxend 2002-04-17
359
+ depends !!test.beta, !!manual
360
+ charge 33000.0 onstart
361
+ }
362
+ # *** EXAMPLE: task1 +
363
+ }
364
+ }
365
+ # *** EXAMPLE: deliveries -
366
+ # *** EXAMPLE: task1 -
367
+
368
+ # Now the project has been specified completely. Stopping here would
369
+ # result in a valid TaskJuggler file that could be processed and
370
+ # scheduled. But no reports would be generated to visualize the
371
+ # results.
372
+
373
+ # A traditional Gantt chart with a project overview.
374
+ # *** EXAMPLE: planoverview +
375
+ htmltaskreport "ProjectPlanOverview.html" {
376
+ prolog '
377
+ == Accounting Software Project ==
378
+ ----
379
+ === Project Overview ===
380
+
381
+ The project is structured into 3 phases.
382
+
383
+ # Specification
384
+ # [[Development]]
385
+ # Testing
386
+
387
+ === Project Plan ===
388
+ '
389
+
390
+ headline "Project Plan Overview"
391
+ columns hierarchindex, name, start, end, effort, duration, cost,
392
+ revenue, chart
393
+ # For this report we like to have the abbreviated weekday in front
394
+ # of the date. %a is the tag for this.
395
+ timeformat "%a %Y-%m-%d"
396
+ loadunit days
397
+ hideresource 1
398
+ balance cost rev
399
+ caption '
400
+ All effort values are in man days.
401
+ '
402
+
403
+ epilog '
404
+ === Staffing ===
405
+
406
+ All project phases are properly staffed. See [[ResourceGraph]] for
407
+ detailed resource allocations.
408
+
409
+ === Current Status ===
410
+
411
+ The project started off with a delay of 4 days. This slightly affected
412
+ the original schedule. See [[Deliveries]] for the impact on the
413
+ delivery dates.
414
+ '
415
+ }
416
+ # *** EXAMPLE: planoverview -
417
+
418
+ # A list of tasks showing the resources assigned to each task.
419
+ htmltaskreport "Development.html" {
420
+ headline "Development - Resource Allocation Report"
421
+ columns hierarchindex, name, start, end, effort { title "Work" },
422
+ duration, chart { scale day }
423
+ timeformat "%Y-%m-%d"
424
+ loadunit days
425
+ hideresource ~isleaf()
426
+ sortresources name.up
427
+ }
428
+
429
+ # A list of all tasks with the percentage completed for each task
430
+ htmltaskreport "Deliveries.html" {
431
+ headline "Project Deliveries"
432
+ columns hierarchindex, name, start, end, complete, chart
433
+ timeformat "%a %Y-%m-%d"
434
+ taskroot AcSo.deliveries
435
+ loadunit days
436
+ hideresource 1
437
+ scenarios plan, delayed
438
+ }
439
+
440
+ # A list of all employees with their contact details.
441
+ htmlresourcereport "ContactList.html" {
442
+ headline "Contact list and duty plan"
443
+ columns name, Email { cellurl "mailto:$${Email}" }, Phone,
444
+ chart { scale day }
445
+ hideresource ~isleaf()
446
+ sortresources name.up
447
+ hidetask 1
448
+ }
449
+
450
+ # A graph showing resource allocation. It identifies whether each
451
+ # resource is under- or over-allocated for.
452
+ htmlresourcereport "ResourceGraph.html" {
453
+ headline "Resource Allocation Graph"
454
+ columns no, name, effort, rate, weekly #, utilization, freeload, chart
455
+ loadunit shortauto
456
+ hidetask ~isleaf()
457
+ sorttasks plan.start.up
458
+ }
459
+
460
+ # A list of all project resources, both human and material resources,
461
+ # together with the associated costs.
462
+ htmlresourcereport "ResourceSheet.html" {
463
+ headline "Resource Sheet"
464
+ columns no, name, id, effort, weekly, rate, cost
465
+ loadunit days
466
+ hidetask ~isleaf()
467
+ sorttasks plan.start.up
468
+ balance cost rev
469
+ }
470
+
471
+ # A list of resources and each task associated with each resource.
472
+ htmlresourcereport "ResourceUsage.html" {
473
+ headline "Resource Usage Report"
474
+ columns no, name, chart { scale day } #, utilization, freeload, cost, chart
475
+ loadunit days
476
+ sorttasks plan.start.up
477
+ hidetask ~isleaf()
478
+ end 2002-02-10
479
+ }
480
+
481
+ csvtaskreport "csvtest.csv" {
482
+ columns no, name, id, effort, revenue, cost
483
+ loadunit days
484
+ }
485
+