taskjuggler 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (613) hide show
  1. data/CHANGELOG +1144 -2047
  2. data/README +1 -1
  3. data/Rakefile +6 -6
  4. data/data/css/tjmanual.css +20 -0
  5. data/data/css/tjreport.css +7 -6
  6. data/doc/AppConfig.html +136 -130
  7. data/doc/Arguments.html +46 -40
  8. data/doc/CHANGELOG.html +1162 -2057
  9. data/doc/COPYING.html +8 -2
  10. data/doc/Object.html +205 -199
  11. data/doc/README.html +9 -3
  12. data/doc/RuntimeConfig.html +75 -69
  13. data/doc/String.html +69 -63
  14. data/doc/TaskJuggler.html +350 -291
  15. data/doc/TaskJuggler/Account.html +26 -20
  16. data/doc/TaskJuggler/AccountAttribute.html +24 -18
  17. data/doc/TaskJuggler/AccountScenario.html +24 -18
  18. data/doc/TaskJuggler/Allocation.html +74 -68
  19. data/doc/TaskJuggler/AllocationAttribute.html +54 -48
  20. data/doc/TaskJuggler/AttributeBase.html +172 -93
  21. data/doc/TaskJuggler/AttributeDefinition.html +22 -16
  22. data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
  23. data/doc/TaskJuggler/BatchProcessor.html +263 -257
  24. data/doc/TaskJuggler/Booking.html +44 -38
  25. data/doc/TaskJuggler/BookingListAttribute.html +25 -21
  26. data/doc/TaskJuggler/BooleanAttribute.html +24 -18
  27. data/doc/TaskJuggler/CSVFile.html +193 -187
  28. data/doc/TaskJuggler/CellSettingPattern.html +13 -7
  29. data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
  30. data/doc/TaskJuggler/Charge.html +49 -43
  31. data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
  32. data/doc/TaskJuggler/ChargeSet.html +94 -88
  33. data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
  34. data/doc/TaskJuggler/CollisionDetector.html +142 -136
  35. data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
  36. data/doc/TaskJuggler/ColumnTable.html +50 -44
  37. data/doc/TaskJuggler/Daemon.html +71 -50
  38. data/doc/TaskJuggler/DataCache.html +110 -58
  39. data/doc/TaskJuggler/DataCacheEntry.html +22 -16
  40. data/doc/TaskJuggler/DateAttribute.html +24 -18
  41. data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
  42. data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
  43. data/doc/TaskJuggler/DurationAttribute.html +25 -19
  44. data/doc/TaskJuggler/FileList.html +25 -19
  45. data/doc/TaskJuggler/FileRecord.html +17 -11
  46. data/doc/TaskJuggler/FixnumAttribute.html +16 -10
  47. data/doc/TaskJuggler/FlagListAttribute.html +25 -21
  48. data/doc/TaskJuggler/FloatAttribute.html +20 -14
  49. data/doc/TaskJuggler/FormatListAttribute.html +17 -11
  50. data/doc/TaskJuggler/GanttChart.html +242 -236
  51. data/doc/TaskJuggler/GanttContainer.html +71 -67
  52. data/doc/TaskJuggler/GanttHeader.html +113 -107
  53. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
  54. data/doc/TaskJuggler/GanttLine.html +217 -210
  55. data/doc/TaskJuggler/GanttLoadStack.html +89 -83
  56. data/doc/TaskJuggler/GanttMilestone.html +11 -6
  57. data/doc/TaskJuggler/GanttRouter.html +194 -186
  58. data/doc/TaskJuggler/GanttTaskBar.html +41 -34
  59. data/doc/TaskJuggler/HTMLDocument.html +52 -46
  60. data/doc/TaskJuggler/HTMLGraphics.html +58 -52
  61. data/doc/TaskJuggler/Interval.html +90 -84
  62. data/doc/TaskJuggler/IntervalList.html +777 -0
  63. data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
  64. data/doc/TaskJuggler/JobInfo.html +36 -30
  65. data/doc/TaskJuggler/Journal.html +188 -177
  66. data/doc/TaskJuggler/JournalEntry.html +36 -30
  67. data/doc/TaskJuggler/JournalEntryList.html +88 -82
  68. data/doc/TaskJuggler/KeywordArray.html +12 -6
  69. data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
  70. data/doc/TaskJuggler/Limits.html +111 -105
  71. data/doc/TaskJuggler/Limits/Limit.html +71 -65
  72. data/doc/TaskJuggler/LimitsAttribute.html +21 -15
  73. data/doc/TaskJuggler/ListAttributeBase.html +16 -10
  74. data/doc/TaskJuggler/Log.html +111 -105
  75. data/doc/TaskJuggler/LogFile.html +54 -48
  76. data/doc/TaskJuggler/LogicalAttribute.html +35 -29
  77. data/doc/TaskJuggler/LogicalExpression.html +32 -26
  78. data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
  79. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
  80. data/doc/TaskJuggler/LogicalFlag.html +24 -18
  81. data/doc/TaskJuggler/LogicalFunction.html +164 -158
  82. data/doc/TaskJuggler/LogicalOperation.html +138 -132
  83. data/doc/TaskJuggler/Macro.html +14 -8
  84. data/doc/TaskJuggler/MacroTable.html +42 -36
  85. data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
  86. data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
  87. data/doc/TaskJuggler/Message.html +56 -50
  88. data/doc/TaskJuggler/MessageHandler.html +73 -67
  89. data/doc/TaskJuggler/Navigator.html +92 -86
  90. data/doc/TaskJuggler/NavigatorElement.html +88 -82
  91. data/doc/TaskJuggler/NikuProject.html +15 -9
  92. data/doc/TaskJuggler/NikuReport.html +405 -370
  93. data/doc/TaskJuggler/NikuResource.html +13 -7
  94. data/doc/TaskJuggler/NodeListAttribute.html +13 -9
  95. data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
  96. data/doc/TaskJuggler/ProcessIntercom.html +116 -110
  97. data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
  98. data/doc/TaskJuggler/Project.html +1064 -895
  99. data/doc/TaskJuggler/ProjectBroker.html +439 -366
  100. data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
  101. data/doc/TaskJuggler/ProjectFileParser.html +329 -319
  102. data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
  103. data/doc/TaskJuggler/ProjectRecord.html +66 -60
  104. data/doc/TaskJuggler/ProjectServer.html +287 -280
  105. data/doc/TaskJuggler/ProjectServerIface.html +43 -37
  106. data/doc/TaskJuggler/PropertyAttribute.html +16 -10
  107. data/doc/TaskJuggler/PropertyList.html +205 -199
  108. data/doc/TaskJuggler/PropertySet.html +264 -296
  109. data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
  110. data/doc/TaskJuggler/Query.html +309 -524
  111. data/doc/TaskJuggler/RTFHandlers.html +17 -11
  112. data/doc/TaskJuggler/RTFNavigator.html +33 -27
  113. data/doc/TaskJuggler/RTFQuery.html +135 -129
  114. data/doc/TaskJuggler/RTFReport.html +63 -57
  115. data/doc/TaskJuggler/RTFReportLink.html +55 -49
  116. data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
  117. data/doc/TaskJuggler/RealFormat.html +64 -58
  118. data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
  119. data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
  120. data/doc/TaskJuggler/Report.html +294 -249
  121. data/doc/TaskJuggler/ReportBase.html +229 -223
  122. data/doc/TaskJuggler/ReportContext.html +52 -46
  123. data/doc/TaskJuggler/ReportServer.html +143 -137
  124. data/doc/TaskJuggler/ReportServerIface.html +51 -43
  125. data/doc/TaskJuggler/ReportServerRecord.html +36 -30
  126. data/doc/TaskJuggler/ReportServlet.html +167 -140
  127. data/doc/TaskJuggler/ReportTable.html +137 -131
  128. data/doc/TaskJuggler/ReportTableCell.html +332 -292
  129. data/doc/TaskJuggler/ReportTableColumn.html +46 -40
  130. data/doc/TaskJuggler/ReportTableLegend.html +43 -38
  131. data/doc/TaskJuggler/ReportTableLine.html +66 -60
  132. data/doc/TaskJuggler/Resource.html +166 -160
  133. data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
  134. data/doc/TaskJuggler/ResourceListRE.html +47 -41
  135. data/doc/TaskJuggler/ResourceScenario.html +671 -644
  136. data/doc/TaskJuggler/RichText.html +51 -45
  137. data/doc/TaskJuggler/RichTextAttribute.html +28 -22
  138. data/doc/TaskJuggler/RichTextDocument.html +96 -90
  139. data/doc/TaskJuggler/RichTextElement.html +503 -497
  140. data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
  141. data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
  142. data/doc/TaskJuggler/RichTextImage.html +14 -8
  143. data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
  144. data/doc/TaskJuggler/RichTextParser.html +59 -53
  145. data/doc/TaskJuggler/RichTextScanner.html +184 -178
  146. data/doc/TaskJuggler/RichTextSnip.html +69 -63
  147. data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
  148. data/doc/TaskJuggler/Scenario.html +13 -7
  149. data/doc/TaskJuggler/ScenarioData.html +40 -34
  150. data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
  151. data/doc/TaskJuggler/Scoreboard.html +129 -107
  152. data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
  153. data/doc/TaskJuggler/SheetReceiver.html +333 -327
  154. data/doc/TaskJuggler/SheetSender.html +227 -221
  155. data/doc/TaskJuggler/Shift.html +26 -20
  156. data/doc/TaskJuggler/ShiftAssignment.html +45 -39
  157. data/doc/TaskJuggler/ShiftAssignments.html +178 -172
  158. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
  159. data/doc/TaskJuggler/ShiftScenario.html +29 -23
  160. data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
  161. data/doc/TaskJuggler/SortListAttribute.html +17 -13
  162. data/doc/TaskJuggler/SourceFileInfo.html +19 -13
  163. data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
  164. data/doc/TaskJuggler/StatusSheetReport.html +166 -159
  165. data/doc/TaskJuggler/StatusSheetSender.html +80 -74
  166. data/doc/TaskJuggler/StringAttribute.html +20 -14
  167. data/doc/TaskJuggler/SymbolAttribute.html +16 -10
  168. data/doc/TaskJuggler/SyntaxReference.html +231 -225
  169. data/doc/TaskJuggler/TOCEntry.html +46 -40
  170. data/doc/TaskJuggler/TSResourceRecord.html +15 -9
  171. data/doc/TaskJuggler/TSTaskRecord.html +16 -10
  172. data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
  173. data/doc/TaskJuggler/TableOfContents.html +28 -22
  174. data/doc/TaskJuggler/TableReport.html +906 -866
  175. data/doc/TaskJuggler/Task.html +99 -93
  176. data/doc/TaskJuggler/TaskDependency.html +24 -18
  177. data/doc/TaskJuggler/TaskListAttribute.html +29 -25
  178. data/doc/TaskJuggler/TaskListRE.html +46 -39
  179. data/doc/TaskJuggler/TaskScenario.html +2218 -1965
  180. data/doc/TaskJuggler/TextFormatter.html +154 -148
  181. data/doc/TaskJuggler/TextParser.html +362 -348
  182. data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
  183. data/doc/TaskJuggler/TextParser/Rule.html +147 -141
  184. data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
  185. data/doc/TaskJuggler/TextParser/State.html +88 -82
  186. data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
  187. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
  188. data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
  189. data/doc/TaskJuggler/TextReport.html +80 -74
  190. data/doc/TaskJuggler/TextScanner.html +284 -272
  191. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
  192. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
  193. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
  194. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  195. data/doc/TaskJuggler/TimeSheet.html +123 -117
  196. data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
  197. data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
  198. data/doc/TaskJuggler/TimeSheetReport.html +206 -199
  199. data/doc/TaskJuggler/TimeSheetSender.html +27 -21
  200. data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
  201. data/doc/TaskJuggler/TimeSheets.html +20 -14
  202. data/doc/TaskJuggler/Tj3AppBase.html +100 -94
  203. data/doc/TaskJuggler/Tj3Client.html +407 -483
  204. data/doc/TaskJuggler/Tj3Daemon.html +116 -107
  205. data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
  206. data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
  207. data/doc/TaskJuggler/Tj3SsSender.html +64 -58
  208. data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
  209. data/doc/TaskJuggler/Tj3TsSender.html +51 -45
  210. data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
  211. data/doc/TaskJuggler/TjException.html +13 -7
  212. data/doc/TaskJuggler/TjTime.html +444 -438
  213. data/doc/TaskJuggler/TjpExample.html +84 -78
  214. data/doc/TaskJuggler/TjpExportRE.html +356 -349
  215. data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
  216. data/doc/TaskJuggler/URLParameter.html +16 -10
  217. data/doc/TaskJuggler/UserManual.html +185 -179
  218. data/doc/TaskJuggler/VimSyntax.html +144 -138
  219. data/doc/TaskJuggler/WebServer.html +46 -39
  220. data/doc/TaskJuggler/WelcomePage.html +769 -0
  221. data/doc/TaskJuggler/WorkingHours.html +185 -179
  222. data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
  223. data/doc/TaskJuggler/XMLBlob.html +21 -15
  224. data/doc/TaskJuggler/XMLComment.html +17 -11
  225. data/doc/TaskJuggler/XMLDocument.html +33 -27
  226. data/doc/TaskJuggler/XMLElement.html +97 -91
  227. data/doc/TaskJuggler/XMLNamedText.html +13 -7
  228. data/doc/TaskJuggler/XMLText.html +32 -26
  229. data/doc/index.html +601 -563
  230. data/doc/lib/AccountScenario_rb.html +5 -3
  231. data/doc/lib/Account_rb.html +5 -3
  232. data/doc/lib/Allocation_rb.html +5 -3
  233. data/doc/lib/AppConfig_rb.html +5 -3
  234. data/doc/lib/AttributeBase_rb.html +5 -3
  235. data/doc/lib/AttributeDefinition_rb.html +5 -3
  236. data/doc/lib/Attributes_rb.html +5 -3
  237. data/doc/lib/BatchProcessor_rb.html +5 -3
  238. data/doc/lib/Booking_rb.html +5 -3
  239. data/doc/lib/ChargeSet_rb.html +5 -3
  240. data/doc/lib/Charge_rb.html +5 -3
  241. data/doc/lib/DataCache_rb.html +5 -3
  242. data/doc/lib/FileList_rb.html +5 -3
  243. data/doc/lib/HTMLDocument_rb.html +5 -3
  244. data/doc/lib/IntervalList_rb.html +69 -0
  245. data/doc/lib/Interval_rb.html +5 -3
  246. data/doc/lib/Journal_rb.html +5 -3
  247. data/doc/lib/KeywordArray_rb.html +5 -3
  248. data/doc/lib/KeywordDocumentation_rb.html +5 -3
  249. data/doc/lib/Limits_rb.html +5 -3
  250. data/doc/lib/LogFile_rb.html +5 -3
  251. data/doc/lib/Log_rb.html +5 -3
  252. data/doc/lib/LogicalExpression_rb.html +5 -3
  253. data/doc/lib/LogicalFunction_rb.html +5 -3
  254. data/doc/lib/LogicalOperation_rb.html +5 -3
  255. data/doc/lib/MacroTable_rb.html +5 -3
  256. data/doc/lib/MessageHandler_rb.html +5 -3
  257. data/doc/lib/ProjectFileParser_rb.html +5 -3
  258. data/doc/lib/ProjectFileScanner_rb.html +5 -3
  259. data/doc/lib/Project_rb.html +5 -3
  260. data/doc/lib/PropertyList_rb.html +5 -3
  261. data/doc/lib/PropertySet_rb.html +5 -3
  262. data/doc/lib/PropertyTreeNode_rb.html +5 -3
  263. data/doc/lib/Query_rb.html +5 -3
  264. data/doc/lib/RTFHandlers_rb.html +5 -3
  265. data/doc/lib/RTFNavigator_rb.html +5 -3
  266. data/doc/lib/RTFQuery_rb.html +5 -3
  267. data/doc/lib/RTFReportLink_rb.html +5 -3
  268. data/doc/lib/RTFReport_rb.html +5 -3
  269. data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
  270. data/doc/lib/RealFormat_rb.html +5 -3
  271. data/doc/lib/ResourceScenario_rb.html +5 -3
  272. data/doc/lib/Resource_rb.html +5 -3
  273. data/doc/lib/RichTextDocument_rb.html +5 -3
  274. data/doc/lib/RichTextElement_rb.html +5 -3
  275. data/doc/lib/RichTextFunctionExample_rb.html +5 -3
  276. data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
  277. data/doc/lib/RichTextParser_rb.html +5 -3
  278. data/doc/lib/RichTextScanner_rb.html +5 -3
  279. data/doc/lib/RichTextSnip_rb.html +5 -3
  280. data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
  281. data/doc/lib/RichText_rb.html +5 -3
  282. data/doc/lib/RuntimeConfig_rb.html +5 -3
  283. data/doc/lib/ScenarioData_rb.html +5 -3
  284. data/doc/lib/Scenario_rb.html +5 -3
  285. data/doc/lib/Scoreboard_rb.html +7 -3
  286. data/doc/lib/SheetHandlerBase_rb.html +5 -3
  287. data/doc/lib/SheetReceiver_rb.html +5 -3
  288. data/doc/lib/SheetSender_rb.html +5 -3
  289. data/doc/lib/ShiftAssignments_rb.html +5 -3
  290. data/doc/lib/ShiftScenario_rb.html +5 -3
  291. data/doc/lib/Shift_rb.html +5 -3
  292. data/doc/lib/SimpleQueryExpander_rb.html +5 -3
  293. data/doc/lib/SourceFileInfo_rb.html +5 -3
  294. data/doc/lib/StatusSheetReceiver_rb.html +5 -3
  295. data/doc/lib/StatusSheetSender_rb.html +5 -3
  296. data/doc/lib/SyntaxReference_rb.html +5 -3
  297. data/doc/lib/TOCEntry_rb.html +5 -3
  298. data/doc/lib/TableColumnDefinition_rb.html +5 -3
  299. data/doc/lib/TableOfContents_rb.html +5 -3
  300. data/doc/lib/TaskDependency_rb.html +5 -3
  301. data/doc/lib/TaskJuggler_rb.html +5 -3
  302. data/doc/lib/TaskScenario_rb.html +5 -3
  303. data/doc/lib/Task_rb.html +5 -3
  304. data/doc/lib/TextFormatter_rb.html +6 -4
  305. data/doc/lib/TextParser/Pattern_rb.html +5 -3
  306. data/doc/lib/TextParser/Rule_rb.html +5 -3
  307. data/doc/lib/TextParser/StackElement_rb.html +5 -3
  308. data/doc/lib/TextParser/State_rb.html +6 -4
  309. data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
  310. data/doc/lib/TextParser_rb.html +5 -3
  311. data/doc/lib/TextScanner_rb.html +5 -3
  312. data/doc/lib/TimeSheetReceiver_rb.html +5 -3
  313. data/doc/lib/TimeSheetSender_rb.html +5 -3
  314. data/doc/lib/TimeSheetSummary_rb.html +6 -4
  315. data/doc/lib/TimeSheets_rb.html +5 -3
  316. data/doc/lib/Tj3AppBase_rb.html +5 -3
  317. data/doc/lib/Tj3Config_rb.html +5 -3
  318. data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
  319. data/doc/lib/TjException_rb.html +5 -3
  320. data/doc/lib/TjTime_rb.html +5 -3
  321. data/doc/lib/TjpExample_rb.html +5 -3
  322. data/doc/lib/TjpSyntaxRules_rb.html +5 -3
  323. data/doc/lib/URLParameter_rb.html +5 -3
  324. data/doc/lib/UTF8String_rb.html +5 -3
  325. data/doc/lib/UserManual_rb.html +5 -3
  326. data/doc/lib/VimSyntax_rb.html +6 -4
  327. data/doc/lib/WorkingHours_rb.html +5 -3
  328. data/doc/lib/XMLDocument_rb.html +5 -3
  329. data/doc/lib/XMLElement_rb.html +5 -3
  330. data/doc/lib/daemon/Daemon_rb.html +5 -3
  331. data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
  332. data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
  333. data/doc/lib/daemon/ProjectServer_rb.html +5 -3
  334. data/doc/lib/daemon/ReportServer_rb.html +5 -3
  335. data/doc/lib/daemon/ReportServlet_rb.html +69 -0
  336. data/doc/lib/daemon/WebServer_rb.html +9 -3
  337. data/doc/lib/daemon/WelcomePage_rb.html +71 -0
  338. data/doc/lib/deep_copy_rb.html +5 -3
  339. data/doc/lib/reports/CSVFile_rb.html +5 -3
  340. data/doc/lib/reports/CollisionDetector_rb.html +5 -3
  341. data/doc/lib/reports/ColumnTable_rb.html +5 -3
  342. data/doc/lib/reports/GanttChart_rb.html +5 -3
  343. data/doc/lib/reports/GanttContainer_rb.html +5 -3
  344. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
  345. data/doc/lib/reports/GanttHeader_rb.html +5 -3
  346. data/doc/lib/reports/GanttLine_rb.html +5 -3
  347. data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
  348. data/doc/lib/reports/GanttMilestone_rb.html +5 -3
  349. data/doc/lib/reports/GanttRouter_rb.html +5 -3
  350. data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
  351. data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
  352. data/doc/lib/reports/Navigator_rb.html +5 -3
  353. data/doc/lib/reports/NikuReport_rb.html +5 -3
  354. data/doc/lib/reports/ReportBase_rb.html +5 -3
  355. data/doc/lib/reports/ReportContext_rb.html +5 -3
  356. data/doc/lib/reports/ReportTableCell_rb.html +5 -3
  357. data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
  358. data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
  359. data/doc/lib/reports/ReportTableLine_rb.html +5 -3
  360. data/doc/lib/reports/ReportTable_rb.html +5 -3
  361. data/doc/lib/reports/Report_rb.html +5 -3
  362. data/doc/lib/reports/ResourceListRE_rb.html +5 -3
  363. data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
  364. data/doc/lib/reports/TableReport_rb.html +5 -3
  365. data/doc/lib/reports/TaskListRE_rb.html +5 -3
  366. data/doc/lib/reports/TextReport_rb.html +5 -3
  367. data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
  368. data/doc/lib/reports/TjpExportRE_rb.html +5 -3
  369. data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
  370. data/doc/lib/tj3client_rb.html +5 -3
  371. data/doc/lib/tj3d_rb.html +6 -4
  372. data/doc/lib/tj3man_rb.html +5 -3
  373. data/doc/lib/tj3ss_receiver_rb.html +5 -3
  374. data/doc/lib/tj3ss_sender_rb.html +5 -3
  375. data/doc/lib/tj3ts_receiver_rb.html +5 -3
  376. data/doc/lib/tj3ts_sender_rb.html +5 -3
  377. data/doc/lib/tj3ts_summary_rb.html +5 -3
  378. data/examples/tutorial.tjp +13 -5
  379. data/gem_spec.rb +3 -0
  380. data/lib/Account.rb +2 -1
  381. data/lib/AccountScenario.rb +2 -1
  382. data/lib/Allocation.rb +2 -1
  383. data/lib/AppConfig.rb +2 -1
  384. data/lib/AttributeBase.rb +19 -5
  385. data/lib/AttributeDefinition.rb +2 -1
  386. data/lib/Attributes.rb +49 -38
  387. data/lib/BatchProcessor.rb +2 -1
  388. data/lib/Booking.rb +2 -1
  389. data/lib/Charge.rb +2 -1
  390. data/lib/ChargeSet.rb +2 -1
  391. data/lib/DataCache.rb +15 -1
  392. data/lib/FileList.rb +2 -1
  393. data/lib/HTMLDocument.rb +2 -1
  394. data/lib/Interval.rb +2 -1
  395. data/lib/IntervalList.rb +100 -0
  396. data/lib/Journal.rb +8 -2
  397. data/lib/KeywordArray.rb +2 -1
  398. data/lib/KeywordDocumentation.rb +10 -6
  399. data/lib/Limits.rb +2 -1
  400. data/lib/Log.rb +3 -2
  401. data/lib/LogFile.rb +2 -1
  402. data/lib/LogicalExpression.rb +2 -1
  403. data/lib/LogicalFunction.rb +2 -1
  404. data/lib/LogicalOperation.rb +2 -1
  405. data/lib/MacroTable.rb +2 -1
  406. data/lib/MessageHandler.rb +2 -1
  407. data/lib/Project.rb +92 -25
  408. data/lib/ProjectFileParser.rb +7 -2
  409. data/lib/ProjectFileScanner.rb +2 -1
  410. data/lib/PropertyList.rb +2 -1
  411. data/lib/PropertySet.rb +2 -6
  412. data/lib/PropertyTreeNode.rb +22 -44
  413. data/lib/Query.rb +32 -13
  414. data/lib/RTFHandlers.rb +2 -1
  415. data/lib/RTFNavigator.rb +2 -1
  416. data/lib/RTFQuery.rb +3 -2
  417. data/lib/RTFReport.rb +2 -1
  418. data/lib/RTFReportLink.rb +2 -1
  419. data/lib/RTFWithQuerySupport.rb +2 -1
  420. data/lib/RealFormat.rb +2 -1
  421. data/lib/Resource.rb +2 -1
  422. data/lib/ResourceScenario.rb +35 -14
  423. data/lib/RichText.rb +2 -1
  424. data/lib/RichTextDocument.rb +2 -1
  425. data/lib/RichTextElement.rb +2 -1
  426. data/lib/RichTextFunctionExample.rb +2 -1
  427. data/lib/RichTextFunctionHandler.rb +2 -1
  428. data/lib/RichTextParser.rb +2 -1
  429. data/lib/RichTextScanner.rb +2 -1
  430. data/lib/RichTextSnip.rb +2 -1
  431. data/lib/RichTextSyntaxRules.rb +2 -1
  432. data/lib/RuntimeConfig.rb +2 -1
  433. data/lib/Scenario.rb +2 -1
  434. data/lib/ScenarioData.rb +2 -1
  435. data/lib/Scoreboard.rb +27 -8
  436. data/lib/SheetHandlerBase.rb +2 -1
  437. data/lib/SheetReceiver.rb +2 -1
  438. data/lib/SheetSender.rb +2 -1
  439. data/lib/Shift.rb +2 -1
  440. data/lib/ShiftAssignments.rb +2 -1
  441. data/lib/ShiftScenario.rb +2 -1
  442. data/lib/SimpleQueryExpander.rb +2 -1
  443. data/lib/SourceFileInfo.rb +2 -1
  444. data/lib/StatusSheetReceiver.rb +2 -1
  445. data/lib/StatusSheetSender.rb +2 -1
  446. data/lib/SyntaxReference.rb +2 -1
  447. data/lib/TOCEntry.rb +2 -1
  448. data/lib/TableColumnDefinition.rb +9 -2
  449. data/lib/TableOfContents.rb +2 -1
  450. data/lib/Task.rb +2 -1
  451. data/lib/TaskDependency.rb +2 -1
  452. data/lib/TaskJuggler.rb +8 -6
  453. data/lib/TaskScenario.rb +337 -153
  454. data/lib/TextFormatter.rb +3 -2
  455. data/lib/TextParser.rb +7 -2
  456. data/lib/TextParser/Pattern.rb +2 -1
  457. data/lib/TextParser/Rule.rb +2 -1
  458. data/lib/TextParser/StackElement.rb +2 -1
  459. data/lib/TextParser/State.rb +3 -2
  460. data/lib/TextParser/TokenDoc.rb +2 -1
  461. data/lib/TextScanner.rb +12 -5
  462. data/lib/TimeSheetReceiver.rb +2 -1
  463. data/lib/TimeSheetSender.rb +2 -1
  464. data/lib/TimeSheetSummary.rb +3 -2
  465. data/lib/TimeSheets.rb +2 -1
  466. data/lib/Tj3AppBase.rb +6 -5
  467. data/lib/Tj3Config.rb +5 -4
  468. data/lib/Tj3SheetAppBase.rb +2 -1
  469. data/lib/TjException.rb +2 -1
  470. data/lib/TjTime.rb +2 -1
  471. data/lib/TjpExample.rb +2 -1
  472. data/lib/TjpSyntaxRules.rb +264 -65
  473. data/lib/URLParameter.rb +2 -1
  474. data/lib/UTF8String.rb +2 -1
  475. data/lib/UserManual.rb +2 -1
  476. data/lib/VimSyntax.rb +3 -2
  477. data/lib/WorkingHours.rb +2 -1
  478. data/lib/XMLDocument.rb +2 -1
  479. data/lib/XMLElement.rb +2 -1
  480. data/lib/daemon/Daemon.rb +3 -1
  481. data/lib/daemon/ProcessIntercom.rb +3 -1
  482. data/lib/daemon/ProjectBroker.rb +84 -32
  483. data/lib/daemon/ProjectServer.rb +5 -3
  484. data/lib/daemon/ReportServer.rb +8 -5
  485. data/lib/daemon/ReportServlet.rb +166 -0
  486. data/lib/daemon/WebServer.rb +6 -150
  487. data/lib/daemon/WelcomePage.rb +80 -0
  488. data/lib/deep_copy.rb +2 -1
  489. data/lib/reports/CSVFile.rb +2 -1
  490. data/lib/reports/CollisionDetector.rb +2 -1
  491. data/lib/reports/ColumnTable.rb +2 -1
  492. data/lib/reports/GanttChart.rb +2 -1
  493. data/lib/reports/GanttContainer.rb +3 -4
  494. data/lib/reports/GanttHeader.rb +2 -1
  495. data/lib/reports/GanttHeaderScaleItem.rb +2 -1
  496. data/lib/reports/GanttLine.rb +12 -10
  497. data/lib/reports/GanttLoadStack.rb +2 -1
  498. data/lib/reports/GanttMilestone.rb +3 -3
  499. data/lib/reports/GanttRouter.rb +4 -1
  500. data/lib/reports/GanttTaskBar.rb +9 -7
  501. data/lib/reports/HTMLGraphics.rb +2 -1
  502. data/lib/reports/Navigator.rb +2 -1
  503. data/lib/reports/NikuReport.rb +79 -49
  504. data/lib/reports/Report.rb +42 -10
  505. data/lib/reports/ReportBase.rb +2 -1
  506. data/lib/reports/ReportContext.rb +2 -1
  507. data/lib/reports/ReportTable.rb +2 -1
  508. data/lib/reports/ReportTableCell.rb +63 -28
  509. data/lib/reports/ReportTableColumn.rb +2 -1
  510. data/lib/reports/ReportTableLegend.rb +5 -5
  511. data/lib/reports/ReportTableLine.rb +2 -1
  512. data/lib/reports/ResourceListRE.rb +2 -1
  513. data/lib/reports/StatusSheetReport.rb +4 -2
  514. data/lib/reports/TableReport.rb +42 -38
  515. data/lib/reports/TaskListRE.rb +4 -2
  516. data/lib/reports/TextReport.rb +2 -1
  517. data/lib/reports/TimeSheetReport.rb +4 -2
  518. data/lib/reports/TjpExportRE.rb +4 -2
  519. data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
  520. data/lib/tj3client.rb +19 -36
  521. data/lib/tj3d.rb +6 -2
  522. data/lib/tj3man.rb +4 -3
  523. data/lib/tj3ss_receiver.rb +2 -1
  524. data/lib/tj3ss_sender.rb +2 -1
  525. data/lib/tj3ts_receiver.rb +2 -1
  526. data/lib/tj3ts_sender.rb +2 -1
  527. data/lib/tj3ts_summary.rb +2 -1
  528. data/manual/Day_To_Day_Juggling +36 -0
  529. data/manual/How_To_Contribute +9 -4
  530. data/manual/Installation +10 -3
  531. data/manual/TaskJuggler_Internals +0 -2
  532. data/manual/Tutorial +25 -3
  533. data/prj_cfg.rb +4 -2
  534. data/spec/IntervalList_spec.rb +138 -0
  535. data/spec/ProjectBroker_spec.rb +133 -0
  536. data/tasks/changelog.rake +41 -24
  537. data/tasks/csts.rake +1 -0
  538. data/tasks/gem.rake +1 -0
  539. data/tasks/rcov.rake +1 -1
  540. data/tasks/spec.rake +7 -0
  541. data/tasks/test.rake +1 -0
  542. data/test/MessageChecker.rb +2 -1
  543. data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
  544. data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
  545. data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
  546. data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
  547. data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
  548. data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
  549. data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
  550. data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
  551. data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
  552. data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
  553. data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
  554. data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
  555. data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
  556. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
  557. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
  558. data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
  559. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
  560. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
  561. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
  562. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
  563. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
  564. data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
  565. data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
  566. data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
  567. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
  568. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
  569. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
  570. data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
  571. data/test/TestSuite/StatusSheets/sender.log +256 -0
  572. data/test/TestSuite/StatusSheets/statussheets.log +9 -0
  573. data/test/TestSuite/StatusSheets/tj3d.log +395 -0
  574. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
  575. data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
  576. data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
  577. data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
  578. data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
  579. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
  580. data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
  581. data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
  582. data/test/all.rb +2 -4
  583. data/test/test_BatchProcessor.rb +2 -1
  584. data/test/test_CSV-Reports.rb +34 -23
  585. data/test/test_CSVFile.rb +2 -1
  586. data/test/test_CollisionDetector.rb +3 -2
  587. data/test/test_Journal.rb +2 -1
  588. data/test/test_Limits.rb +2 -1
  589. data/test/test_LogicalExpression.rb +2 -1
  590. data/test/test_MacroTable.rb +2 -1
  591. data/test/test_Project.rb +3 -2
  592. data/test/test_ProjectFileScanner.rb +2 -1
  593. data/test/test_PropertySet.rb +2 -1
  594. data/test/test_Query.rb +2 -1
  595. data/test/test_RealFormat.rb +2 -1
  596. data/test/test_ReportGenerator.rb +2 -1
  597. data/test/test_RichText.rb +2 -1
  598. data/test/test_Scheduler.rb +2 -1
  599. data/test/test_ShiftAssignments.rb +2 -1
  600. data/test/test_SimpleQueryExpander.rb +2 -1
  601. data/test/test_Syntax.rb +2 -1
  602. data/test/test_TextFormatter.rb +3 -2
  603. data/test/test_TjTime.rb +2 -1
  604. data/test/test_TjpExample.rb +2 -1
  605. data/test/test_URLParameter.rb +2 -1
  606. data/test/test_UTF8String.rb +2 -1
  607. data/test/test_WorkingHours.rb +2 -1
  608. data/test/test_deep_copy.rb +2 -1
  609. metadata +74 -20
  610. data/doc/StringIO.html +0 -595
  611. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
  612. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
  613. data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
