taskjuggler 0.0.5 → 0.0.6

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 (544) hide show
  1. data/CHANGELOG +2086 -0
  2. data/benchmarks/666tasks.tjp +3183 -0
  3. data/benchmarks/booking.tjp +14 -10
  4. data/doc/AppConfig.html +95 -73
  5. data/doc/Arguments.html +22 -2
  6. data/doc/CHANGELOG.html +2587 -0
  7. data/doc/COPYING.html +21 -1
  8. data/doc/Object.html +161 -122
  9. data/doc/README.html +21 -1
  10. data/doc/RuntimeConfig.html +26 -6
  11. data/doc/String.html +38 -18
  12. data/doc/StringIO.html +579 -0
  13. data/doc/TaskJuggler.html +251 -143
  14. data/doc/TaskJuggler/Account.html +26 -6
  15. data/doc/TaskJuggler/AccountAttribute.html +28 -8
  16. data/doc/TaskJuggler/AccountScenario.html +24 -4
  17. data/doc/TaskJuggler/Allocation.html +30 -10
  18. data/doc/TaskJuggler/AllocationAttribute.html +28 -8
  19. data/doc/TaskJuggler/AttributeBase.html +46 -26
  20. data/doc/TaskJuggler/AttributeDefinition.html +22 -2
  21. data/doc/TaskJuggler/BatchProcessor.html +40 -20
  22. data/doc/TaskJuggler/Booking.html +26 -6
  23. data/doc/TaskJuggler/BookingListAttribute.html +28 -8
  24. data/doc/TaskJuggler/BooleanAttribute.html +28 -8
  25. data/doc/TaskJuggler/CSVFile.html +308 -146
  26. data/doc/TaskJuggler/CellSettingPattern.html +22 -2
  27. data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
  28. data/doc/TaskJuggler/Charge.html +26 -6
  29. data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
  30. data/doc/TaskJuggler/ChargeSet.html +33 -13
  31. data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
  32. data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
  33. data/doc/TaskJuggler/ColumnTable.html +24 -4
  34. data/doc/TaskJuggler/Daemon.html +26 -6
  35. data/doc/TaskJuggler/DateAttribute.html +26 -6
  36. data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
  37. data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
  38. data/doc/TaskJuggler/DurationAttribute.html +28 -8
  39. data/doc/TaskJuggler/FixnumAttribute.html +24 -4
  40. data/doc/TaskJuggler/FlagListAttribute.html +28 -8
  41. data/doc/TaskJuggler/FloatAttribute.html +26 -6
  42. data/doc/TaskJuggler/FormatListAttribute.html +24 -4
  43. data/doc/TaskJuggler/GanttChart.html +147 -126
  44. data/doc/TaskJuggler/GanttContainer.html +34 -14
  45. data/doc/TaskJuggler/GanttHeader.html +28 -8
  46. data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
  47. data/doc/TaskJuggler/GanttLine.html +38 -18
  48. data/doc/TaskJuggler/GanttLoadStack.html +26 -6
  49. data/doc/TaskJuggler/GanttMilestone.html +34 -14
  50. data/doc/TaskJuggler/GanttRouter.html +50 -30
  51. data/doc/TaskJuggler/GanttTaskBar.html +34 -14
  52. data/doc/TaskJuggler/HTMLDocument.html +26 -6
  53. data/doc/TaskJuggler/HTMLGraphics.html +30 -10
  54. data/doc/TaskJuggler/Interval.html +40 -22
  55. data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
  56. data/doc/TaskJuggler/JobInfo.html +24 -4
  57. data/doc/TaskJuggler/Journal.html +226 -147
  58. data/doc/TaskJuggler/JournalEntry.html +22 -2
  59. data/doc/TaskJuggler/JournalEntryList.html +129 -112
  60. data/doc/TaskJuggler/KeywordArray.html +26 -6
  61. data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
  62. data/doc/TaskJuggler/Limits.html +152 -123
  63. data/doc/TaskJuggler/Limits/Limit.html +149 -70
  64. data/doc/TaskJuggler/LimitsAttribute.html +36 -51
  65. data/doc/TaskJuggler/ListAttributeBase.html +24 -4
  66. data/doc/TaskJuggler/Log.html +50 -32
  67. data/doc/TaskJuggler/LogFile.html +37 -17
  68. data/doc/TaskJuggler/LogicalAttribute.html +53 -33
  69. data/doc/TaskJuggler/LogicalExpression.html +26 -6
  70. data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
  71. data/doc/TaskJuggler/LogicalFlag.html +42 -22
  72. data/doc/TaskJuggler/LogicalFunction.html +204 -140
  73. data/doc/TaskJuggler/LogicalOperation.html +135 -111
  74. data/doc/TaskJuggler/Macro.html +22 -2
  75. data/doc/TaskJuggler/MacroParser.html +32 -12
  76. data/doc/TaskJuggler/MacroTable.html +32 -12
  77. data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
  78. data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
  79. data/doc/TaskJuggler/Message.html +24 -4
  80. data/doc/TaskJuggler/MessageHandler.html +24 -4
  81. data/doc/TaskJuggler/Navigator.html +104 -71
  82. data/doc/TaskJuggler/NavigatorElement.html +32 -12
  83. data/doc/TaskJuggler/NikuProject.html +22 -2
  84. data/doc/TaskJuggler/NikuReport.html +310 -228
  85. data/doc/TaskJuggler/NikuResource.html +22 -2
  86. data/doc/TaskJuggler/NodeListAttribute.html +615 -0
  87. data/doc/TaskJuggler/OnShiftCache.html +32 -12
  88. data/doc/TaskJuggler/ProcessIntercom.html +205 -78
  89. data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
  90. data/doc/TaskJuggler/Project.html +708 -660
  91. data/doc/TaskJuggler/ProjectBroker.html +506 -304
  92. data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
  93. data/doc/TaskJuggler/ProjectFileParser.html +429 -373
  94. data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
  95. data/doc/TaskJuggler/ProjectRecord.html +80 -60
  96. data/doc/TaskJuggler/ProjectServer.html +312 -237
  97. data/doc/TaskJuggler/ProjectServerIface.html +101 -43
  98. data/doc/TaskJuggler/PropertyAttribute.html +32 -12
  99. data/doc/TaskJuggler/PropertyList.html +166 -145
  100. data/doc/TaskJuggler/PropertySet.html +254 -224
  101. data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
  102. data/doc/TaskJuggler/Query.html +169 -148
  103. data/doc/TaskJuggler/RTFHandlers.html +622 -0
  104. data/doc/TaskJuggler/RTFNavigator.html +28 -8
  105. data/doc/TaskJuggler/RTFQuery.html +40 -20
  106. data/doc/TaskJuggler/RTFReport.html +62 -25
  107. data/doc/TaskJuggler/RTFReportLink.html +765 -0
  108. data/doc/TaskJuggler/RealFormat.html +26 -6
  109. data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
  110. data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
  111. data/doc/TaskJuggler/Report.html +402 -251
  112. data/doc/TaskJuggler/ReportBase.html +162 -137
  113. data/doc/TaskJuggler/ReportContext.html +112 -29
  114. data/doc/TaskJuggler/ReportServer.html +89 -64
  115. data/doc/TaskJuggler/ReportServerIface.html +75 -55
  116. data/doc/TaskJuggler/ReportServerRecord.html +54 -31
  117. data/doc/TaskJuggler/ReportServlet.html +980 -0
  118. data/doc/TaskJuggler/ReportTable.html +41 -21
  119. data/doc/TaskJuggler/ReportTableCell.html +214 -170
  120. data/doc/TaskJuggler/ReportTableColumn.html +30 -10
  121. data/doc/TaskJuggler/ReportTableLegend.html +36 -16
  122. data/doc/TaskJuggler/ReportTableLine.html +32 -12
  123. data/doc/TaskJuggler/Resource.html +99 -87
  124. data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
  125. data/doc/TaskJuggler/ResourceListRE.html +47 -26
  126. data/doc/TaskJuggler/ResourceScenario.html +403 -437
  127. data/doc/TaskJuggler/RichText.html +26 -6
  128. data/doc/TaskJuggler/RichTextAttribute.html +50 -30
  129. data/doc/TaskJuggler/RichTextDocument.html +37 -17
  130. data/doc/TaskJuggler/RichTextElement.html +475 -413
  131. data/doc/TaskJuggler/RichTextException.html +22 -2
  132. data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
  133. data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
  134. data/doc/TaskJuggler/RichTextImage.html +22 -2
  135. data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
  136. data/doc/TaskJuggler/RichTextParser.html +56 -34
  137. data/doc/TaskJuggler/RichTextScanner.html +82 -61
  138. data/doc/TaskJuggler/RichTextSnip.html +34 -14
  139. data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
  140. data/doc/TaskJuggler/Scenario.html +22 -2
  141. data/doc/TaskJuggler/ScenarioData.html +30 -46
  142. data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
  143. data/doc/TaskJuggler/Scoreboard.html +42 -22
  144. data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
  145. data/doc/TaskJuggler/SheetReceiver.html +333 -295
  146. data/doc/TaskJuggler/SheetSender.html +253 -230
  147. data/doc/TaskJuggler/Shift.html +26 -6
  148. data/doc/TaskJuggler/ShiftAssignment.html +89 -73
  149. data/doc/TaskJuggler/ShiftAssignments.html +226 -234
  150. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
  151. data/doc/TaskJuggler/ShiftScenario.html +28 -8
  152. data/doc/TaskJuggler/SortListAttribute.html +34 -14
  153. data/doc/TaskJuggler/SourceFileInfo.html +24 -4
  154. data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
  155. data/doc/TaskJuggler/StatusSheetReport.html +168 -153
  156. data/doc/TaskJuggler/StatusSheetSender.html +24 -3
  157. data/doc/TaskJuggler/StringAttribute.html +38 -18
  158. data/doc/TaskJuggler/SymbolAttribute.html +32 -12
  159. data/doc/TaskJuggler/SyntaxReference.html +40 -20
  160. data/doc/TaskJuggler/TOCEntry.html +26 -6
  161. data/doc/TaskJuggler/TSResourceRecord.html +22 -2
  162. data/doc/TaskJuggler/TSTaskRecord.html +22 -2
  163. data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
  164. data/doc/TaskJuggler/TableOfContents.html +26 -6
  165. data/doc/TaskJuggler/TableReport.html +937 -904
  166. data/doc/TaskJuggler/Task.html +55 -36
  167. data/doc/TaskJuggler/TaskDependency.html +24 -4
  168. data/doc/TaskJuggler/TaskListAttribute.html +50 -30
  169. data/doc/TaskJuggler/TaskListRE.html +27 -7
  170. data/doc/TaskJuggler/TaskScenario.html +1273 -1153
  171. data/doc/TaskJuggler/TextFormatter.html +28 -8
  172. data/doc/TaskJuggler/TextParser.html +585 -338
  173. data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
  174. data/doc/TaskJuggler/TextParser/Rule.html +95 -73
  175. data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
  176. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
  177. data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
  178. data/doc/TaskJuggler/TextReport.html +28 -8
  179. data/doc/TaskJuggler/TextScanner.html +400 -1404
  180. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
  181. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
  182. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
  183. data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
  184. data/doc/TaskJuggler/TimeSheet.html +48 -28
  185. data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
  186. data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
  187. data/doc/TaskJuggler/TimeSheetReport.html +154 -133
  188. data/doc/TaskJuggler/TimeSheetSender.html +24 -3
  189. data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
  190. data/doc/TaskJuggler/TimeSheets.html +26 -6
  191. data/doc/TaskJuggler/Tj3AppBase.html +85 -58
  192. data/doc/TaskJuggler/Tj3Client.html +292 -238
  193. data/doc/TaskJuggler/Tj3Daemon.html +159 -74
  194. data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
  195. data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
  196. data/doc/TaskJuggler/Tj3SsSender.html +53 -26
  197. data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
  198. data/doc/TaskJuggler/Tj3TsSender.html +26 -6
  199. data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
  200. data/doc/TaskJuggler/TjException.html +22 -2
  201. data/doc/TaskJuggler/TjTime.html +216 -160
  202. data/doc/TaskJuggler/TjpExample.html +34 -14
  203. data/doc/TaskJuggler/TjpExportRE.html +403 -407
  204. data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
  205. data/doc/TaskJuggler/URLParameter.html +649 -0
  206. data/doc/TaskJuggler/UserManual.html +42 -22
  207. data/doc/TaskJuggler/WebServer.html +702 -0
  208. data/doc/TaskJuggler/WorkingHours.html +38 -18
  209. data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
  210. data/doc/TaskJuggler/XMLBlob.html +24 -4
  211. data/doc/TaskJuggler/XMLComment.html +24 -4
  212. data/doc/TaskJuggler/XMLDocument.html +30 -10
  213. data/doc/TaskJuggler/XMLElement.html +34 -14
  214. data/doc/TaskJuggler/XMLNamedText.html +22 -2
  215. data/doc/TaskJuggler/XMLText.html +24 -4
  216. data/doc/index.html +1841 -1666
  217. data/doc/lib/AccountScenario_rb.html +1 -1
  218. data/doc/lib/Account_rb.html +1 -1
  219. data/doc/lib/Allocation_rb.html +1 -1
  220. data/doc/lib/AppConfig_rb.html +2 -2
  221. data/doc/lib/AttributeBase_rb.html +1 -1
  222. data/doc/lib/AttributeDefinition_rb.html +1 -1
  223. data/doc/lib/Attributes_rb.html +2 -2
  224. data/doc/lib/BatchProcessor_rb.html +1 -1
  225. data/doc/lib/Booking_rb.html +1 -1
  226. data/doc/lib/ChargeSet_rb.html +1 -1
  227. data/doc/lib/Charge_rb.html +1 -1
  228. data/doc/lib/HTMLDocument_rb.html +1 -1
  229. data/doc/lib/Interval_rb.html +1 -1
  230. data/doc/lib/Journal_rb.html +2 -2
  231. data/doc/lib/KeywordArray_rb.html +1 -1
  232. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  233. data/doc/lib/Limits_rb.html +2 -2
  234. data/doc/lib/LogFile_rb.html +2 -2
  235. data/doc/lib/Log_rb.html +1 -1
  236. data/doc/lib/LogicalExpression_rb.html +1 -1
  237. data/doc/lib/LogicalFunction_rb.html +2 -2
  238. data/doc/lib/LogicalOperation_rb.html +2 -2
  239. data/doc/lib/MacroParser_rb.html +1 -1
  240. data/doc/lib/MacroTable_rb.html +1 -1
  241. data/doc/lib/MessageHandler_rb.html +1 -1
  242. data/doc/lib/Message_rb.html +1 -1
  243. data/doc/lib/ProjectFileParser_rb.html +4 -8
  244. data/doc/lib/ProjectFileScanner_rb.html +67 -0
  245. data/doc/lib/Project_rb.html +2 -2
  246. data/doc/lib/PropertyList_rb.html +2 -2
  247. data/doc/lib/PropertySet_rb.html +2 -2
  248. data/doc/lib/PropertyTreeNode_rb.html +2 -2
  249. data/doc/lib/Query_rb.html +2 -2
  250. data/doc/lib/RTFHandlers_rb.html +73 -0
  251. data/doc/lib/RTFNavigator_rb.html +1 -1
  252. data/doc/lib/RTFQuery_rb.html +1 -1
  253. data/doc/lib/RTFReportLink_rb.html +71 -0
  254. data/doc/lib/RTFReport_rb.html +2 -2
  255. data/doc/lib/RealFormat_rb.html +1 -1
  256. data/doc/lib/ResourceScenario_rb.html +2 -2
  257. data/doc/lib/Resource_rb.html +2 -2
  258. data/doc/lib/RichTextDocument_rb.html +1 -1
  259. data/doc/lib/RichTextElement_rb.html +2 -2
  260. data/doc/lib/RichTextFunctionExample_rb.html +1 -1
  261. data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
  262. data/doc/lib/RichTextParser_rb.html +2 -2
  263. data/doc/lib/RichTextScanner_rb.html +2 -2
  264. data/doc/lib/RichTextSnip_rb.html +1 -1
  265. data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
  266. data/doc/lib/RichText_rb.html +1 -1
  267. data/doc/lib/RuntimeConfig_rb.html +1 -1
  268. data/doc/lib/ScenarioData_rb.html +2 -2
  269. data/doc/lib/Scenario_rb.html +1 -1
  270. data/doc/lib/Scoreboard_rb.html +1 -1
  271. data/doc/lib/SheetHandlerBase_rb.html +1 -1
  272. data/doc/lib/SheetReceiver_rb.html +2 -2
  273. data/doc/lib/SheetSender_rb.html +4 -2
  274. data/doc/lib/ShiftAssignments_rb.html +4 -2
  275. data/doc/lib/ShiftScenario_rb.html +1 -1
  276. data/doc/lib/Shift_rb.html +1 -1
  277. data/doc/lib/SourceFileInfo_rb.html +1 -1
  278. data/doc/lib/StatusSheetReceiver_rb.html +2 -2
  279. data/doc/lib/StatusSheetSender_rb.html +2 -2
  280. data/doc/lib/SyntaxReference_rb.html +1 -1
  281. data/doc/lib/TOCEntry_rb.html +1 -1
  282. data/doc/lib/TableColumnDefinition_rb.html +2 -2
  283. data/doc/lib/TableOfContents_rb.html +1 -1
  284. data/doc/lib/TaskDependency_rb.html +1 -1
  285. data/doc/lib/TaskJuggler_rb.html +2 -2
  286. data/doc/lib/TaskScenario_rb.html +2 -2
  287. data/doc/lib/Task_rb.html +2 -2
  288. data/doc/lib/TextFormatter_rb.html +1 -1
  289. data/doc/lib/TextParser/Pattern_rb.html +1 -1
  290. data/doc/lib/TextParser/Rule_rb.html +2 -2
  291. data/doc/lib/TextParser/StackElement_rb.html +2 -2
  292. data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
  293. data/doc/lib/TextParser_rb.html +2 -2
  294. data/doc/lib/TextScanner_rb.html +6 -2
  295. data/doc/lib/TimeSheetReceiver_rb.html +2 -2
  296. data/doc/lib/TimeSheetSender_rb.html +2 -2
  297. data/doc/lib/TimeSheetSummary_rb.html +2 -2
  298. data/doc/lib/TimeSheets_rb.html +2 -2
  299. data/doc/lib/Tj3AppBase_rb.html +2 -2
  300. data/doc/lib/Tj3Config_rb.html +2 -2
  301. data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
  302. data/doc/lib/TjException_rb.html +1 -1
  303. data/doc/lib/TjTime_rb.html +2 -2
  304. data/doc/lib/TjpExample_rb.html +1 -1
  305. data/doc/lib/TjpSyntaxRules_rb.html +2 -2
  306. data/doc/lib/URLParameter_rb.html +67 -0
  307. data/doc/lib/UTF8String_rb.html +1 -1
  308. data/doc/lib/UserManual_rb.html +1 -1
  309. data/doc/lib/WorkingHours_rb.html +1 -1
  310. data/doc/lib/XMLDocument_rb.html +2 -2
  311. data/doc/lib/XMLElement_rb.html +1 -1
  312. data/doc/lib/daemon/Daemon_rb.html +1 -1
  313. data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
  314. data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
  315. data/doc/lib/daemon/ProjectServer_rb.html +2 -2
  316. data/doc/lib/daemon/ReportServer_rb.html +2 -2
  317. data/doc/lib/daemon/WebServer_rb.html +75 -0
  318. data/doc/lib/deep_copy_rb.html +2 -2
  319. data/doc/lib/reports/CSVFile_rb.html +2 -2
  320. data/doc/lib/reports/ColumnTable_rb.html +1 -1
  321. data/doc/lib/reports/GanttChart_rb.html +2 -2
  322. data/doc/lib/reports/GanttContainer_rb.html +1 -1
  323. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  324. data/doc/lib/reports/GanttHeader_rb.html +1 -1
  325. data/doc/lib/reports/GanttLine_rb.html +1 -1
  326. data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
  327. data/doc/lib/reports/GanttMilestone_rb.html +1 -1
  328. data/doc/lib/reports/GanttRouter_rb.html +1 -1
  329. data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
  330. data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
  331. data/doc/lib/reports/Navigator_rb.html +2 -2
  332. data/doc/lib/reports/NikuReport_rb.html +2 -2
  333. data/doc/lib/reports/ReportBase_rb.html +2 -2
  334. data/doc/lib/reports/ReportContext_rb.html +2 -2
  335. data/doc/lib/reports/ReportTableCell_rb.html +2 -2
  336. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  337. data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
  338. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  339. data/doc/lib/reports/ReportTable_rb.html +2 -2
  340. data/doc/lib/reports/Report_rb.html +2 -2
  341. data/doc/lib/reports/ResourceListRE_rb.html +2 -2
  342. data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
  343. data/doc/lib/reports/TableReport_rb.html +2 -2
  344. data/doc/lib/reports/TaskListRE_rb.html +2 -2
  345. data/doc/lib/reports/TextReport_rb.html +1 -1
  346. data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
  347. data/doc/lib/reports/TjpExportRE_rb.html +2 -2
  348. data/doc/lib/ruby-signal-bug_rb.html +1 -1
  349. data/doc/lib/taskjuggler3_rb.html +2 -2
  350. data/doc/lib/tj3client_rb.html +2 -2
  351. data/doc/lib/tj3d_rb.html +2 -2
  352. data/doc/lib/tj3man_rb.html +1 -1
  353. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  354. data/doc/lib/tj3ss_sender_rb.html +2 -2
  355. data/doc/lib/tj3ts_receiver_rb.html +2 -2
  356. data/doc/lib/tj3ts_sender_rb.html +1 -1
  357. data/doc/lib/tj3ts_summary_rb.html +1 -1
  358. data/doc/rdoc.css +9 -4
  359. data/examples/tutorial.tjp +17 -15
  360. data/gem_spec.rb +3 -0
  361. data/lib/AppConfig.rb +3 -1
  362. data/lib/Attributes.rb +10 -8
  363. data/lib/Journal.rb +55 -20
  364. data/lib/Limits.rb +72 -46
  365. data/lib/LogFile.rb +3 -3
  366. data/lib/LogicalFunction.rb +19 -6
  367. data/lib/LogicalOperation.rb +5 -1
  368. data/lib/Project.rb +37 -9
  369. data/lib/ProjectFileParser.rb +25 -22
  370. data/lib/ProjectFileScanner.rb +365 -0
  371. data/lib/PropertyList.rb +2 -1
  372. data/lib/PropertySet.rb +14 -4
  373. data/lib/PropertyTreeNode.rb +42 -29
  374. data/lib/Query.rb +3 -1
  375. data/lib/RTFHandlers.rb +35 -0
  376. data/lib/RTFReport.rb +23 -6
  377. data/lib/RTFReportLink.rb +72 -0
  378. data/lib/Resource.rb +8 -16
  379. data/lib/ResourceScenario.rb +1 -22
  380. data/lib/RichTextElement.rb +42 -0
  381. data/lib/RichTextParser.rb +6 -4
  382. data/lib/RichTextScanner.rb +5 -5
  383. data/lib/RichTextSyntaxRules.rb +48 -10
  384. data/lib/ScenarioData.rb +5 -3
  385. data/lib/SheetReceiver.rb +24 -6
  386. data/lib/SheetSender.rb +17 -13
  387. data/lib/ShiftAssignments.rb +56 -52
  388. data/lib/StatusSheetReceiver.rb +1 -0
  389. data/lib/StatusSheetSender.rb +1 -0
  390. data/lib/TableColumnDefinition.rb +4 -2
  391. data/lib/Task.rb +8 -9
  392. data/lib/TaskJuggler.rb +21 -11
  393. data/lib/TaskScenario.rb +61 -26
  394. data/lib/TextParser.rb +268 -106
  395. data/lib/TextParser/Rule.rb +4 -2
  396. data/lib/TextParser/StackElement.rb +6 -4
  397. data/lib/TextScanner.rb +283 -700
  398. data/lib/TimeSheetReceiver.rb +1 -0
  399. data/lib/TimeSheetSender.rb +1 -0
  400. data/lib/TimeSheetSummary.rb +51 -26
  401. data/lib/TimeSheets.rb +1 -1
  402. data/lib/Tj3AppBase.rb +8 -1
  403. data/lib/Tj3Config.rb +1 -1
  404. data/lib/TjTime.rb +5 -0
  405. data/lib/TjpSyntaxRules.rb +360 -144
  406. data/lib/URLParameter.rb +30 -0
  407. data/lib/XMLDocument.rb +2 -2
  408. data/lib/daemon/ProcessIntercom.rb +50 -9
  409. data/lib/daemon/ProjectBroker.rb +63 -10
  410. data/lib/daemon/ProjectServer.rb +47 -16
  411. data/lib/daemon/ReportServer.rb +9 -4
  412. data/lib/daemon/WebServer.rb +204 -0
  413. data/lib/deep_copy.rb +4 -1
  414. data/lib/reports/CSVFile.rb +150 -66
  415. data/lib/reports/GanttChart.rb +2 -1
  416. data/lib/reports/Navigator.rb +18 -5
  417. data/lib/reports/NikuReport.rb +32 -2
  418. data/lib/reports/Report.rb +65 -37
  419. data/lib/reports/ReportBase.rb +14 -9
  420. data/lib/reports/ReportContext.rb +19 -4
  421. data/lib/reports/ReportTable.rb +2 -2
  422. data/lib/reports/ReportTableCell.rb +54 -30
  423. data/lib/reports/ResourceListRE.rb +4 -3
  424. data/lib/reports/StatusSheetReport.rb +8 -13
  425. data/lib/reports/TableReport.rb +47 -32
  426. data/lib/reports/TaskListRE.rb +3 -3
  427. data/lib/reports/TimeSheetReport.rb +14 -5
  428. data/lib/reports/TjpExportRE.rb +14 -19
  429. data/lib/taskjuggler3.rb +15 -0
  430. data/lib/tj3client.rb +9 -7
  431. data/lib/tj3d.rb +38 -10
  432. data/lib/tj3ss_sender.rb +7 -0
  433. data/lib/tj3ts_receiver.rb +1 -0
  434. data/manual/Day_To_Day_Juggling +1 -1
  435. data/manual/Rich_Text_Attributes +8 -0
  436. data/manual/TaskJuggler_2x_Migration +7 -0
  437. data/manual/The_TaskJuggler_Syntax +20 -6
  438. data/prj_cfg.rb +3 -2
  439. data/tasks/changelog.rake +36 -0
  440. data/tasks/csts.rake +2 -3
  441. data/tasks/gem.rake +10 -0
  442. data/tasks/missing.rake +0 -17
  443. data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
  444. data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
  445. data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
  446. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
  447. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
  448. data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
  449. data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
  450. data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
  451. data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
  452. data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
  453. data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
  454. data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
  455. data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
  456. data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
  457. data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
  458. data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
  459. data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
  460. data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
  461. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
  462. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
  463. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
  464. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
  465. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
  466. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
  467. data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
  468. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
  469. data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
  470. data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
  471. data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
  472. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
  473. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
  474. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
  475. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
  476. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
  477. data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
  478. data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
  479. data/test/TestSuite/StatusSheets/run +3 -2
  480. data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
  481. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
  482. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
  483. data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
  484. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
  485. data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
  486. data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
  487. data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
  488. data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
  489. data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
  490. data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
  491. data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
  492. data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
  493. data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
  494. data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
  495. data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
  496. data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
  497. data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
  498. data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
  499. data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
  500. data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
  501. data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
  502. data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
  503. data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
  504. data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
  505. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  506. data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
  507. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
  508. data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
  509. data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
  510. data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
  511. data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
  512. data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
  513. data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
  514. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  515. data/test/TestSuite/TimeSheets/run +5 -5
  516. data/test/test_CSVFile.rb +75 -0
  517. data/test/test_Limits.rb +63 -5
  518. data/test/test_ProjectFileScanner.rb +163 -0
  519. data/test/test_ReportGenerator.rb +81 -0
  520. data/test/test_RichText.rb +21 -3
  521. data/test/test_Scheduler.rb +1 -1
  522. data/test/test_ShiftAssignments.rb +4 -4
  523. data/test/test_Syntax.rb +1 -1
  524. data/test/test_URLParameter.rb +30 -0
  525. metadata +126 -32
  526. data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
  527. data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
  528. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
  529. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
  530. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
  531. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
  532. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
  533. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
  534. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
  535. data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
  536. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
  537. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
  538. data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
  539. data/test/TestSuite/TimeSheets/receiver.log +0 -102
  540. data/test/TestSuite/TimeSheets/sender.log +0 -794
  541. data/test/TestSuite/TimeSheets/summary.log +0 -884
  542. data/test/TestSuite/TimeSheets/timesheets.log +0 -45
  543. data/test/TestSuite/TimeSheets/tj3d.log +0 -292
  544. data/test/test_TextScanner.rb +0 -95
