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
data/lib/Query.rb CHANGED
@@ -179,7 +179,7 @@ class TaskJuggler
179
179
 
180
180
  # Return the result of the Query as String. The result may be nil.
181
181
  def to_s
182
- @attr ? @attr.to_s(self) : (@string || '')
182
+ @attr ? @attr.to_s(self) : (@rti ? @rti.to_s : (@string || ''))
183
183
  end
184
184
 
185
185
  # Return the result of the Query as Fixnum or Float. The result may be
@@ -207,6 +207,8 @@ class TaskJuggler
207
207
  else
208
208
  @attr.value
209
209
  end
210
+ elsif @rti
211
+ @rti
210
212
  elsif @numerical
211
213
  @numerical
212
214
  else
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby -w
2
+ # encoding: UTF-8
3
+ #
4
+ # = RTFHandlers.rb -- The TaskJuggler III Project Management Software
5
+ #
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 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
+ require 'RTFNavigator'
14
+ require 'RTFQuery'
15
+ require 'RTFReport'
16
+ require 'RTFReportLink'
17
+
18
+ class TaskJuggler
19
+
20
+ # This convenience class creates an Array containing all RichTextFunction
21
+ # objects used by TaskJuggler.
22
+ class RTFHandlers
23
+
24
+ def RTFHandlers.create(project, sourceFileInfo = nil)
25
+ [
26
+ RTFNavigator.new(project, sourceFileInfo),
27
+ RTFQuery.new(project, sourceFileInfo),
28
+ RTFReport.new(project, sourceFileInfo),
29
+ RTFReportLink.new(project, sourceFileInfo)
30
+ ]
31
+ end
32
+
33
+ end
34
+
35
+ end
data/lib/RTFReport.rb CHANGED
@@ -40,16 +40,33 @@ class TaskJuggler
40
40
  error('rtp_report_unknown_id', "Unknown report #{id}")
41
41
  return nil
42
42
  end
43
+ # Detect recursive nesting
44
+ found = false
45
+ @project.reportContexts.each do |c|
46
+ if c.report == report
47
+ found = true
48
+ break
49
+ end
50
+ end
51
+ if found
52
+ stack = ""
53
+ @project.reportContexts.each do |context|
54
+ stack += ' -> ' unless stack.empty?
55
+ stack += '[ ' if context.report == report
56
+ stack += context.report.fullId
57
+ end
58
+ stack += " -> #{report.fullId} ] ..."
59
+ error('rtp_report_recursion',
60
+ "Recursive nesting of reports detected: #{stack}")
61
+ return nil
62
+ end
43
63
 
44
- # Save the old report context record
45
- oldReportContext = @project.reportContext
46
64
  # Create a new context for the report.
47
- @project.reportContext = ReportContext.new(@project, report)
65
+ @project.reportContexts.push(ReportContext.new(@project, report))
48
66
  # Generate the report with the new context
49
- report.generate
67
+ report.generateIntermediateFormat
50
68
  html = report.to_html
51
- # Restore the global report context record again.
52
- @project.reportContext = oldReportContext
69
+ @project.reportContexts.pop
53
70
 
54
71
  html