data/lib/TextFormatter.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env ruby -w
2
2
  # encoding: UTF-8
3
3
  #
4
- # = RichTextElement.rb -- The TaskJuggler III Project Management Software
4
+ # = TextFormatter.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
data/lib/TextParser.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TextParser.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -383,7 +384,11 @@ class TaskJuggler
383
384
  @val = stackEntry.val
384
385
  @sourceFileInfo = stackEntry.sourceFileInfo
385
386
  # Now call the pattern action to compute the value of the pattern.
386
- result = state.pattern.function.call
387
+ begin
388
+ result = state.pattern.function.call
389
+ rescue AttributeOverwrite
390
+ @scanner.warning('attr_overwrite', $!.to_s)
391
+ end
387
392
  end
388
393
 
389
394
  # We use the SourceFileInfo of the first token of the pattern to store
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = Pattern.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = Rule.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = StackElement.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env ruby -w
2
2
  # encoding: UTF-8
3
3
  #
4
- # = Rule.rb -- The TaskJuggler III Project Management Software
4
+ # = State.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TokenDoc.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
data/lib/TextScanner.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TextScanner.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -262,10 +263,10 @@ class TaskJuggler
262
263
  def open(fileNameIsBuffer = false)
263
264
  @fileNameIsBuffer = fileNameIsBuffer