@@ -39,15 +39,16 @@ class TaskJuggler
39
39
  resourceList.setSorting(@report.get('sortResources'))
40
40
  resourceList = filterResourceList(resourceList, nil,
41
41
  @report.get('hideResource'),
42
- @report.get('rollupResource'))
43
- resourceList.query = @report.project.reportContext.query
42
+ @report.get('rollupResource'),
43
+ @report.get('openNodes'))
44
+ resourceList.query = @report.project.reportContexts.last.query
44
45
  resourceList.sort!
45
46
 
46
47
  # Prepare the task list. Don't filter it yet! It would break the
47
48
  # *_() LogicalFunctions.
48
49
  taskList = PropertyList.new(@project.tasks)
49
50
  taskList.setSorting(@report.get('sortTasks'))
50
- taskList.query = @report.project.reportContext.query
51
+ taskList.query = @report.project.reportContexts.last.query
51
52
  taskList.sort!
52
53
 
53
54
  adjustReportPeriod(taskList, @report.get('scenarios'),
@@ -74,7 +74,8 @@ class TaskJuggler
74
74
  resourceList.setSorting(@report.get('sortResources'))
75
75
  resourceList = filterResourceList(resourceList, nil,
76
76
  @report.get('hideResource'),
77
- @report.get('rollupResource'))
77
+ @report.get('rollupResource'),
78
+ @report.get('openNodes'))
78
79
  # Prepare a template for the Query we will use to get all the data.