55
72
  end
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby -w
2
+ # encoding: UTF-8
3
+ #
4
+ # = RTFReportLink.rb -- The TaskJuggler III Project Management Software
5
+ #
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 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
+ require 'RichTextFunctionHandler'
14
+ require 'XMLElement'
15
+ require 'URLParameter'
16
+
17
+ class TaskJuggler
18
+
19
+ # This class is a specialized RichTextFunctionHandler that generates a link
20
+ # to another report. It's not available on all output formats.
21
+ class RTFReportLink < RichTextFunctionHandler
22
+
23
+ def initialize(project, sourceFileInfo = nil)
24
+ super(project, 'reportlink', sourceFileInfo)
25
+ @blockFunction = false
26
+ end
27
+
28
+ # Not supported for this function
29
+ def to_s(args)
30
+ ''
31
+ end
32
+
33
+ # Return a HTML tree for the report.
34
+ def to_html(args)
35
+ if args.nil? || (id = args['id']).nil?
36
+ error('rtp_report_id',
37
+ "Argument 'id' missing to specify the report to be used.")
38
+ return nil
39
+ end
40
+ unless (report = @project.report(id))
41
+ error('rtp_report_unknown_id', "Unknown report #{id}")
42
+ return nil
43
+ end
44
+
45
+ # The URL for interactive reports is different than for static reports.
46
+ if report.interactive?
47
+ # The project and report ID must be provided as query.
48
+ url = "taskjuggler?project=#{@project['projectid']};" +
49
+ "report=#{report.fullId}"
50
+
51
+ if args['attributes']
52
+ url += ";attributes=" + URLParameter.encode(args['attributes'])
53
+ end
54
+ else
55
+ # The report name just gets a '.html' extension.
56
+ url = report.name + ".html"
57
+ end
58
+ a = XMLElement.new('a', 'href'=> url)
59
+ a << XMLText.new(report.name)
60
+ a
61
+ end
62
+
63
+ # Not supported for this function.
64
+ def to_tagged(args)
65
+ nil
66
+ end
67
+
68
+ end
69
+
70
+ end
71
+
72
+
data/lib/Resource.rb CHANGED
@@ -37,7 +37,7 @@ class TaskJuggler
37
37
  end
38
38
 
39
39
  def query_journal(query)
40
- journalMessages(query, true)
40
+ journalText(query, true)
41
41
  end
42
42
 
43
43
  def query_dashboard(query)
@@ -47,7 +47,7 @@ class TaskJuggler
47
47
  private
48
48
 
49
49
  # Create a blog-style list of all alert messages that match the Query.
50
- def journalMessages(query, longVersion)
50
+ def journalText(query, longVersion)
51
51
  # The components of the message are either UTF-8 text or RichText. For
52
52
  # the RichText components, we use the originally provided markup since
53
53
  # we compose the result as RichText markup first.
@@ -66,8 +66,8 @@ class TaskJuggler
66
66
  alertName = "[[File:icons/flag-#{levelRecord[0]}.png|" +
67
67
  "alt=[#{levelRecord[1]}]|text-bottom]]"
68
68
  levelList.each do |entry|
69
- # The TimeSheetRecords associated with this entry.
70
69
  tsRecord = entry.timeSheetRecord
70
+
71
71
  if entry.property.is_a?(Task)
72
72
  rText += "== #{alertName} <nowiki>#{entry.property.name}</nowiki> "+
73
73
  "(ID: #{entry.property.fullId}) ==\n\n"
@@ -122,13 +122,9 @@ class TaskJuggler
122
122
 
123
123
  # Now convert the RichText markup String into RichTextIntermediate
124
124
  # format.
125
- handlers = [
126
- RTFNavigator.new(@project),
127
- RTFQuery.new(@project),
128
- RTFReport.new(@project)
129
- ]
130
125
  begin
131
- rti = RichText.new(rText, handlers).generateIntermediateFormat
126
+ rti = RichText.new(rText, RTFHandlers.create(@project)).
127
+ generateIntermediateFormat
132
128
  rescue RichTextException => msg
133
129
  $stderr.puts "Error while processing Rich Text\n" +
134
130
  "Line #{msg.lineNo}: #{msg.text}\n" +
@@ -167,19 +163,15 @@ class TaskJuggler
167
163
  taskList.each do |task|
168
164
  rText += "== <nowiki>[#{task.query_alert(query)}] Task: " +
169
165
  "#{task.name}</nowiki> (#{task.fullId}) ==\n\n"
170
- rText += task.query_alertmessage(query).richText.inputText + "\n\n"
166
+ rText += task.query_journalmessages(query).richText.inputText + "\n\n"
171
167
  end