264
265
  if fileNameIsBuffer
265
- @fileStack = [ [ @cf = BufferStreamHandle.new(@masterFile), nil ] ]
266
+ @fileStack = [ [ @cf = BufferStreamHandle.new(@masterFile), nil, nil ] ]
266
267
  else
267
268
  begin
268
- @fileStack = [ [ @cf = FileStreamHandle.new(@masterFile), nil ] ]
269
+ @fileStack = [ [ @cf = FileStreamHandle.new(@masterFile), nil, nil ] ]
269
270
  rescue StandardError
270
271
  error('open_file', "Cannot open file #{@masterFile}")
271
272
  end
@@ -288,7 +289,7 @@ class TaskJuggler
288
289
  # this file is finished, we will continue in the old file after the
289
290
  # location where we started with the new file. The method returns the full
290
291
  # qualified name of the included file.
291
- def include(includeFileName, sfi)
292
+ def include(includeFileName, sfi, &block)
292
293
  if includeFileName[0] != '/'
293
294
  pathOfCallingFile = @fileStack.last[0].dirname
294
295
  path = pathOfCallingFile.empty? ? '' : pathOfCallingFile + '/'
@@ -313,7 +314,8 @@ class TaskJuggler
313
314
 
314
315
  # Open the new file and push the handle on the @fileStack.