79
80
  scenarioIdx = a('scenarios')[0]
80
81
  queryAttrs = { 'project' => @project,
@@ -94,7 +95,7 @@ class TaskJuggler
94
95
  taskList = PropertyList.new(@project.tasks)
95
96
  taskList.setSorting(@report.get('sortTasks'))
96
97
  taskList = filterTaskList(taskList, nil, @report.get('hideTask'),
97
- @report.get('rollupTask'))
98
+ @report.get('rollupTask'), @report.get('openNodes'))
98
99
  taskList.sort!
99
100
 
100
101
  resourceList.each do |resource|
@@ -118,16 +119,10 @@ class TaskJuggler
118
119
  @managers << (manager = ManagerStatusRecord.new(resource))
119
120
 
120
121
  topLevelTasks.each do |task|
121
- entries = @project['journal'].entries(a('start'), a('end'), task)
122
- # Get a list of all current Entries of this task. This list may not
123
- # contain all entries of the previous list, but it will for sure
124
- # contain older entries with higher alert levels.
125
- oldEntries = @project['journal'].currentEntries(a('end'), task,
126
- 0, a('start'))
127
- # Remove entries that are in both lists.
128
- oldEntries.delete_if { |e| entries.include?(e) }
129
- # Combine the list with oldEntries going first.
130
- entries = oldEntries + entries
122
+ # Get a list of all the current Journal entries for this task and
123
+ # all it's sub tasks.
124
+ entries = @project['journal'].currentEntriesR(a('end'), task,
125
+ 0, a('start') + 1)
131
126
  next if entries.empty?