172
168
  end
173
169
 
174
170
  # Now convert the RichText markup String into RichTextIntermediate
175
171
  # format.
176
- handlers = [
177
- RTFNavigator.new(@project),
178
- RTFQuery.new(@project),
179
- RTFReport.new(@project)
180
- ]
181
172
  begin
182
- rti = RichText.new(rText, handlers).generateIntermediateFormat
173
+ rti = RichText.new(rText, RTFHandlers.create(@project)).
174
+ generateIntermediateFormat
183
175
  rescue RichTextException => msg
184
176
  $stderr.puts "Error while processing Rich Text\n" +
185
177
  "Line #{msg.lineNo}: #{msg.text}\n" +
@@ -310,27 +310,6 @@ class TaskJuggler
310
310
  work
311
311
  end
312
312
 
313
- # Returns the allocated work of the resource (and its children).
314
- def getAllocatedWork(startIdx, endIdx, task = nil)
315
- # Convert the interval dates to indexes if needed.
316
- startIdx = @project.dateToIdx(startIdx, true) if startIdx.is_a?(TjTime)
317
- endIdx = @project.dateToIdx(endIdx, true) if endIdx.is_a?(TjTime)
318
-
319
- work = 0.0
320
- if @property.container?
321
- @property.children.each do |resource|
322
- work += resource.getAllocatedWork(@scenarioIdx, startIdx, endIdx, task)
323
- end
324
- else
325
- return 0.0 if @scoreboard.nil?
326
-
327
- work = @project.convertToDailyLoad(
328
- getAllocatedSlots(startIdx, endIdx, task) *
329
- @project['scheduleGranularity'])
330
- end
331
- work
332
- end
333
-
334
313
  # Returns the allocated accumulated time of this resource and its children.
335
314
  def getAllocatedTime(startIdx, endIdx, task = nil)
336
315
  # Convert the interval dates to indexes if needed.
@@ -340,7 +319,7 @@ class TaskJuggler
340
319
  time = 0
341
320
  if @property.container?
342
321
  @property.children.each do |resource|
343
- time += resource.getAllocatedWork(@scenarioIdx, startIdx, endIdx, task)
322
+ time += resource.getAllocatedTime(@scenarioIdx, startIdx, endIdx, task)
344
323
  end
345
324
  else
346
325
  return 0 if @scoreboard.nil?
@@ -98,6 +98,8 @@ class TaskJuggler
98
98
  number = "#{@data[0]}.#{@data[1]} "
99
99
  when :title3
100
100
  number = "#{@data[0]}.#{@data[1]}.#{@data[2]} "
101
+ when :title4
102
+ number = "#{@data[0]}.#{@data[1]}.#{@data[2]}.#{@data[3]} "
101
103
  end
102
104
  if number
103
105
  # We've found a section heading. The String value of the Element is the
@@ -153,6 +155,10 @@ class TaskJuggler
153
155
  return textBlockFormat(@richText.indent + @richText.titleIndent,
154
156
  sTitle(3), children_to_s,
155
157
  @richText.lineWidth) + "\n"
158
+ when :title4
159
+ return textBlockFormat(@richText.indent + @richText.titleIndent,
160
+ sTitle(4), children_to_s,
161
+ @richText.lineWidth) + "\n"
156
162
  when :hline
157
163
  return "#{' ' * @richText.indent}" +
158
164
  "#{'-' * (@richText.lineWidth - @richText.indent)}\n"
@@ -178,6 +184,11 @@ class TaskJuggler
178
184
  return textBlockFormat(@richText.indent + @richText.listIndent * 3,
179
185
  '* ', children_to_s,
180
186
  @richText.lineWidth) + "\n"
187
+ when :bulletlist4
188
+ when :bulletitem4
189
+ return textBlockFormat(@richText.indent + @richText.listIndent * 4,
190
+ '* ', children_to_s,
191
+ @richText.lineWidth) + "\n"
181
192
  when :numberlist1