315
316
  begin
316
- @fileStack << [ (@cf = FileStreamHandle.new(includeFileName)), nil, ]
317
+ @fileStack << [ (@cf = FileStreamHandle.new(includeFileName)),
318
+ nil, block ]
317
319
  Log << "Parsing file #{includeFileName}"
318
320
  rescue StandardError
319
321
  error('bad_include', "Cannot open include file #{includeFileName}", sfi)
@@ -364,6 +366,11 @@ class TaskJuggler
364
366
  # @fileStack.
365
367
  @finishLastFile = false
366
368
  #Log << "Completed file #{@cf.fileName}"
369
+
370
+ # If we have a block to be executed on EOF, we call it now.
371
+ onEof = @fileStack.last[2]
372
+ onEof.call if onEof
373
+
367
374
  @cf.close if @cf
368
375
  @fileStack.pop
369
376
 
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TimeSheetReceiver.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TimeSheetSender.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env ruby -w
2
2
  # encoding: UTF-8
3
3
  #
4
- # = TimeSheetSender.rb -- The TaskJuggler III Project Management Software
4
+ # = TimeSheetSummary.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
data/lib/TimeSheets.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TimeSheets.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
data/lib/Tj3AppBase.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = Tj3AppBase.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -39,8 +40,8 @@ class TaskJuggler
39
40
 