132
127
 
133
128
  manager.responsibilities << ManagerResponsibilities.new(task, entries)
@@ -185,7 +180,7 @@ class TaskJuggler
185
180
  end
186
181
  @file << "\n"
187
182
  end
188
- @file << " # author #{entry.author.fullId}\n"
183
+ @file << " # author #{entry.author.fullId}\n" if entry.author
189
184
  if entry.summary
190
185
  @file << " # summary -8<-\n" +
191
186
  indentBlock(4, entry.summary.richText.inputText) +
@@ -26,33 +26,35 @@ class TaskJuggler
26
26
  attr_reader :legend
27
27
 
28
28
  @@propertiesById = {
29
- # ID Header Indent Align Scen Spec.
30
- 'alert' => [ 'Alert', true, :left, false ],
31
- 'alertmessage' => [ 'Alert Message', false, :left, false ],
32
- 'alertsummary' => [ 'Alert Summary', false, :left, false ],
33
- 'alerttrend' => [ 'Alert Trend', false, :left, false ],
34
- 'complete' => [ 'Completion', false, :right, true ],
35
- 'cost' => [ 'Cost', true, :right, true ],
36
- 'duration' => [ 'Duration', true, :right, true ],
37
- 'effort' => [ 'Effort', true, :right, true ],
38
- 'effortdone' => [ 'Effort Done', true, :right, true ],
39
- 'effortleft' => [ 'Effort Left', true, :right, true ],
40
- 'freetime' => [ 'Free Time', true, :right, true ],
41
- 'followers' => [ 'Followers', false, :left, true ],
42
- 'id' => [ 'Id', false, :left, false ],
43
- 'journal' => [ 'Journal', false, :left, false ],
44
- 'line' => [ 'Line No.', false, :right, false ],
45
- 'name' => [ 'Name', true, :left, false ],
46
- 'no' => [ 'No.', false, :right, false ],
47
- 'precursors' => [ 'Precursors', false, :left, true ],
48
- 'rate' => [ 'Rate', true, :right, true ],
49
- 'resources' => [ 'Resources', false, :left, true ],
50
- 'responsible' => [ 'Responsible', false, :left, true ],
51
- 'revenue' => [ 'Revenue', true, :right, true ],
52
- 'scenario' => [ 'Scenario', false, :left, true ],
53
- 'status' => [ 'Status', false, :left, true ],
54
- 'targets' => [ 'Targets', false, :left, true ],
55
- 'wbs' => [ 'WBS', false, :left, false ]
29
+ # ID Header Indent Align Scen Spec.
30
+ 'alert' => [ 'Alert', true, :left, false ],
31
+ 'alertmessages' => [ 'Alert Messages', false, :left, false ],
32
+ 'alertsummaries' => [ 'Alert Summaries', false, :left, false ],
33
+ 'alerttrend' => [ 'Alert Trend', false, :left, false ],
34
+ 'complete' => [ 'Completion', false, :right, true ],
35
+ 'cost' => [ 'Cost', true, :right, true ],
36
+ 'duration' => [ 'Duration', true, :right, true ],
37
+ 'effort' => [ 'Effort', true, :right, true ],
38
+ 'effortdone' => [ 'Effort Done', true, :right, true ],
39
+ 'effortleft' => [ 'Effort Left', true, :right, true ],
40
+ 'freetime' => [ 'Free Time', true, :right, true ],
41
+ 'followers' => [ 'Followers', false, :left, true ],
42
+ 'id' => [ 'Id', false, :left, false ],
43
+ 'journal' => [ 'Journal', false, :left, false ],
44
+ 'journalmessages' => [ 'Journal Messages', false, :left, false ],
45
+ 'journalsummaries' => [ 'Journal Summaries', false, :left, false ],
46
+ 'line' => [ 'Line No.', false, :right, false ],
47
+ 'name' => [ 'Name', true, :left, false ],
48
+ 'no' => [ 'No.', false, :right, false ],
49
+ 'precursors' => [ 'Precursors', false, :left, true ],
50
+ 'rate' => [ 'Rate', true, :right, true ],
51
+ 'resources' => [ 'Resources', false, :left, true ],
52
+ 'responsible' => [ 'Responsible', false, :left, true ],
53
+ 'revenue' => [ 'Revenue', true, :right, true ],
54
+ 'scenario' => [ 'Scenario', false, :left, true ],
55
+ 'status' => [ 'Status', false, :left, true ],
56
+ 'targets' => [ 'Targets', false, :left, true ],
57
+ 'wbs' => [ 'WBS', false, :left, false ]
56
58
  }