182
193
  when :numberitem1
183
194
  return textBlockFormat(@richText.indent + @richText.listIndent,
@@ -193,6 +204,12 @@ class TaskJuggler
193
204
  return textBlockFormat(@richText.indent + @richText.listIndent,
194
205
  "#{@data[0]}.#{@data[1]}.#{@data[2]} ",
195
206
  children_to_s, @richText.lineWidth) + "\n"
207
+ when :numberlist4
208
+ when :numberitem4
209
+ return textBlockFormat(@richText.indent + @richText.listIndent,
210
+ "#{@data[0]}.#{@data[1]}.#{@data[2]}." +
211
+ "#{@data[3]} ",
212
+ children_to_s, @richText.lineWidth) + "\n"
196
213
  when :img
197
214
  pre = @data.altText if @data.altText
198
215
  when :ref
@@ -232,6 +249,9 @@ class TaskJuggler
232
249
  when :title3
233
250
  pre = "<h3>#{@data[0]}.#{@data[1]}.#{@data[2]} "
234
251
  post = "</h3>\n\n"
252
+ when :title4
253
+ pre = "<h4>#{@data[0]}.#{@data[1]}.#{@data[2]}.#{@data[3]} "
254
+ post = "</h4>\n\n"
235
255
  when :hline
236
256
  pre = '<hr>'
237
257
  post = "</hr>\n"
@@ -259,6 +279,12 @@ class TaskJuggler
259
279
  when :bulletitem3
260
280
  pre = '<li> * '
261
281
  post = "</li>\n"
282
+ when :bulletlist4
283
+ pre = '<ul>'
284
+ post = '</ul>'
285
+ when :bulletitem4
286
+ pre = '<li> * '
287
+ post = "</li>\n"
262
288
  when :numberlist1
263
289
  pre = '<ol>'
264
290
  post = '</ol>'
@@ -277,6 +303,12 @@ class TaskJuggler
277
303
  when :numberitem3
278
304
  pre = "<li>#{@data[0]}.#{@data[1]}.#{@data[2]} "
279
305
  post = "</li>\n"
306
+ when :numberlist4
307
+ pre = '<ol>'
308
+ post = '</ol>'
309
+ when :numberitem4
310
+ pre = "<li>#{@data[0]}.#{@data[1]}.#{@data[2]}.#{@data[3]} "
311
+ post = "</li>\n"
280
312
  when :img
281
313
  pre = "<img file=\"#{@data.fileName}\"/>"
282
314
  when :ref
@@ -346,6 +378,8 @@ class TaskJuggler
346
378
  htmlTitle(2)
347
379
  when :title3
348
380
  htmlTitle(3)
381
+ when :title4
382
+ htmlTitle(4)
349
383
  when :hline
350
384
  noChilds = true
351
385
  XMLElement.new('hr', attrs, true)
@@ -370,6 +404,10 @@ class TaskJuggler
370
404
  XMLElement.new('ul')
371
405
  when :bulletitem3
372
406
  XMLElement.new('li')
407
+ when :bulletlist4
408
+ XMLElement.new('ul')
409
+ when :bulletitem4
410
+ XMLElement.new('li')
373
411
  when :numberlist1
374
412
  XMLElement.new('ol')
375
413
  when :numberitem1
@@ -382,6 +420,10 @@ class TaskJuggler
382
420
  XMLElement.new('ol')
383
421
  when :numberitem3
384
422
  XMLElement.new('li')
423
+ when :numberlist4
424
+ XMLElement.new('ol')
425
+ when :numberitem4
426
+ XMLElement.new('li')
385
427
  when :img
386
428
  el = XMLElement.new('img', 'src' => @data.fileName)
387
429
  el['alt'] = @data.altText if @data.altText
@@ -27,7 +27,7 @@ class TaskJuggler
27
27
 
28
28
  # Create the parser and initialize the rule set. _rt_ is the RichText object
29
29
  # the resulting tree of RichTextElement objects should belong to.
30
- def initialize(rti, sectionCounter = [ 0, 0, 0], tokenSet = nil)
30
+ def initialize(rti, sectionCounter = [ 0, 0, 0, 0 ], tokenSet = nil)
31
31
  super()
32
32
  @richTextI = rti
33
33
  # These are the tokens that can be returned by the RichTextScanner.
@@ -36,15 +36,17 @@ class TaskJuggler
36
36
  QUERY
37
37
  INLINEFUNCSTART INLINEFUNCEND
38
38
  BLOCKFUNCSTART BLOCKFUNCEND ID STRING
39
- TITLE1 TITLE2 TITLE3 TITLE1END TITLE2END TITLE3END
40
- BULLET1 BULLET2 BULLET3 NUMBER1 NUMBER2 NUMBER3 )
39
+ TITLE1 TITLE2 TITLE3 TITLE4
40
+ TITLE1END TITLE2END TITLE3END TITLE4END
41
+ BULLET1 BULLET2 BULLET3 BULLET4
42
+ NUMBER1 NUMBER2 NUMBER3 NUMBER4 )
41
43
  limitTokenSet(tokenSet)