40
41
  @opts.banner = "#{AppConfig.softwareName} v#{AppConfig.version} - " +
41
42
  "#{AppConfig.packageInfo}\n\n" +
42
- "Copyright (c) #{AppConfig.copyright.join(', ')}" +
43
- " by #{AppConfig.authors.join(', ')}\n\n" +
43
+ "Copyright (c) #{AppConfig.copyright.join(', ')}\n" +
44
+ " by #{AppConfig.authors.join(', ')}\n\n" +
44
45
  "#{AppConfig.license}\n" +
45
46
  "For more info about #{AppConfig.softwareName} see " +
46
47
  "#{AppConfig.contact}\n\n" +
@@ -98,8 +99,8 @@ class TaskJuggler
98
99
  unless @silent
99
100
  puts "#{AppConfig.softwareName} v#{AppConfig.version} - " +
100
101
  "#{AppConfig.packageInfo}\n\n" +
101
- "Copyright (c) #{AppConfig.copyright.join(', ')}" +
102
- " by #{AppConfig.authors.join(', ')}\n\n" +
102
+ "Copyright (c) #{AppConfig.copyright.join(', ')}\n" +
103
+ " by #{AppConfig.authors.join(', ')}\n\n" +
103
104
  "#{AppConfig.license}\n"
104
105
  end
105
106
 
data/lib/Tj3Config.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = Tj3Config.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -13,12 +14,12 @@
13
14
  require 'UTF8String'
14
15
  require 'AppConfig'
15
16
 
16
- AppConfig.version = '0.0.8'
17
+ AppConfig.version = '0.0.9'
17
18
  AppConfig.packageName = 'taskjuggler'
18
19
  AppConfig.softwareName = 'TaskJuggler III'
19
20
  AppConfig.packageInfo = 'A Project Management Software'
20
- AppConfig.copyright = [ (2006..2010).to_a ]
21
- AppConfig.authors = [ 'Chris Schlaeger <cs(a)kde.org>' ]
21
+ AppConfig.copyright = [ (2006..2011).to_a ]
22
+ AppConfig.authors = [ 'Chris Schlaeger <chris@linux.com>' ]
22
23
  AppConfig.contact = 'http://www.taskjuggler.org'
23
24
  AppConfig.license = <<'EOT'
24
25
  This program is free software; you can redistribute it and/or modify it under
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = Tj3SheetAppBase.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
data/lib/TjException.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TjException.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
data/lib/TjTime.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TjTime.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
data/lib/TjpExample.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TjpExample.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = TjpSyntaxRules.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
7
8
  #
8
9
  # This program is free software; you can redistribute it and/or modify
9
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -129,8 +130,12 @@ EOT
129
130
  pattern(%w( _allocate !allocations ), lambda {
130
131
  checkContainer('allocate')
131
132
  # Don't use << operator here so the 'provided' flag gets set properly.
132
- @property['allocate', @scenarioIdx] =
133
- @property['allocate', @scenarioIdx] + @val[1]
133
+ begin
134
+ @property['allocate', @scenarioIdx] =
135
+ @property['allocate', @scenarioIdx] + @val[1]
136
+ rescue AttributeOverwrite
137
+ # Adding multiple allocates for a task is a pretty common idiom.
138
+ end
134
139
  })
135
140
  doc('allocate', <<'EOT'
136
141
  Specify which resources should be allocated to the task. The
@@ -617,6 +622,27 @@ Specifies the horizontal alignment of the cell content. The logical expression
617
622
  specifies for which cells the alignment setting should be used. If multiple
618
623
  halign patterns are provided for a column, the first matching one is used for
619
624
  each cell.
625
+ EOT
626
+ )
627
+
628
+ pattern(%w( _listmode $INTEGER ), lambda {
629
+ @column.listMode = @val[1]
630
+ })
631
+ also(%w( listtype.column ))
632
+ doc('listmode.column', <<'EOT'
633
+ Specifies how the list items look like. The result of this setting depends on
634
+ the actual column. Please refer to the [columnid|documentation for the
635
+ specific column] to learn more about the effect that this setting has.
636
+ EOT
637
+ )
638
+
639
+ pattern(%w( _listtype !listType ), lambda {
640
+ @column.listType = @val[1]
641
+ })
642
+ also(%w( listmode.column ))
643
+ doc('listtype.column', <<'EOT'
644
+ Specifies what type of list should be used. This attribute only affects
645
+ columns that contain a list of items.
620
646
  EOT
621
647
  )
622
648
 
@@ -1035,7 +1061,11 @@ EOT
1035
1061
 
1036
1062
  def rule_fail
1037
1063
  pattern(%w( _fail !logicalExpression ), lambda {
1038
- @property['fail', @scenarioIdx] = @val[1]
1064
+ begin
1065
+ @property['fail', @scenarioIdx] =
1066
+ @property['fail', @scenarioIdx] + [ @val[1] ]
1067
+ rescue AttributeOverwrite
1068
+ end
1039
1069
  })
1040
1070
  doc('fail', <<'EOT'
1041
1071
  The fail attribute adds a logical expression to the property. The condition
@@ -1326,7 +1356,9 @@ EOT
1326
1356
  "You must declare the project header before you include other " +
1327
1357
  "files.")
1328
1358
  end
1329
- @project.inputFiles << @scanner.include(@val[0], @sourceFileInfo[0])
1359
+ @project.inputFiles << @scanner.include(@val[0], @sourceFileInfo[0]) do
1360
+ popFileStack
1361
+ end
1330
1362
  })
1331
1363
  end
1332
1364
 
@@ -1350,8 +1382,9 @@ EOT
1350
1382
 
1351
1383
  def rule_includeProperties
1352
1384
  pattern(%w( !includeFileName !includeAttributes ), lambda {
1353
- popFileStack
1354
- @project.inputFiles << @scanner.include(@val[0], @sourceFileInfo[0])
1385
+ @project.inputFiles << @scanner.include(@val[0], @sourceFileInfo[0]) do
1386
+ popFileStack
1387
+ end
1355
1388
  })