57
59
  @@propertiesByType = {
58
60
  # Type Indent Align
@@ -84,6 +86,9 @@ class TaskJuggler
84
86
  def to_html
85
87
  html = []
86
88
 
89
+ html << XMLComment.new("Dynamic Report ID: " +
90
+ "#{@report.project.reportContexts.last.
91
+ dynamicReportId}")
87
92
  html << rt_to_html('header')
88
93
  html << (tableFrame = generateHtmlTableFrame)
89
94
 
@@ -333,7 +338,7 @@ class TaskJuggler
333
338
  taskList.each do |task|
334
339
  # Get the current Query from the report context and create a copy. We
335
340
  # are going to modify it.
336
- query = @project.reportContext.query.dup
341
+ query = @project.reportContexts.last.query.dup
337
342
  query.property = task
338
343
  query.scopeProperty = scopeLine ? scopeLine.property : nil
339
344
 
@@ -363,7 +368,7 @@ class TaskJuggler
363
368
  # filter.
364
369
  resourceList.setSorting(a('sortResources'))
365
370
  assignedResourceList = filterResourceList(resourceList, task,
366
- a('hideResource'), a('rollupResource'))
371
+ a('hideResource'), a('rollupResource'), a('openNodes'))
367
372
  assignedResourceList.sort!