42
44
  # Load the rule set into the parser.
43
45
  initRules
44
46
  # The sections and numbered list can each nest 3 levels deep. We use these
45
47
  # counter Arrays to generate proper 1.2.3 type labels.
46
48
  @sectionCounter = sectionCounter
47
- @numberListCounter = [ 0, 0, 0 ]
49
+ @numberListCounter = [ 0, 0, 0, 0 ]
48
50
  end
49
51
 
50
52
  # Construct the parser and get ready to read.
@@ -112,7 +112,7 @@ class TaskJuggler
112
112
  end
113
113
 
114
114
  # The parser uses this function to report any errors during parsing.
115
- def error(id, text, foo)
115
+ def error(id, text, foo = nil, bar = nil)
116
116
  if @debug
117
117
  $stderr.puts "Line #{@lineNo}: #{text}\n" +
118
118
  "#{@text[@lineStart, @pos - @lineStart]}"
@@ -237,7 +237,7 @@ class TaskJuggler
237
237
  case (c = nextChar)
238
238
  when '='
239
239
  # Headings start with 2 or more = and must be followed by a space.
240
- level = readSequenceMax('=', 4)
240
+ level = readSequenceMax('=', 5)
241
241
  if level == 1
242
242
  # 1 = does not mean anything. Push it back and process it as normal
243
243
  # text further down.
@@ -256,7 +256,7 @@ class TaskJuggler
256
256
  returnChar(level)
257
257
  when '*'
258
258
  # Bullet lists start with one to three * characters.
259
- level = readSequenceMax('*')
259
+ level = readSequenceMax('*', 4)
260
260
  # Between the * characters and the bullet text must be exactly one
261
261
  # space.
262
262
  return [ "BULLET#{level}", '*' * level ] if nextChar == ' '
@@ -264,7 +264,7 @@ class TaskJuggler
264
264
  returnChar(level + 1)
265
265
  when '#'
266
266
  # Numbered list start with one to three # characters.
267
- level = readSequenceMax('#')
267
+ level = readSequenceMax('#', 4)
268
268
  # Between the # characters and the bullet text must be exactly one
269
269
  # space.
270
270
  return [ "NUMBER#{level}", '#' * level ] if nextChar == ' '
@@ -322,7 +322,7 @@ class TaskJuggler
322
322
  nil
323
323
  end
324
324
  elsif c == '=' && !@ignoreInlineMarkup
325
- level = readSequenceMax('=', 4)
325
+ level = readSequenceMax('=', 5)
326
326
  if level > 1
327
327
  [ "TITLE#{level - 1}END", '=' * level ]
328
328
  else