1356
1389
  end
1357
1390
 
@@ -1716,6 +1749,17 @@ EOT
1716
1749
  })
1717
1750
  end
1718
1751
 
1752
+ def rule_listType
1753
+ pattern([ '_bullets' ], lambda { :bullets })
1754
+ descr('List items as bullet list')
1755
+
1756
+ pattern([ '_comma' ], lambda { :comma })
1757
+ descr('List items as comma separated list')
1758
+
1759
+ pattern([ '_numbered' ], lambda { :numbered })
1760
+ descr('List items as numbered list')
1761
+ end
1762
+
1719
1763
  def rule_loadunit
1720
1764
  pattern([ '_days' ], lambda { :days })
1721
1765
  descr('Display all load and duration values as days.')
@@ -1935,6 +1979,16 @@ EOT
1935
1979
  pattern(%w( !reportPeriod ))
1936
1980
  pattern(%w( !reportStart ))
1937
1981
  pattern(%w( !reportTitle ))
1982
+ pattern(%w( _timeoff $STRING $STRING ), lambda {
1983
+ @property.set('timeOffId', @val[1])
1984
+ @property.set('timeOffName', @val[2])
1985
+ })
1986
+ doc('timeoff.nikureport', <<EOF
1987
+ Set the Clarity project ID and name that the vacation time will be reported to.
1988
+ EOF
1989
+ )
1990
+ arg(1, 'ID', 'The Clarity project ID')
1991
+ arg(2, 'Name', 'The Clarity project name')
1938
1992
  end
1939
1993
 
1940
1994
  def rule_nikuReportBody
@@ -2063,6 +2117,9 @@ EOT
2063
2117
  pattern(%w( $INTEGER ), lambda {
2064
2118
  LogicalOperation.new(@val[0])
2065
2119
  })
2120
+ pattern(%w( $FLOAT ), lambda {
2121
+ LogicalOperation.new(@val[0])
2122
+ })
2066
2123
  pattern(%w( $STRING ), lambda {
2067
2124
  LogicalOperation.new(@val[0])
2068
2125
  })
@@ -2469,9 +2526,7 @@ EOT
2469
2526
  end
2470
2527
 
2471
2528
  def rule_projectBodyInclude
2472
- pattern(%w( _include !includeFile !projectBodyAttributes . ), lambda {
2473
- popFileStack
2474
- })
2529
+ pattern(%w( _include !includeFile !projectBodyAttributes . ))
2475
2530
  lastSyntaxToken(1)
2476
2531
  doc('include.project', <<'EOT'
2477
2532
  Includes the specified file name as if its contents would be written
@@ -2489,9 +2544,7 @@ EOT
2489
2544
  end
2490
2545
 
2491
2546
  def rule_prologInclude
2492
- pattern(%w( _include !includeFile !projectProlog . ), lambda {
2493
- popFileStack
2494
- })
2547
+ pattern(%w( _include !includeFile !projectProlog . ))
2495
2548
  lastSyntaxToken(1)
2496
2549
  doc('include.macro', <<'EOT'
2497
2550
  Includes the specified file name as if its contents would be written
@@ -2607,16 +2660,20 @@ task or resource is split over several files. E. g. the vacation dates for the
2607
2660
  resources may be in a separate file that was generated by some other tool.
2608
2661
  EOT
2609
2662
  )
2663
+ example('Supplement')
2610
2664
 
2611
2665
  pattern(%w( !task ))
2612
2666
  pattern(%w( !timeSheet ))
2613
2667
  pattern(%w( !timeSheetReport ))
2614
2668
  pattern(%w( _vacation !vacationName !intervals ), lambda {
2615
- @project['vacations'] = @project['vacations'] + @val[2]
2669
+ begin
2670
+ @project['vacations'] = @project['vacations'] + @val[2]
2671
+ rescue AttributeOverwrite
2672
+ end
2616
2673
  })
2617
2674
  doc('vacation', <<'EOT'
2618
2675
  Specify a global vacation period for all subsequently defined resources. A
2619
- vacation can also be used to block out the time before a resource joint or
2676
+ vacation can also be used to block out the time before a resource joined or
2620
2677
  after it left. For employees changing their work schedule from full-time to
2621
2678
  part-time, or vice versa, please refer to the 'Shift' property.
2622
2679
  EOT
@@ -2674,11 +2731,7 @@ EOT
2674
2731
  "#{@val[1]} is not a list attribute. Only those can be purged.",
2675
2732
  @sourceFileInfo[1])
2676
2733
  end
2677
- if attributeDefinition.scenarioSpecific
2678
- @property[@val[1], @scenarioIdx] = attributeDefinition.default.dup
2679
- else
2680
- @property.set(@val[1], attributeDefinition.default.dup)
2681
- end
2734
+ @property.getAttr(@val[1], @scenarioIdx).reset
2682
2735
  })
2683
2736
  doc('purge', <<'EOT'
2684
2737
  List attributes, like regular attributes, can inherit their values from the
@@ -2810,7 +2863,18 @@ EOT
2810
2863
  descr('A group of columns with one column for each day')
2811
2864
 
2812
2865
  singlePattern('_directreports')
2813
- descr('The resources that have this resource assigned as manager.')
2866
+ descr(<<'EOT'
2867
+ The resources that have this resource assigned as manager.
2868
+
2869
+ The list can be customized by the [listmode.column listmode] attribute. The
2870
+ following modes are supported:
2871
+
2872
+ # ID
2873
+ # Name ''(This is the default)''
2874
+ # Name (ID)
2875
+ # ID: Name
2876
+ EOT
2877
+ )
2814
2878
 
2815
2879
  singlePattern('_duration')
2816
2880
  descr('The duration of a task')
@@ -2843,12 +2907,28 @@ EOT
2843
2907
  descr(<<'EOT'
2844
2908
  A list of tasks that depend on the current task. The list contains the names,
2845
2909
  the IDs, the date and the type of dependency. For the type the following
2846
- symbols are used
2910
+ symbols are used for <nowiki><dep></nowiki>.
2847
2911
 
2848
2912
  * '''<nowiki>]->[</nowiki>''': End-to-Start dependency
2849
2913
  * '''<nowiki>[->[</nowiki>''': Start-to-Start dependency
2850
2914
  * '''<nowiki>]->]</nowiki>''': End-to-End dependency
2851
2915
  * '''<nowiki>[->]</nowiki>''': Start-to-End dependency
2916
+
2917
+ The list can be customized by the [listmode.column listmode] attribute. The
2918
+ following modes are supported:
2919
+
2920
+ # ID <nowiki><dep></nowiki> Date
2921
+ # Name <nowiki><dep></nowiki> Date
2922
+ # Name (ID) <nowiki><dep></nowiki> Date
2923
+ # ID: Name <nowiki><dep></nowiki> Date
2924
+ # ID <nowiki><dep></nowiki>
2925
+ # Name <nowiki><dep></nowiki>
2926
+ # Name (ID) <nowiki><dep></nowiki>
2927
+ # ID: Name <nowiki><dep></nowiki>
2928
+ # ID
2929
+ # Name
2930
+ # Name (ID)
2931
+ # ID: Name
2852
2932
  EOT
2853
2933
  )
2854
2934
 
@@ -2916,6 +2996,20 @@ EOT
2916
2996
  singlePattern('_line')
2917
2997
  descr('The line number in the report')
2918
2998
 
2999
+ singlePattern('_managers')
3000
+ descr(<<'EOT'
3001
+ A list of managers that the resource reports to.
3002
+
3003
+ The list can be customized by the [listmode.column listmode] attribute. The
3004
+ following modes are supported:
3005
+
3006
+ # ID
3007
+ # Name ''(This is the default)''
3008
+ # Name (ID)
3009
+ # ID: Name
3010
+ EOT
3011
+ )
3012
+
2919
3013
  singlePattern('_maxend')
2920
3014
  descr('The latest allowed end of a task')
2921
3015
 
@@ -2945,7 +3039,7 @@ EOT
2945
3039
  'it is a part of.')
2946
3040
 
2947
3041
  singlePattern('_precursors')