368
373
  lineNo = generateResourceList(assignedResourceList, nil, line)
369
374
  end
@@ -397,7 +402,7 @@ class TaskJuggler
397
402
  resourceList.each do |resource|
398
403
  # Get the current Query from the report context and create a copy. We
399
404
  # are going to modify it.
400
- query = @project.reportContext.query.dup
405
+ query = @project.reportContexts.last.query.dup
401
406
  query.property = resource
402
407
  query.scopeProperty = scopeLine ? scopeLine.property : nil
403
408
 
@@ -427,8 +432,8 @@ class TaskJuggler
427
432
  # filter.
428
433
  taskList.setSorting(a('sortTasks'))
429
434
  assignedTaskList = filterTaskList(taskList, resource,
430
- a('hideTask'),
431
- a('rollupTask'))
435
+ a('hideTask'), a('rollupTask'),
436
+ a('openNodes'))
432
437
  assignedTaskList.sort!
433
438
  lineNo = generateTaskList(assignedTaskList, nil, line)
434
439
  end
@@ -629,6 +634,11 @@ class TaskJuggler
629
634
  cellColor = columnDef.cellColor.getPattern(query)
630
635
  cell.cellColor = cellColor if cellColor
631
636
 
637
+ # Replace the default cell alignment if the user has requested a custom
638
+ # alignment.
639
+ hAlign = columnDef.hAlign.getPattern(query)
640
+ cell.alignment = hAlign if hAlign
641
+
632
642
  # If the user has requested a custom tooltip, add it to the cell.