2948
- descr(<<EOT
3042
+ descr(<<'EOT'
2949
3043
  A list of tasks the current task depends on. The list contains the names, the
2950
3044
  IDs, the date and the type of dependency. For the type the following symbols
2951
3045
  are used
@@ -2954,6 +3048,22 @@ are used
2954
3048
  * '''<nowiki>[->[</nowiki>''': Start-to-Start dependency
2955
3049
  * '''<nowiki>]->]</nowiki>''': End-to-End dependency
2956
3050
  * '''<nowiki>[->]</nowiki>''': Start-to-End dependency
3051
+
3052
+ The list can be customized by the [listmode.column listmode] attribute. The
3053
+ following modes are supported:
3054
+
3055
+ # ID <nowiki><dep></nowiki> Date
3056
+ # Name <nowiki><dep></nowiki> Date
3057
+ # Name (ID) <nowiki><dep></nowiki> Date
3058
+ # ID: Name <nowiki><dep></nowiki> Date
3059
+ # ID <nowiki><dep></nowiki>
3060
+ # Name <nowiki><dep></nowiki>
3061
+ # Name (ID) <nowiki><dep></nowiki>
3062
+ # ID: Name <nowiki><dep></nowiki>
3063
+ # ID
3064
+ # Name
3065
+ # Name (ID)
3066
+ # ID: Name
2957
3067
  EOT
2958
3068
  )
2959
3069
 
@@ -2969,15 +3079,44 @@ EOT
2969
3079
  singlePattern('_reports')
2970
3080
  descr(<<'EOT'
2971
3081
  All resources that have this resource assigned as a direct or indirect manager.
3082
+
3083
+ The list can be customized by the [listmode.column listmode] attribute. The
3084
+ following modes are supported:
3085
+
3086
+ # ID
3087
+ # Name ''(This is the default)''
3088
+ # Name (ID)
3089
+ # ID: Name
2972
3090
  EOT
2973
3091
  )
2974
3092
 
2975
3093
  singlePattern('_resources')
2976
- descr('A list of resources that are assigned to the task in the report ' +
2977
- 'time frame.')
3094
+ descr(<<'EOT'
3095
+ A list of resources that are assigned to the task in the report time frame.
3096
+
3097
+ The list can be customized by the [listmode.column listmode] attribute. The
3098
+ following modes are supported:
3099
+
3100
+ # ID
3101
+ # Name ''(This is the default)''
3102
+ # Name (ID)
3103
+ # ID: Name
3104
+ EOT
3105
+ )
2978
3106
 
2979
3107
  singlePattern('_responsible')
2980
- descr('The responsible people for this task')
3108
+ descr(<<'EOT'
3109
+ The responsible people for this task.
3110
+
3111
+ The list can be customized by the [listmode.column listmode] attribute. The
3112
+ following modes are supported:
3113
+
3114
+ # ID
3115
+ # Name ''(This is the default)''
3116
+ # Name (ID)
3117
+ # ID: Name
3118
+ EOT
3119
+ )
2981
3120
 
2982
3121
  singlePattern('_revenue')
2983
3122
  descr(<<'EOT'
@@ -3005,8 +3144,19 @@ EOT
3005
3144
  singlePattern('_targets')
3006
3145
  descr(<<'EOT'
3007
3146
  A list of milestones that depend on the current task. For container tasks it
3008
- will also include the targets of the child tasks. Usually the task name, the
3009
- task ID and the start date will be listed.
3147
+ will also include the targets of the child tasks.
3148
+
3149
+ The list can be customized by the [listmode.column listmode] attribute. The
3150
+ following modes are supported:
3151
+
3152
+ # ID
3153
+ # Name
3154
+ # Name (ID)
3155
+ # ID: Name
3156
+ # ID (Date)
3157
+ # Name (Date) ''(This is the default)''
3158
+ # Name (ID) Date
3159
+ # ID: Name Date
3010
3160
  EOT
3011
3161
  )
3012
3162
 
@@ -3486,6 +3636,7 @@ resource is split over several files. E. g. the vacation dates for the
3486
3636
  resources may be in a separate file that was generated by some other tool.
3487
3637
  EOT
3488
3638
  )
3639
+ example('Supplement', 'resource')
3489
3640
 
3490
3641
  # Other attributes will be added automatically.
3491
3642
  end
@@ -3583,9 +3734,9 @@ EOT
3583
3734
  doc('booking', <<'EOT'
3584
3735
  The booking attribute can be used to report completed work. This can be part
3585
3736
  of the necessary effort or the whole effort. When the scenario is scheduled in
3586
- projection mode, TaskJuggler assumes that only the work reported with bookings
3587
- has been done up to now. It then schedules a plan for the still missing
3588
- effort. All task with bookings must be scheduled in ''''asap'''' mode.
3737
+ [[projection]] mode, TaskJuggler assumes that only the work reported with
3738
+ bookings has been done up to now. It then schedules a plan for the still
3739
+ missing effort. All task with bookings must be scheduled in ''''asap'''' mode.
3589
3740
 
3590
3741
  This attribute is also used within export reports to describe the details of a
3591
3742
  scheduled project.
@@ -3594,7 +3745,7 @@ The sloppy attribute can be used when you want to skip non-working time or
3594
3745
  other allocations automatically. If it's not given, all bookings must only
3595
3746
  cover working time for the resource.
3596
3747
 
3597
- The booking attributes is intended to capture the exact amount of completed
3748
+ The booking attributes is designed to capture the exact amount of completed
3598
3749
  work. This attribute is not really intended to specify completed effort by
3599
3750
  hand. Usually, booking statements are generated by [[export]] reports. The
3600
3751
  [[sloppy.booking|sloppy]] and [[overtime.booking|overtime]] attributes are
@@ -3613,6 +3764,7 @@ EOT
3613
3764
  Set per-interval usage limits for the resource.
3614
3765
  EOT
3615
3766
  )
3767
+ example('Limits-1', '6')
3616
3768
 
3617
3769
  pattern(%w( _managers !resourceList ), lambda {
3618
3770
  @property['managers', @scenarioIdx] =
@@ -3659,12 +3811,15 @@ EOT
3659
3811
  )
3660
3812
 
3661
3813
  pattern(%w( _vacation !vacationName !intervals ), lambda {
3662
- @property['vacations', @scenarioIdx] =
3663
- @property['vacations', @scenarioIdx ] + @val[2]
3814
+ begin
3815
+ @property['vacations', @scenarioIdx] =
3816
+ @property['vacations', @scenarioIdx ] + @val[2]
3817
+ rescue AttributeOverwrite
3818
+ end
3664
3819
  })
3665
3820
  doc('vacation.resource', <<'EOT'
3666
3821
  Specify a vacation period for the resource. It can also be used to block out
3667
- the time before a resource joint or after it left. For employees changing
3822
+ the time before a resource joined or after it left. For employees changing
3668
3823
  their work schedule from full-time to part-time, or vice versa, please refer
3669
3824
  to the 'Shift' property.
3670
3825
  EOT
@@ -3681,18 +3836,23 @@ EOT
3681
3836
  @property = @property.parent
3682
3837
  })
3683
3838
  doc('scenario', <<'EOT'
3684
- Specifies the different project scenarios. A scenario that is nested into
3685
- another one inherits all inheritable values from the enclosing scenario. There
3686
- can only be one top-level scenario. It is usually called plan scenario. By
3687
- default this scenario is pre-defined but can be overwritten with any other
3688
- scenario. In this documenation each attribute is listed as scenario specific
3689
- or not. A scenario specific attribute can be overwritten in a child scenario
3690
- thereby creating a new, slightly different variant of the parent scenario.
3691
- This can be helpful to do plan/actual comparisons if what-if-anlysises.
3839
+ Defines a new project scenario. By default, the project has only one scenario
3840
+ called ''''plan''''. To do plan vs. actual comparisons or to do a
3841
+ what-if-analysis, you can define a set of scenarios. There can only be one
3842
+ top-level scenario. Additional scenarios are either derived from this
3843
+ top-level scenario or other scenarios.
3844
+
3845
+ Each nested scenario is a variation of the enclosing scenario. All scenarios
3846
+ share the same set of properties (task, resources, etc.) but the attributes
3847
+ that are listed as scenario specific may differ between the various
3848
+ scenarios. A nested scenario uses all attributes from the enclosing scenario
3849
+ unless the user has specified a different value for this attribute.
3692
3850
 
3693
- By using bookings and enabling the projection mode you can capture the
3694
- progress of your project and constantly get updated project plans for the
3695
- future work.
3851
+ By default, the scheduler assigns resources to task beginning with the project
3852
+ start date. If the scenario is switched to projection mode, no assignments
3853
+ will be made prior to the current date or the date specified by [[now]]. In
3854
+ this case, TaskJuggler assumes, that all assignements prior to the
3855
+ current date have been provided by [[booking]] statements.
3696
3856
  EOT
3697
3857
  )
3698
3858
  end
@@ -3834,10 +3994,8 @@ EOT
3834
3994
  def rule_shiftAssignment
3835
3995
  pattern(%w( !shiftId !intervalsOptional ), lambda {
3836
3996
  # Make sure we have a ShiftAssignment for the property.
3837
- if @property['shifts', @scenarioIdx].nil?
3838
- @property['shifts', @scenarioIdx] = ShiftAssignments.new
3839
- @property['shifts', @scenarioIdx].project = @project
3840
- end
3997
+ sa = @property['shifts', @scenarioIdx] || ShiftAssignments.new
3998
+ sa.project = @project
3841
3999
 
3842
4000
  if @val[1].nil?
3843
4001
  intervals = [ Interval.new(@project['start'], @project['end']) ]
@@ -3845,16 +4003,20 @@ EOT
3845
4003
  intervals = @val[1]
3846
4004
  end
3847
4005
  intervals.each do |interval|
3848
- if !@property['shifts', @scenarioIdx].
3849
- addAssignment(ShiftAssignment.new(@val[0].scenario(@scenarioIdx),
3850
- interval))
4006
+ if !sa.addAssignment(ShiftAssignment.new(@val[0].scenario(@scenarioIdx),
4007
+ interval))
3851
4008
  error('shift_assignment_overlap',
3852
4009
  'Shifts may not overlap each other.',
3853
4010
  @sourceFileInfo[0], @property)
3854
4011
  end
3855
4012
  end
3856
4013
  # Set same value again to set the 'provided' state for the attribute.
3857
- @property['shifts', @scenarioIdx] = @property['shifts', @scenarioIdx]
4014
+ begin
4015
+ @property['shifts', @scenarioIdx] = sa
4016
+ rescue AttributeOverwrite
4017
+ # Multiple shift assignments are a common idiom, so don't warn about
4018
+ # them.
4019
+ end
3858
4020
  })
3859
4021
  end
3860
4022
 
@@ -4351,6 +4513,7 @@ task is split over several files. E. g. the vacation dates for the
4351
4513
  resources may be in a separate file that was generated by some other tool.
4352
4514
  EOT
4353
4515
  )