633
643
  cell.tooltip = columnDef.tooltip.getPattern(query) || nil
634
644
 
@@ -710,6 +720,11 @@ class TaskJuggler
710
720
  fontColor = columnDef.fontColor.getPattern(query)
711
721
  cell.fontColor = fontColor if fontColor
712
722
 
723
+ # Replace the default cell alignment if the user has requested a custom
724
+ # alignment.
725
+ hAlign = columnDef.hAlign.getPattern(query)
726
+ cell.alignment = hAlign if hAlign
727
+
713
728
  # Register the custom tooltip if the user has requested one.
714
729
  cdTooltip = columnDef.tooltip.getPattern(query)
715
730
  cell.tooltip = cdTooltip if cdTooltip
@@ -38,15 +38,15 @@ class TaskJuggler
38
38
  taskList = PropertyList.new(@project.tasks)
39
39
  taskList.setSorting(@report.get('sortTasks'))
40
40
  taskList = filterTaskList(taskList, nil, @report.get('hideTask'),
41
- @report.get('rollupTask'))
42
- taskList.query = @report.project.reportContext.query
41
+ @report.get('rollupTask'), @report.get('openNodes'))
42
+ taskList.query = @report.project.reportContexts.last.query
43
43
  taskList.sort!
44
44
 
45
45
  # Prepare the resource list. Don't filter it yet! It would break the
46
46
  # *_() LogicalFunctions.
47
47
  resourceList = PropertyList.new(@project.resources)
48
48
  resourceList.setSorting(@report.get('sortResources'))
49
- resourceList.query = @report.project.reportContext.query
49
+ resourceList.query = @report.project.reportContexts.last.query
50
50
  resourceList.sort!
51
51
 
52
52
  adjustReportPeriod(taskList, @report.get('scenarios'),
@@ -128,10 +128,18 @@ EOT
128
128
  # newtask new.task.id "A task title" {
129
129
  # work X%
130
130
  # remaining Y.Yd
131
+ # status green "Your headline here!" {
132
+ # summary -8<-
133
+ # A summary text
134
+ # -8<-
135
+ # details -8<-
136
+ # Some more details
137
+ # ->8-
138
+ # }
131
139
  # }
132
140
 
133
141
  # You can use the following section to report personal notes.
134
- # status green "A headline" {
142
+ # status green "Your headline here!" {
135
143
  # summary -8<-
136
144
  # A summary text
137
145
  # ->8-
@@ -169,7 +177,8 @@ EOT
169
177
  resourceList.setSorting(@report.get('sortResources'))
170
178
  resourceList = filterResourceList(resourceList, nil,
171
179
  @report.get('hideResource'),
172
- @report.get('rollupResource'))
180
+ @report.get('rollupResource'),
181
+ @report.get('openNodes'))
173
182
  # Prepare a template for the Query we will use to get all the data.
174
183
  scenarioIdx = a('scenarios')[0]
175
184
  queryAttrs = { 'project' => @project,
@@ -189,7 +198,7 @@ EOT
189
198
  taskList = PropertyList.new(@project.tasks)
190
199
  taskList.setSorting(@report.get('sortTasks'))
191
200
  taskList = filterTaskList(taskList, nil, @report.get('hideTask'),
192
- @report.get('rollupTask'))
201
+ @report.get('rollupTask'), @report.get('openNodes'))
193
202
 
194
203
  records = []
195
204
  resourceList.each do |resource|
@@ -219,8 +228,8 @@ EOT
219
228
  # Now we have to find all the task that the resource is allocated to
220
229
  # during the report period.
221
230
  assignedTaskList = filterTaskList(taskList, resource,
222
- a('hideTask'),
223
- a('rollupTask'))
231
+ a('hideTask'), a('rollupTask'),
232
+ a('openNodes'))
224
233
  queryAttrs['scopeProperty'] = resource
225
234
  assignedTaskList.query = Query.new(queryAttrs)
226
235
  assignedTaskList.sort!
@@ -18,15 +18,10 @@ class TaskJuggler
18
18
  # project data in the TJP syntax format.
19
19
  class TjpExportRE < ReportBase
20
20
 
21
- attr_reader :mainFile
22
-
23
21
  # Create a new object and set some default values.
24
22
  def initialize(report)
25
23
  super(report)
26
24
 
27
- # Indicates whether this is a full .tjp file or just an .tji include file.
28
- @mainFile = a('name')[-4, 4] != '.tji'
29
-
30
25
  @supportedTaskAttrs = %w( booking complete depends flags maxend
31
26
  maxstart minend minstart note priority
32
27
  responsible )
@@ -52,20 +47,21 @@ class TaskJuggler
52
47
  @resourceList = PropertyList.new(@project.resources)
53
48
  @resourceList.setSorting(a('sortResources'))
54
49
  @resourceList = filterResourceList(@resourceList, nil, a('hideResource'),
55
- a('rollupResource'))
50
+ a('rollupResource'), a('openNodes'))
56
51
  @resourceList.sort!
57
52
 
58
53
  # Prepare the task list.
59
54
  @taskList = PropertyList.new(@project.tasks)
60
55
  @taskList.setSorting(a('sortTasks'))
61
- @taskList = filterTaskList(@taskList, nil, a('hideTask'), a('rollupTask'))
56
+ @taskList = filterTaskList(@taskList, nil, a('hideTask'), a('rollupTask'),
57
+ a('openNodes'))
62
58
  @taskList.sort!
63
59
 
64
60
  getBookings
65
61
 
66
62
  @file = ''
67
63
 
68
- generateProjectProperty unless a('definitions').include?('project')
64
+ generateProjectProperty if a('definitions').include?('project')
69
65
 