4516
+ example('Supplement', 'task')
4354
4517
 
4355
4518
  pattern(%w( !task ))
4356
4519
  pattern(%w( !taskScenarioAttributes ))
@@ -4635,7 +4798,10 @@ EOT
4635
4798
  checkContainer('depends')
4636
4799
  @property['depends', @scenarioIdx] =
4637
4800
  @property['depends', @scenarioIdx] + @val[1]
4638
- @property['forward', @scenarioIdx] = true
4801
+ begin
4802
+ @property['forward', @scenarioIdx] = true
4803
+ rescue AttributeOverwrite
4804
+ end
4639
4805
  })
4640
4806
  doc('depends', <<'EOT'
4641
4807
  Specifies that the task cannot start before the specified tasks have been
@@ -4649,6 +4815,8 @@ EOT
4649
4815
  pattern(%w( _duration !calendarDuration ), lambda {
4650
4816
  checkContainer('duration')
4651
4817
  @property['duration', @scenarioIdx] = @val[1]
4818
+ @property['effort', @scenarioIdx] = 0
4819
+ @property['length', @scenarioIdx] = 0
4652
4820
  })
4653
4821
  doc('duration', <<'EOT'
4654
4822
  Specifies the time the task should last. This is calendar time, not working
@@ -4656,7 +4824,8 @@ time. 7d means one week. If resources are specified they are allocated when
4656
4824
  available. Availability of resources has no impact on the duration of the
4657
4825
  task. It will always be the specified duration.
4658
4826
 
4659
- Tasks may not have subtasks if this attribute is used.
4827
+ Tasks may not have subtasks if this attribute is used. Setting this attribute
4828
+ will reset the [[effort]] and [[length]] attributes.
4660
4829
  EOT
4661
4830
  )
4662
4831
  example('Durations')
@@ -4669,6 +4838,8 @@ EOT
4669
4838
  @sourceFileInfo[1], @property)
4670
4839
  end
4671
4840
  @property['effort', @scenarioIdx] = @val[1]
4841
+ @property['duration', @scenarioIdx] = 0
4842
+ @property['length', @scenarioIdx] = 0
4672
4843
  })
4673
4844
  doc('effort', <<'EOT'
4674
4845
  Specifies the effort needed to complete the task. An effort of 4d can be done
@@ -4681,7 +4852,8 @@ and resources. This is only true if the task can be partitioned without adding
4681
4852
  any overhead. For more information about this read ''The Mythical Man-Month'' by
4682
4853
  Frederick P. Brooks, Jr.
4683
4854
 
4684
- Tasks may not have subtasks if this attribute is used.
4855
+ Tasks may not have subtasks if this attribute is used. Setting this attribute
4856
+ will reset the [[duration]] and [[length]] attributes.
4685
4857
  EOT
4686
4858
  )
4687
4859
  example('Durations')
@@ -4689,7 +4861,10 @@ EOT
4689
4861
 
4690
4862
  pattern(%w( _end !valDate ), lambda {
4691
4863
  @property['end', @scenarioIdx] = @val[1]
4692
- @property['forward', @scenarioIdx] = false
4864
+ begin
4865
+ @property['forward', @scenarioIdx] = false
4866
+ rescue AttributeOverwrite
4867
+ end
4693
4868
  })
4694
4869
  doc('end', <<'EOT'
4695
4870
  The end date of the task. When specified for the top-level (default) scenario
@@ -4726,6 +4901,8 @@ EOT
4726
4901
  pattern(%w( _length !workingDuration ), lambda {
4727
4902
  checkContainer('length')
4728
4903
  @property['length', @scenarioIdx] = @val[1]
4904
+ @property['duration', @scenarioIdx] = 0
4905
+ @property['effort', @scenarioIdx] = 0
4729
4906
  })
4730
4907
  doc('length', <<'EOT'
4731
4908
  Specifies the time the task occupies the resources. This is working time, not
@@ -4737,7 +4914,8 @@ has no impact on the duration of the task. A day where none of the specified
4737
4914
  resources is available is still considered a working day, if there is no
4738
4915
  global vacation or global working time defined.
4739
4916
 
4740
- Tasks may not have subtasks if this attribute is used.
4917
+ Tasks may not have subtasks if this attribute is used. Setting this attribute
4918
+ will reset the [[duration]] and [[effort]] attributes.
4741
4919
  EOT
4742
4920
  )
4743
4921
  also(%w( duration effort ))
@@ -4750,6 +4928,7 @@ EOT
4750
4928
  Set per-interval allocation limits for the task. This setting affects all allocations for this task.
4751
4929
  EOT
4752
4930
  )
4931
+ example('Limits-1', '2')
4753
4932
 
4754
4933
  pattern(%w( _maxend !valDate ), lambda {
4755
4934
  @property['maxend', @scenarioIdx] = @val[1]
@@ -4825,7 +5004,10 @@ EOT
4825
5004
  checkContainer('precedes')
4826
5005
  @property['precedes', @scenarioIdx] =
4827
5006
  @property['precedes', @scenarioIdx] + @val[1]
4828
- @property['forward', @scenarioIdx] = false
5007
+ begin
5008
+ @property['forward', @scenarioIdx] = false
5009
+ rescue AttributeOverwrite
5010
+ end
4829
5011
  })
4830
5012
  doc('precedes', <<'EOT'
4831
5013
  Specifies that the tasks with the specified IDs cannot start before the task
@@ -4871,7 +5053,11 @@ EOT
4871
5053
  error('unknown_projectid', "Unknown project ID #{@val[1]}",
4872
5054
  @sourceFileInfo[1])
4873
5055
  end
4874
- @property['projectid', @scenarioIdx] = @val[1]
5056
+ begin
5057
+ @property['projectid', @scenarioIdx] = @val[1]
5058
+ rescue AttributeOverwrite
5059
+ # This attribute always overwrites the implicitely provided ID.
5060
+ end
4875
5061
  })
4876
5062
  doc('projectid.task', <<'EOT'
4877
5063
  In larger projects it may be desireable to work with different project IDs for
@@ -4912,9 +5098,15 @@ EOT
4912
5098
 
4913
5099
  pattern(%w( _scheduling !schedulingDirection ), lambda {
4914
5100
  if @val[1] == 'alap'
4915
- @property['forward', @scenarioIdx] = false
5101
+ begin
5102
+ @property['forward', @scenarioIdx] = false
5103
+ rescue AttributeOverwrite
5104
+ end
4916
5105
  elsif @val[1] == 'asap'
4917
- @property['forward', @scenarioIdx] = true
5106
+ begin
5107
+ @property['forward', @scenarioIdx] = true
5108
+ rescue AttributeOverwrite
5109
+ end
4918
5110
  end
4919
5111
  })
4920
5112
  doc('scheduling', <<'EOT'
@@ -4974,7 +5166,10 @@ EOT
4974
5166
 
4975
5167
  pattern(%w( _start !valDate), lambda {
4976
5168
  @property['start', @scenarioIdx] = @val[1]
4977
- @property['forward', @scenarioIdx] = true
5169
+ begin
5170
+ @property['forward', @scenarioIdx] = true
5171
+ rescue AttributeOverwrite
5172
+ end
4978
5173
  })
4979
5174
  doc('start', <<'EOT'
4980
5175
  The start date of the task. When specified for the top-level (default)
@@ -5603,7 +5798,11 @@ EOT
5603
5798
 
5604
5799
  def rule_warn
5605
5800
  pattern(%w( _warn !logicalExpression ), lambda {
5606
- @property['warn', @scenarioIdx] = @val[1]
5801
+ begin
5802
+ @property['warn', @scenarioIdx] =
5803
+ @property['warn', @scenarioIdx] + [ @val[1] ]
5804
+ rescue AttributeOverwrite
5805
+ end
5607
5806
  })
5608
5807
  doc('warn', <<'EOT'
5609
5808
  The warn attribute adds a logical expression to the property. The condition