70
66
  generateFlagDeclaration if a('definitions').include?('flags')
71
67
  generateProjectIDs if a('definitions').include?('projectids')
@@ -136,11 +132,11 @@ class TaskJuggler
136
132
  a('scenarios').each do |scenarioIdx|
137
133
  @taskList.each do |task|
138
134
  pid = task['projectid', scenarioIdx]
139
- projectIDs << pid unless projectIDs.include?(pid)
135
+ projectIDs << pid unless pid.nil? || projectIDs.include?(pid)
140
136
  end
141
137
  end
142
138
 
143
- @file << "projectids #{projectIDs.join(', ')}\n\n"
139
+ @file << "projectids #{projectIDs.join(', ')}\n\n" unless projectIDs.empty?
144
140
  end
145
141
 
146
142
  def generateResourceList
@@ -220,19 +216,18 @@ class TaskJuggler
220
216
  if isLeafTask
221
217
  a('scenarios').each do |scenarioIdx|
222
218
  generateAttribute(task, 'start', indent + 2, scenarioIdx)
223
- unless task['milestone', scenarioIdx]
219
+ if task['milestone', scenarioIdx]
220
+ generateAttributeText('milestone', indent + 2, scenarioIdx)
221
+ else
224
222
  generateAttribute(task, 'end', indent + 2, scenarioIdx)
223
+ generateAttributeText('scheduling ' +
224
+ (task['forward', scenarioIdx] ?
225
+ 'asap' : 'alap'),
226
+ indent + 2, scenarioIdx)
225
227
  end
226
228
  if task['scheduled', scenarioIdx]
227
229
  generateAttributeText('scheduled', indent + 2, scenarioIdx)
228
230
  end
229
- generateAttributeText('scheduling ' +
230
- (task['forward', scenarioIdx] ?
231
- 'asap' : 'alap'),
232
- indent + 2, scenarioIdx)
233
- if task['milestone', scenarioIdx]
234
- generateAttributeText('milestone', indent + 2, scenarioIdx)
235
- end
236
231
  end
237
232
  end
238
233
 
@@ -332,7 +327,7 @@ class TaskJuggler
332
327
  def generateAttributeText(text, indent, scenarioIdx)
333
328
  @file << ' ' * indent
334
329
  tag = ''
335
- unless scenarioIdx.nil?
330
+ if !scenarioIdx.nil? && scenarioIdx != 0
336
331
  tag = @project.scenario(scenarioIdx).id
337
332
  @file << "#{tag}:"
338
333
  end
data/lib/taskjuggler3.rb CHANGED
@@ -57,6 +57,14 @@ def processArguments(argv)
57
57
  'Turn on warnings for requested changes in time sheets') do
58
58
  @warnTsDeltas = true
59
59
  end
60
+ opts.on('--check-syntax',
61
+ 'Only parse the input files and check the syntax.') do
62
+ @checkSyntax = true
63
+ end
64
+ opts.on('--no-reports',
65
+ 'Just schedule the project, but don\'t generate any reports.') do
66
+ @noReports = true
67
+ end
60
68
  opts.on('-o', '--output-dir <directory>', String,
61
69
  'Directory the reports should go into') do |arg|
62
70
  @outputDir = arg + '/'
@@ -106,6 +114,8 @@ def main
106
114
  @maxCpuCores = 1
107
115
  @forceReports = false
108
116
  @warnTsDeltas = false
117
+ @checkSyntax = false
118
+ @noReports = false
109
119
  @outputDir = ''
110
120
  @timeSheets = []
111
121
  @statusSheets = []
@@ -122,6 +132,9 @@ def main
122
132
  tj.warnTsDeltas = @warnTsDeltas
123
133
  keepParser = !@timeSheets.empty? || !@statusSheets.empty?
124
134
  exit 1 unless tj.parse(files, keepParser)
135
+
136
+ exit 0 if @checkSyntax
137
+
125
138
  if !tj.schedule
126
139
  exit 1 unless @forceReports
127
140
  end
@@ -135,6 +148,8 @@ def main
135
148
  exit 1 if !tj.checkStatusSheet(ss, File.read(ss)) || tj.errors > 0
136
149
  end
137
150
 
151
+ exit 0 if @noReports
152
+
138
153
  exit 1 if !tj.generateReports(@outputDir) || tj.errors > 0
139
154
 
140
155
  end
data/lib/tj3client.rb CHANGED
@@ -206,7 +206,7 @@ EOT
206
206
  end
207
207
  rescue
208
208
  error("TaskJuggler server on host '#{@host}' port " +
209
- "#{@port} is not responding: #{$!}")
209
+ "#{@port} is not responding")
210
210
  end
211
211
  end
212
212
 
@@ -222,6 +222,7 @@ EOT
222
222
  $stdout.puts callDaemon(:status, [])
223
223
  when 'terminate'
224
224
  callDaemon(:stop, [])
225
+ info('Daemon terminated')
225
226
  when 'add'
226
227
  # Ask the daemon to create a new ProjectServer process and return a
227
228
  # DRbObject to access it.
@@ -240,6 +241,7 @@ EOT
240
241
  error("Project '#{arg}' not found in list")
241
242
  end
242
243
  end
244
+ info('Project removed')
243
245
  when 'report'
244
246
  # The first value of args is the project ID. The following values
245
247
  # could be either report IDs or TJI file # names ('.' or '*.tji').
@@ -259,7 +261,7 @@ EOT
259
261
  unless failed
260
262
  reportIds.each do |reportId|
261
263
  unless @reportServer.generateReport(@rs_authKey, reportId,
262
- @regExpMode)
264
+ @regExpMode, nil)
263
265
  failed = true
264
266
  break
265
267
  end
@@ -373,11 +375,6 @@ EOT
373
375
  error("Report server termination failed: #{$!}")
374
376
  end
375
377
  @reportServer = nil
376
- begin
377
- @projectServer.dropReportServer(@ps_authKey, @rs_uri)
378
- rescue
379
- error("Cannot drop report server: #{$!}")
380
- end
381
378
  @rs_uri = nil
382
379
  @rs_authKey = nil
383
380
  @projectServer = nil
@@ -431,6 +428,11 @@ EOT
431
428
  true
432
429
  end
433
430
 
431
+ def info(message)
432
+ return if @silent
433
+ $stdout.puts "#{message}"
434
+ end
435
+
434
436
  def error(message)
435
437
  $stderr.puts "ERROR: #{message}"
436
438
  exit 1