taskjuggler 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (563) hide show
  1. data/CHANGELOG +37 -5
  2. data/README.rdoc +4 -2
  3. data/benchmarks/UTF-8-Strings.rb +58 -0
  4. data/benchmarks/css/tjmanual.css +0 -1
  5. data/benchmarks/htmltaskreport-1.html +47702 -0
  6. data/benchmarks/htmltaskreport-2.html +23345 -0
  7. data/benchmarks/htmltaskreport-3.html +23265 -0
  8. data/benchmarks/htmltaskreport-4.html +22135 -0
  9. data/benchmarks/profile.clt +36082 -0
  10. data/benchmarks/tj3.profile +0 -0
  11. data/benchmarks/tj3.profile.grind +6185 -0
  12. data/benchmarks/tj3.profile.symbols +432 -0
  13. data/benchmarks/tj3.profile.txt +448 -0
  14. data/data/tjp.vim +689 -0
  15. data/doc/AppConfig.html +26 -2
  16. data/doc/CHANGELOG.html +60 -8
  17. data/doc/COPYING.html +26 -2
  18. data/doc/Diff/Hunk.html +26 -2
  19. data/doc/Diff.html +26 -2
  20. data/doc/Diffable.html +26 -2
  21. data/doc/DiffableString.html +26 -2
  22. data/doc/Object.html +26 -104
  23. data/doc/README_rdoc.html +39 -7
  24. data/doc/RuntimeConfig.html +26 -2
  25. data/doc/String.html +26 -2
  26. data/doc/TaskJuggler/Account.html +27 -3
  27. data/doc/TaskJuggler/AccountAttribute.html +30 -6
  28. data/doc/TaskJuggler/AccountScenario.html +28 -4
  29. data/doc/TaskJuggler/Allocation.html +33 -9
  30. data/doc/TaskJuggler/AllocationAttribute.html +31 -7
  31. data/doc/TaskJuggler/AttributeBase.html +162 -111
  32. data/doc/TaskJuggler/AttributeDefinition.html +26 -2
  33. data/doc/TaskJuggler/AttributeOverwrite.html +26 -2
  34. data/doc/TaskJuggler/BatchProcessor.html +26 -2
  35. data/doc/TaskJuggler/Booking.html +29 -5
  36. data/doc/TaskJuggler/BookingListAttribute.html +29 -5
  37. data/doc/TaskJuggler/BooleanAttribute.html +30 -6
  38. data/doc/TaskJuggler/CSVFile.html +26 -2
  39. data/doc/TaskJuggler/CellSettingPattern.html +26 -2
  40. data/doc/TaskJuggler/CellSettingPatternList.html +26 -2
  41. data/doc/TaskJuggler/Charge.html +30 -6
  42. data/doc/TaskJuggler/ChargeListAttribute.html +29 -5
  43. data/doc/TaskJuggler/ChargeSet.html +26 -2
  44. data/doc/TaskJuggler/ChargeSetListAttribute.html +30 -6
  45. data/doc/TaskJuggler/CollisionDetector.html +26 -2
  46. data/doc/TaskJuggler/ColumnListAttribute.html +28 -4
  47. data/doc/TaskJuggler/ColumnTable.html +26 -2
  48. data/doc/TaskJuggler/Daemon.html +26 -2
  49. data/doc/TaskJuggler/DataCache.html +26 -2
  50. data/doc/TaskJuggler/DataCacheEntry.html +26 -2
  51. data/doc/TaskJuggler/DateAttribute.html +30 -6
  52. data/doc/TaskJuggler/DefinitionListAttribute.html +28 -4
  53. data/doc/TaskJuggler/DependencyListAttribute.html +30 -6
  54. data/doc/TaskJuggler/DurationAttribute.html +31 -7
  55. data/doc/TaskJuggler/FileList.html +26 -2
  56. data/doc/TaskJuggler/FileRecord.html +26 -2
  57. data/doc/TaskJuggler/FixnumAttribute.html +28 -4
  58. data/doc/TaskJuggler/FlagListAttribute.html +30 -6
  59. data/doc/TaskJuggler/FloatAttribute.html +29 -5
  60. data/doc/TaskJuggler/FormatListAttribute.html +29 -5
  61. data/doc/TaskJuggler/GanttChart.html +26 -2
  62. data/doc/TaskJuggler/GanttContainer.html +26 -2
  63. data/doc/TaskJuggler/GanttHeader.html +26 -2
  64. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -2
  65. data/doc/TaskJuggler/GanttLine.html +27 -3
  66. data/doc/TaskJuggler/GanttLoadStack.html +26 -2
  67. data/doc/TaskJuggler/GanttMilestone.html +26 -2
  68. data/doc/TaskJuggler/GanttRouter.html +26 -2
  69. data/doc/TaskJuggler/GanttTaskBar.html +26 -2
  70. data/doc/TaskJuggler/HTMLDocument.html +26 -2
  71. data/doc/TaskJuggler/HTMLElements.html +623 -0
  72. data/doc/TaskJuggler/HTMLGraphics.html +26 -2
  73. data/doc/TaskJuggler/ICalReport.html +864 -0
  74. data/doc/TaskJuggler/ICalendar/Component.html +969 -0
  75. data/doc/TaskJuggler/ICalendar/Event.html +742 -0
  76. data/doc/TaskJuggler/ICalendar/Journal.html +722 -0
  77. data/doc/TaskJuggler/ICalendar/Person.html +633 -0
  78. data/doc/TaskJuggler/ICalendar/Todo.html +789 -0
  79. data/doc/TaskJuggler/ICalendar.html +1035 -0
  80. data/doc/TaskJuggler/Interval.html +99 -172
  81. data/doc/TaskJuggler/IntervalList.html +31 -7
  82. data/doc/TaskJuggler/JobInfo.html +26 -2
  83. data/doc/TaskJuggler/Journal.html +26 -2
  84. data/doc/TaskJuggler/JournalEntry.html +26 -2
  85. data/doc/TaskJuggler/JournalEntryList.html +26 -2
  86. data/doc/TaskJuggler/KeywordArray.html +26 -2
  87. data/doc/TaskJuggler/KeywordDocumentation.html +26 -2
  88. data/doc/TaskJuggler/Limits/Limit.html +124 -49
  89. data/doc/TaskJuggler/Limits.html +139 -156
  90. data/doc/TaskJuggler/LimitsAttribute.html +39 -14
  91. data/doc/TaskJuggler/ListAttributeBase.html +35 -11
  92. data/doc/TaskJuggler/Log.html +26 -2
  93. data/doc/TaskJuggler/LogFile.html +26 -2
  94. data/doc/TaskJuggler/LogicalAttribute.html +26 -2
  95. data/doc/TaskJuggler/LogicalExpression.html +26 -2
  96. data/doc/TaskJuggler/LogicalExpressionAttribute.html +35 -11
  97. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +35 -11
  98. data/doc/TaskJuggler/LogicalFlag.html +26 -2
  99. data/doc/TaskJuggler/LogicalFunction.html +28 -4
  100. data/doc/TaskJuggler/LogicalOperation.html +26 -2
  101. data/doc/TaskJuggler/ManagerResponsibilities.html +26 -2
  102. data/doc/TaskJuggler/ManagerStatusRecord.html +26 -2
  103. data/doc/TaskJuggler/Message.html +26 -2
  104. data/doc/TaskJuggler/MessageHandler.html +108 -62
  105. data/doc/TaskJuggler/Navigator.html +26 -2
  106. data/doc/TaskJuggler/NavigatorElement.html +26 -2
  107. data/doc/TaskJuggler/NikuProject.html +26 -2
  108. data/doc/TaskJuggler/NikuReport.html +27 -3
  109. data/doc/TaskJuggler/NikuResource.html +26 -2
  110. data/doc/TaskJuggler/NodeListAttribute.html +31 -7
  111. data/doc/TaskJuggler/PlaceHolderCell.html +26 -2
  112. data/doc/TaskJuggler/ProcessIntercom.html +26 -2
  113. data/doc/TaskJuggler/ProcessIntercomIface.html +26 -2
  114. data/doc/TaskJuggler/Project.html +1236 -973
  115. data/doc/TaskJuggler/ProjectBroker.html +26 -2
  116. data/doc/TaskJuggler/ProjectBrokerIface.html +26 -2
  117. data/doc/TaskJuggler/ProjectFileParser.html +29 -4
  118. data/doc/TaskJuggler/ProjectFileScanner.html +56 -31
  119. data/doc/TaskJuggler/ProjectRecord.html +26 -2
  120. data/doc/TaskJuggler/ProjectServer.html +26 -2
  121. data/doc/TaskJuggler/ProjectServerIface.html +26 -2
  122. data/doc/TaskJuggler/PropertyAttribute.html +35 -11
  123. data/doc/TaskJuggler/PropertyList.html +26 -2
  124. data/doc/TaskJuggler/PropertySet.html +126 -106
  125. data/doc/TaskJuggler/PropertyTreeNode.html +595 -551
  126. data/doc/TaskJuggler/Query.html +127 -100
  127. data/doc/TaskJuggler/RTFHandlers.html +26 -2
  128. data/doc/TaskJuggler/RTFNavigator.html +26 -2
  129. data/doc/TaskJuggler/RTFQuery.html +28 -4
  130. data/doc/TaskJuggler/RTFReport.html +26 -2
  131. data/doc/TaskJuggler/RTFReportLink.html +26 -2
  132. data/doc/TaskJuggler/RTFWithQuerySupport.html +26 -2
  133. data/doc/TaskJuggler/RealFormat.html +26 -2
  134. data/doc/TaskJuggler/RealFormatAttribute.html +31 -7
  135. data/doc/TaskJuggler/ReferenceAttribute.html +58 -34
  136. data/doc/TaskJuggler/Report.html +427 -284
  137. data/doc/TaskJuggler/ReportBase.html +28 -102
  138. data/doc/TaskJuggler/ReportContext.html +26 -2
  139. data/doc/TaskJuggler/ReportScenario.html +633 -0
  140. data/doc/TaskJuggler/ReportServer.html +26 -2
  141. data/doc/TaskJuggler/ReportServerIface.html +26 -2
  142. data/doc/TaskJuggler/ReportServerRecord.html +26 -2
  143. data/doc/TaskJuggler/ReportServlet.html +26 -2
  144. data/doc/TaskJuggler/ReportTable.html +26 -2
  145. data/doc/TaskJuggler/ReportTableCell.html +26 -2
  146. data/doc/TaskJuggler/ReportTableColumn.html +26 -2
  147. data/doc/TaskJuggler/ReportTableLegend.html +26 -2
  148. data/doc/TaskJuggler/ReportTableLine.html +26 -2
  149. data/doc/TaskJuggler/Resource.html +225 -163
  150. data/doc/TaskJuggler/ResourceListAttribute.html +71 -47
  151. data/doc/TaskJuggler/ResourceListRE.html +26 -2
  152. data/doc/TaskJuggler/ResourceScenario.html +645 -603
  153. data/doc/TaskJuggler/RichText.html +26 -2
  154. data/doc/TaskJuggler/RichTextAttribute.html +53 -29
  155. data/doc/TaskJuggler/RichTextDocument.html +26 -2
  156. data/doc/TaskJuggler/RichTextElement.html +26 -2
  157. data/doc/TaskJuggler/RichTextFunctionExample.html +26 -2
  158. data/doc/TaskJuggler/RichTextFunctionHandler.html +26 -2
  159. data/doc/TaskJuggler/RichTextImage.html +26 -2
  160. data/doc/TaskJuggler/RichTextIntermediate.html +29 -5
  161. data/doc/TaskJuggler/RichTextParser.html +26 -2
  162. data/doc/TaskJuggler/RichTextScanner.html +26 -2
  163. data/doc/TaskJuggler/RichTextSnip.html +26 -2
  164. data/doc/TaskJuggler/RichTextSyntaxRules.html +26 -2
  165. data/doc/TaskJuggler/Scenario.html +26 -2
  166. data/doc/TaskJuggler/ScenarioData.html +95 -28
  167. data/doc/TaskJuggler/ScenarioListAttribute.html +39 -15
  168. data/doc/TaskJuggler/Scoreboard.html +137 -73
  169. data/doc/TaskJuggler/ScoreboardInterval.html +1116 -0
  170. data/doc/TaskJuggler/SheetHandlerBase.html +26 -2
  171. data/doc/TaskJuggler/SheetReceiver.html +26 -2
  172. data/doc/TaskJuggler/SheetSender.html +26 -2
  173. data/doc/TaskJuggler/Shift.html +27 -3
  174. data/doc/TaskJuggler/ShiftAssignment.html +27 -3
  175. data/doc/TaskJuggler/ShiftAssignments.html +174 -149
  176. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +41 -16
  177. data/doc/TaskJuggler/ShiftScenario.html +26 -2
  178. data/doc/TaskJuggler/SimpleQueryExpander.html +26 -2
  179. data/doc/TaskJuggler/SortListAttribute.html +35 -11
  180. data/doc/TaskJuggler/StatusSheetReceiver.html +26 -2
  181. data/doc/TaskJuggler/StatusSheetReport.html +26 -2
  182. data/doc/TaskJuggler/StatusSheetSender.html +26 -2
  183. data/doc/TaskJuggler/StdIoWrapper.html +26 -2
  184. data/doc/TaskJuggler/StringAttribute.html +39 -15
  185. data/doc/TaskJuggler/SymbolAttribute.html +35 -11
  186. data/doc/TaskJuggler/SyntaxReference.html +26 -2
  187. data/doc/TaskJuggler/TOCEntry.html +26 -2
  188. data/doc/TaskJuggler/TSResourceRecord.html +26 -2
  189. data/doc/TaskJuggler/TSTaskRecord.html +26 -2
  190. data/doc/TaskJuggler/TableColumnDefinition.html +26 -2
  191. data/doc/TaskJuggler/TableOfContents.html +26 -2
  192. data/doc/TaskJuggler/TableReport.html +239 -214
  193. data/doc/TaskJuggler/TagFile/TagFileEntry.html +841 -0
  194. data/doc/TaskJuggler/TagFile.html +817 -0
  195. data/doc/TaskJuggler/Task.html +27 -3
  196. data/doc/TaskJuggler/TaskDepListAttribute.html +47 -23
  197. data/doc/TaskJuggler/TaskDependency.html +26 -2
  198. data/doc/TaskJuggler/TaskListAttribute.html +47 -23
  199. data/doc/TaskJuggler/TaskListRE.html +26 -2
  200. data/doc/TaskJuggler/TaskScenario.html +2235 -2178
  201. data/doc/TaskJuggler/TernarySearchTree.html +26 -2
  202. data/doc/TaskJuggler/TextFormatter.html +26 -2
  203. data/doc/TaskJuggler/TextParser/Macro.html +26 -2
  204. data/doc/TaskJuggler/TextParser/MacroTable.html +26 -2
  205. data/doc/TaskJuggler/TextParser/Pattern.html +26 -2
  206. data/doc/TaskJuggler/TextParser/Rule.html +26 -2
  207. data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +32 -8
  208. data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +39 -15
  209. data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +26 -2
  210. data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +119 -86
  211. data/doc/TaskJuggler/TextParser/Scanner.html +317 -291
  212. data/doc/TaskJuggler/TextParser/SourceFileInfo.html +26 -2
  213. data/doc/TaskJuggler/TextParser/StackElement.html +26 -2
  214. data/doc/TaskJuggler/TextParser/State.html +26 -2
  215. data/doc/TaskJuggler/TextParser/StateTransition.html +26 -2
  216. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +26 -2
  217. data/doc/TaskJuggler/TextParser/TokenDoc.html +26 -2
  218. data/doc/TaskJuggler/TextParser.html +85 -61
  219. data/doc/TaskJuggler/TextReport.html +26 -2
  220. data/doc/TaskJuggler/TimeInterval.html +841 -0
  221. data/doc/TaskJuggler/{IntervalListAttribute.html → TimeIntervalListAttribute.html} +33 -9
  222. data/doc/TaskJuggler/TimeSheet.html +26 -2
  223. data/doc/TaskJuggler/TimeSheetReceiver.html +26 -2
  224. data/doc/TaskJuggler/TimeSheetRecord.html +27 -3
  225. data/doc/TaskJuggler/TimeSheetReport.html +29 -5
  226. data/doc/TaskJuggler/TimeSheetSender.html +26 -2
  227. data/doc/TaskJuggler/TimeSheetSummary.html +26 -2
  228. data/doc/TaskJuggler/TimeSheets.html +26 -2
  229. data/doc/TaskJuggler/Tj3.html +150 -111
  230. data/doc/TaskJuggler/Tj3AppBase.html +26 -2
  231. data/doc/TaskJuggler/Tj3Client.html +26 -2
  232. data/doc/TaskJuggler/Tj3Daemon.html +26 -2
  233. data/doc/TaskJuggler/Tj3Man.html +26 -2
  234. data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -2
  235. data/doc/TaskJuggler/Tj3SsReceiver.html +26 -2
  236. data/doc/TaskJuggler/Tj3SsSender.html +26 -2
  237. data/doc/TaskJuggler/Tj3TsReceiver.html +26 -2
  238. data/doc/TaskJuggler/Tj3TsSender.html +26 -2
  239. data/doc/TaskJuggler/Tj3TsSummary.html +26 -2
  240. data/doc/TaskJuggler/TjException.html +26 -2
  241. data/doc/TaskJuggler/TjRuntimeError.html +26 -2
  242. data/doc/TaskJuggler/TjTime.html +539 -477
  243. data/doc/TaskJuggler/TjpExample.html +26 -2
  244. data/doc/TaskJuggler/TjpExportRE.html +240 -161
  245. data/doc/TaskJuggler/TjpSyntaxRules.html +4236 -3844
  246. data/doc/TaskJuggler/URLParameter.html +26 -2
  247. data/doc/TaskJuggler/UserManual.html +26 -2
  248. data/doc/TaskJuggler/VimSyntax.html +31 -7
  249. data/doc/TaskJuggler/WebServer.html +26 -2
  250. data/doc/TaskJuggler/WelcomePage.html +26 -2
  251. data/doc/TaskJuggler/WorkingHours.html +227 -152
  252. data/doc/TaskJuggler/WorkingHoursAttribute.html +62 -38
  253. data/doc/TaskJuggler/XMLBlob.html +26 -2
  254. data/doc/TaskJuggler/XMLComment.html +26 -2
  255. data/doc/TaskJuggler/XMLDocument.html +26 -2
  256. data/doc/TaskJuggler/XMLElement.html +26 -2
  257. data/doc/TaskJuggler/XMLNamedText.html +26 -2
  258. data/doc/TaskJuggler/XMLText.html +26 -2
  259. data/doc/TaskJuggler.html +486 -427
  260. data/doc/index.html +801 -659
  261. data/doc/lib/taskjuggler/AccountScenario_rb.html +1 -1
  262. data/doc/lib/taskjuggler/Account_rb.html +1 -1
  263. data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +1 -1
  264. data/doc/lib/taskjuggler/Allocation_rb.html +1 -1
  265. data/doc/lib/taskjuggler/AppConfig_rb.html +1 -1
  266. data/doc/lib/taskjuggler/AttributeBase_rb.html +1 -1
  267. data/doc/lib/taskjuggler/AttributeDefinition_rb.html +1 -1
  268. data/doc/lib/taskjuggler/Attributes_rb.html +1 -1
  269. data/doc/lib/taskjuggler/BatchProcessor_rb.html +1 -1
  270. data/doc/lib/taskjuggler/Booking_rb.html +1 -1
  271. data/doc/lib/taskjuggler/ChargeSet_rb.html +1 -1
  272. data/doc/lib/taskjuggler/Charge_rb.html +1 -1
  273. data/doc/lib/taskjuggler/DataCache_rb.html +1 -1
  274. data/doc/lib/taskjuggler/FileList_rb.html +1 -1
  275. data/doc/lib/taskjuggler/HTMLDocument_rb.html +1 -1
  276. data/doc/lib/{ruby-signal-bug_rb.html → taskjuggler/HTMLElements_rb.html} +9 -9
  277. data/doc/lib/{exchangebug_rb.html → taskjuggler/ICalendar_rb.html} +9 -9
  278. data/doc/lib/taskjuggler/IntervalList_rb.html +1 -1
  279. data/doc/lib/taskjuggler/Interval_rb.html +1 -1
  280. data/doc/lib/taskjuggler/Journal_rb.html +1 -1
  281. data/doc/lib/taskjuggler/KeywordArray_rb.html +1 -1
  282. data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +1 -1
  283. data/doc/lib/taskjuggler/Limits_rb.html +1 -1
  284. data/doc/lib/taskjuggler/LogFile_rb.html +1 -1
  285. data/doc/lib/taskjuggler/Log_rb.html +1 -1
  286. data/doc/lib/taskjuggler/LogicalExpression_rb.html +1 -1
  287. data/doc/lib/taskjuggler/LogicalFunction_rb.html +1 -1
  288. data/doc/lib/taskjuggler/LogicalOperation_rb.html +1 -1
  289. data/doc/lib/taskjuggler/MessageHandler_rb.html +1 -1
  290. data/doc/lib/taskjuggler/ProjectFileParser_rb.html +1 -1
  291. data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +1 -1
  292. data/doc/lib/taskjuggler/Project_rb.html +1 -1
  293. data/doc/lib/taskjuggler/PropertyList_rb.html +1 -1
  294. data/doc/lib/taskjuggler/PropertySet_rb.html +1 -1
  295. data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +1 -1
  296. data/doc/lib/taskjuggler/Query_rb.html +1 -1
  297. data/doc/lib/taskjuggler/RealFormat_rb.html +1 -1
  298. data/doc/lib/taskjuggler/ResourceScenario_rb.html +1 -1
  299. data/doc/lib/taskjuggler/Resource_rb.html +1 -1
  300. data/doc/lib/taskjuggler/RichText/Document_rb.html +1 -1
  301. data/doc/lib/taskjuggler/RichText/Element_rb.html +1 -1
  302. data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +1 -1
  303. data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +1 -1
  304. data/doc/lib/taskjuggler/RichText/Parser_rb.html +1 -1
  305. data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +1 -1
  306. data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +1 -1
  307. data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +1 -1
  308. data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +1 -1
  309. data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +1 -1
  310. data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +1 -1
  311. data/doc/lib/taskjuggler/RichText/Scanner_rb.html +1 -1
  312. data/doc/lib/taskjuggler/RichText/Snip_rb.html +1 -1
  313. data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +1 -1
  314. data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +1 -1
  315. data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +1 -1
  316. data/doc/lib/taskjuggler/RichText_rb.html +1 -1
  317. data/doc/lib/taskjuggler/RuntimeConfig_rb.html +1 -1
  318. data/doc/lib/taskjuggler/ScenarioData_rb.html +1 -1
  319. data/doc/lib/taskjuggler/Scenario_rb.html +1 -1
  320. data/doc/lib/taskjuggler/Scoreboard_rb.html +1 -1
  321. data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +1 -1
  322. data/doc/lib/taskjuggler/SheetReceiver_rb.html +1 -1
  323. data/doc/lib/taskjuggler/SheetSender_rb.html +1 -1
  324. data/doc/lib/taskjuggler/ShiftAssignments_rb.html +1 -1
  325. data/doc/lib/taskjuggler/ShiftScenario_rb.html +1 -1
  326. data/doc/lib/taskjuggler/Shift_rb.html +1 -1
  327. data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +1 -1
  328. data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +1 -1
  329. data/doc/lib/taskjuggler/StatusSheetSender_rb.html +1 -1
  330. data/doc/lib/taskjuggler/StdIoWrapper_rb.html +1 -1
  331. data/doc/lib/taskjuggler/SyntaxReference_rb.html +1 -1
  332. data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +1 -1
  333. data/doc/lib/taskjuggler/TaskDependency_rb.html +1 -1
  334. data/doc/lib/taskjuggler/TaskJuggler_rb.html +1 -1
  335. data/doc/lib/taskjuggler/TaskScenario_rb.html +1 -1
  336. data/doc/lib/taskjuggler/Task_rb.html +1 -1
  337. data/doc/lib/taskjuggler/TernarySearchTree_rb.html +1 -1
  338. data/doc/lib/taskjuggler/TextFormatter_rb.html +1 -1
  339. data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +1 -1
  340. data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +1 -1
  341. data/doc/lib/taskjuggler/TextParser/Rule_rb.html +1 -1
  342. data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +1 -1
  343. data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +1 -1
  344. data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +1 -1
  345. data/doc/lib/taskjuggler/TextParser/State_rb.html +1 -1
  346. data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +1 -1
  347. data/doc/lib/taskjuggler/TextParser_rb.html +1 -1
  348. data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +1 -1
  349. data/doc/lib/taskjuggler/TimeSheetSender_rb.html +1 -1
  350. data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +1 -1
  351. data/doc/lib/taskjuggler/TimeSheets_rb.html +1 -1
  352. data/doc/lib/taskjuggler/Tj3AppBase_rb.html +1 -1
  353. data/doc/lib/taskjuggler/Tj3Config_rb.html +1 -1
  354. data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +1 -1
  355. data/doc/lib/taskjuggler/TjException_rb.html +1 -1
  356. data/doc/lib/taskjuggler/TjTime_rb.html +1 -1
  357. data/doc/lib/taskjuggler/TjpExample_rb.html +1 -1
  358. data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +1 -1
  359. data/doc/lib/taskjuggler/URLParameter_rb.html +1 -1
  360. data/doc/lib/taskjuggler/UTF8String_rb.html +1 -1
  361. data/doc/lib/taskjuggler/UserManual_rb.html +1 -1
  362. data/doc/lib/taskjuggler/VimSyntax_rb.html +1 -1
  363. data/doc/lib/taskjuggler/WorkingHours_rb.html +1 -1
  364. data/doc/lib/taskjuggler/XMLDocument_rb.html +1 -1
  365. data/doc/lib/taskjuggler/XMLElement_rb.html +1 -1
  366. data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +1 -1
  367. data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +1 -1
  368. data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +1 -1
  369. data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +1 -1
  370. data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +1 -1
  371. data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +1 -1
  372. data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +1 -1
  373. data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +1 -1
  374. data/doc/lib/taskjuggler/apps/Tj3_rb.html +1 -1
  375. data/doc/lib/taskjuggler/daemon/Daemon_rb.html +1 -1
  376. data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +1 -1
  377. data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +1 -1
  378. data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +1 -1
  379. data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +1 -1
  380. data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +1 -1
  381. data/doc/lib/taskjuggler/daemon/WebServer_rb.html +1 -1
  382. data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +1 -1
  383. data/doc/lib/taskjuggler/deep_copy_rb.html +1 -1
  384. data/doc/lib/taskjuggler/reports/CSVFile_rb.html +1 -1
  385. data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +1 -1
  386. data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +1 -1
  387. data/doc/lib/taskjuggler/reports/GanttChart_rb.html +1 -1
  388. data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +1 -1
  389. data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +1 -1
  390. data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +1 -1
  391. data/doc/lib/taskjuggler/reports/GanttLine_rb.html +1 -1
  392. data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +1 -1
  393. data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +1 -1
  394. data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +1 -1
  395. data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +1 -1
  396. data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +1 -1
  397. data/doc/lib/taskjuggler/reports/ICalReport_rb.html +71 -0
  398. data/doc/lib/taskjuggler/reports/Navigator_rb.html +1 -1
  399. data/doc/lib/taskjuggler/reports/NikuReport_rb.html +1 -1
  400. data/doc/lib/taskjuggler/reports/ReportBase_rb.html +1 -1
  401. data/doc/lib/taskjuggler/reports/ReportContext_rb.html +1 -1
  402. data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +1 -1
  403. data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +1 -1
  404. data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +1 -1
  405. data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +1 -1
  406. data/doc/lib/taskjuggler/reports/ReportTable_rb.html +1 -1
  407. data/doc/lib/taskjuggler/reports/Report_rb.html +5 -1
  408. data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +1 -1
  409. data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +1 -1
  410. data/doc/lib/taskjuggler/reports/TableReport_rb.html +1 -1
  411. data/doc/lib/taskjuggler/reports/TagFile_rb.html +71 -0
  412. data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +1 -1
  413. data/doc/lib/taskjuggler/reports/TextReport_rb.html +1 -1
  414. data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +1 -1
  415. data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +1 -1
  416. data/doc/lib/tj3_rb.html +1 -1
  417. data/doc/lib/tj3client_rb.html +1 -1
  418. data/doc/lib/tj3d_rb.html +1 -1
  419. data/doc/lib/tj3man_rb.html +1 -1
  420. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  421. data/doc/lib/tj3ss_sender_rb.html +1 -1
  422. data/doc/lib/tj3ts_receiver_rb.html +1 -1
  423. data/doc/lib/tj3ts_sender_rb.html +1 -1
  424. data/doc/lib/tj3ts_summary_rb.html +1 -1
  425. data/lib/taskjuggler/Account.rb +1 -1
  426. data/lib/taskjuggler/AccountScenario.rb +1 -1
  427. data/lib/taskjuggler/Allocation.rb +5 -5
  428. data/lib/taskjuggler/AttributeBase.rb +30 -22
  429. data/lib/taskjuggler/Attributes.rb +80 -78
  430. data/lib/taskjuggler/Booking.rb +2 -2
  431. data/lib/taskjuggler/Charge.rb +3 -3
  432. data/lib/taskjuggler/ICalendar.rb +251 -0
  433. data/lib/taskjuggler/Interval.rb +215 -53
  434. data/lib/taskjuggler/IntervalList.rb +5 -5
  435. data/lib/taskjuggler/Limits.rb +79 -69
  436. data/lib/taskjuggler/LogicalFunction.rb +2 -2
  437. data/lib/taskjuggler/MessageHandler.rb +11 -6
  438. data/lib/taskjuggler/Project.rb +208 -95
  439. data/lib/taskjuggler/ProjectFileParser.rb +2 -2
  440. data/lib/taskjuggler/ProjectFileScanner.rb +7 -6
  441. data/lib/taskjuggler/PropertySet.rb +1 -5
  442. data/lib/taskjuggler/PropertyTreeNode.rb +21 -16
  443. data/lib/taskjuggler/Query.rb +10 -7
  444. data/lib/taskjuggler/Resource.rb +6 -1
  445. data/lib/taskjuggler/ResourceScenario.rb +85 -69
  446. data/lib/taskjuggler/RichText/RTFQuery.rb +2 -2
  447. data/lib/taskjuggler/ScenarioData.rb +11 -1
  448. data/lib/taskjuggler/Scoreboard.rb +8 -1
  449. data/lib/taskjuggler/Shift.rb +1 -1
  450. data/lib/taskjuggler/ShiftAssignments.rb +22 -20
  451. data/lib/taskjuggler/Task.rb +1 -1
  452. data/lib/taskjuggler/TaskJuggler.rb +65 -51
  453. data/lib/taskjuggler/TaskScenario.rb +486 -419
  454. data/lib/taskjuggler/TextParser/Scanner.rb +22 -11
  455. data/lib/taskjuggler/TimeSheets.rb +1 -1
  456. data/lib/taskjuggler/Tj3Config.rb +1 -1
  457. data/lib/taskjuggler/TjTime.rb +7 -3
  458. data/lib/taskjuggler/TjpSyntaxRules.rb +157 -23
  459. data/lib/taskjuggler/VimSyntax.rb +18 -0
  460. data/lib/taskjuggler/WorkingHours.rb +20 -4
  461. data/lib/taskjuggler/apps/Tj3.rb +16 -1
  462. data/lib/taskjuggler/reports/GanttLine.rb +1 -1
  463. data/lib/taskjuggler/reports/ICalReport.rb +136 -0
  464. data/lib/taskjuggler/reports/NikuReport.rb +1 -1
  465. data/lib/taskjuggler/reports/Report.rb +59 -0
  466. data/lib/taskjuggler/reports/ReportBase.rb +2 -67
  467. data/lib/taskjuggler/reports/TableReport.rb +9 -8
  468. data/lib/taskjuggler/reports/TagFile.rb +120 -0
  469. data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -3
  470. data/lib/taskjuggler/reports/TjpExportRE.rb +33 -9
  471. data/manual/Installation +126 -0
  472. data/spec/ICalendar_spec.rb +45 -0
  473. data/spec/IntervalList_spec.rb +11 -11
  474. data/tasks/changelog.rake +150 -60
  475. data/tasks/gem.rake +1 -0
  476. data/tasks/vim.rake +2 -2
  477. data/test/TestSuite/Export-Reports/refs/Booking.tjp +1 -1
  478. data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
  479. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +10 -1
  480. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +1 -1
  481. data/test/TestSuite/HTML-Reports/Alerts.html +160 -412
  482. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  483. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  484. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  485. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  486. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  487. data/test/TestSuite/HTML-Reports/css/tjmanual.css +0 -20
  488. data/test/TestSuite/HTML-Reports/css/tjreport.css +6 -7
  489. data/test/TestSuite/HTML-Reports/depArrows.html +851 -0
  490. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  491. data/test/TestSuite/{Scheduler/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
  492. data/test/TestSuite/Scheduler/Correct/Booking.tjp +3 -3
  493. data/test/TestSuite/Scheduler/Correct/Duration.tjp +3 -3
  494. data/test/TestSuite/Scheduler/Errors/R.html +113 -0
  495. data/test/TestSuite/Scheduler/Errors/allocate_no_assigned.tjp +15 -0
  496. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjmanual.css +0 -1
  497. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjreport.css +0 -0
  498. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/details.png +0 -0
  499. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-green.png +0 -0
  500. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-red.png +0 -0
  501. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-yellow.png +0 -0
  502. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resource.png +0 -0
  503. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resourcegroup.png +0 -0
  504. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/task.png +0 -0
  505. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/taskgroup.png +0 -0
  506. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-down.png +0 -0
  507. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-flat.png +0 -0
  508. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-up.png +0 -0
  509. data/test/TestSuite/Scheduler/Errors/overbooked_duration.tjp +11 -0
  510. data/test/TestSuite/Scheduler/Errors/overbooked_effort.tjp +11 -0
  511. data/test/TestSuite/Scheduler/Errors/overbooked_length.tjp +13 -0
  512. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/scripts/wz_tooltip.js +0 -0
  513. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  514. data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
  515. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +5 -2
  516. data/test/TestSuite/Syntax/Errors/scenario_after_tracking.tjp +8 -0
  517. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  518. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  519. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  520. data/test/test_Limits.rb +38 -30
  521. data/test/test_Scheduler.rb +2 -2
  522. data/test/test_ShiftAssignments.rb +8 -8
  523. data/test/test_WorkingHours.rb +4 -4
  524. metadata +1015 -1005
  525. data/lib/exchangebug.rb +0 -42
  526. data/lib/ruby-signal-bug.rb +0 -55
  527. data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -60
  528. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -80
  529. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  530. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  531. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.csv +0 -412
  532. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -680
  533. data/test/TestSuite/ReportGenerator/Correct/DependencyList.csv +0 -4
  534. data/test/TestSuite/ReportGenerator/Correct/DependencyList.tjp +0 -25
  535. data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -8
  536. data/test/TestSuite/ReportGenerator/Correct/Journal-2.csv +0 -8
  537. data/test/TestSuite/ReportGenerator/Correct/Journal-3.html +0 -28
  538. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  539. data/test/TestSuite/ReportGenerator/Correct/opennodes-1.csv +0 -2
  540. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  541. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  542. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  543. data/test/TestSuite/Scheduler/' +0 -23
  544. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -86
  545. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +0 -413
  546. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  547. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  548. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  549. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  550. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  551. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  552. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  553. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  554. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  555. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  556. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  557. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  558. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  559. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
  560. data/test/TestSuite/Syntax/Correct/DST.tjp +0 -11
  561. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
  562. data/test/TestSuite/TimeSheets/receiver.log.mod +0 -1056
  563. data/test/TestSuite/TimeSheets/uu.txt +0 -29
@@ -75,7 +75,9 @@
75
75
 
76
76
  <li><a href="#method-i-generateAttributeText">#generateAttributeText</a></li>
77
77
 
78
- <li><a href="#method-i-generateBooking">#generateBooking</a></li>
78
+ <li><a href="#method-i-generateBookingsByResource">#generateBookingsByResource</a></li>
79
+
80
+ <li><a href="#method-i-generateBookingsByTask">#generateBookingsByTask</a></li>
79
81
 
80
82
  <li><a href="#method-i-generateCustomAttributeDeclarations">#generateCustomAttributeDeclarations</a></li>
81
83
 
@@ -249,12 +251,24 @@
249
251
 
250
252
  <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
251
253
 
254
+ <li><a href="../TaskJuggler/ICalReport.html">TaskJuggler::ICalReport</a></li>
255
+
256
+ <li><a href="../TaskJuggler/ICalendar.html">TaskJuggler::ICalendar</a></li>
257
+
258
+ <li><a href="../TaskJuggler/ICalendar/Component.html">TaskJuggler::ICalendar::Component</a></li>
259
+
260
+ <li><a href="../TaskJuggler/ICalendar/Event.html">TaskJuggler::ICalendar::Event</a></li>
261
+
262
+ <li><a href="../TaskJuggler/ICalendar/Journal.html">TaskJuggler::ICalendar::Journal</a></li>
263
+
264
+ <li><a href="../TaskJuggler/ICalendar/Person.html">TaskJuggler::ICalendar::Person</a></li>
265
+
266
+ <li><a href="../TaskJuggler/ICalendar/Todo.html">TaskJuggler::ICalendar::Todo</a></li>
267
+
252
268
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
253
269
 
254
270
  <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
255
271
 
256
- <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
257
-
258
272
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
259
273
 
260
274
  <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
@@ -369,6 +383,8 @@
369
383
 
370
384
  <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
371
385
 
386
+ <li><a href="../TaskJuggler/ReportScenario.html">TaskJuggler::ReportScenario</a></li>
387
+
372
388
  <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
373
389
 
374
390
  <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
@@ -427,6 +443,8 @@
427
443
 
428
444
  <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
429
445
 
446
+ <li><a href="../TaskJuggler/ScoreboardInterval.html">TaskJuggler::ScoreboardInterval</a></li>
447
+
430
448
  <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
431
449
 
432
450
  <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
@@ -473,6 +491,10 @@
473
491
 
474
492
  <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
475
493
 
494
+ <li><a href="../TaskJuggler/TagFile.html">TaskJuggler::TagFile</a></li>
495
+
496
+ <li><a href="../TaskJuggler/TagFile/TagFileEntry.html">TaskJuggler::TagFile::TagFileEntry</a></li>
497
+
476
498
  <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
477
499
 
478
500
  <li><a href="../TaskJuggler/TaskDepListAttribute.html">TaskJuggler::TaskDepListAttribute</a></li>
@@ -523,6 +545,10 @@
523
545
 
524
546
  <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
525
547
 
548
+ <li><a href="../TaskJuggler/TimeInterval.html">TaskJuggler::TimeInterval</a></li>
549
+
550
+ <li><a href="../TaskJuggler/TimeIntervalListAttribute.html">TaskJuggler::TimeIntervalListAttribute</a></li>
551
+
526
552
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
527
553
 
528
554
  <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
@@ -673,7 +699,7 @@ Create a new object and set some default values.
673
699
  26: <span class="ruby-ivar">@supportedTaskAttrs</span> = <span class="ruby-node">%( booking complete depends flags maxend
674
700
  27: maxstart minend minstart note priority
675
701
  28: projectid responsible )</span>
676
- 29: <span class="ruby-ivar">@supportedResourceAttrs</span> = <span class="ruby-node">%( flags vacation workinghours )</span>
702
+ 29: <span class="ruby-ivar">@supportedResourceAttrs</span> = <span class="ruby-node">%( booking flags vacation workinghours )</span>
677
703
  30: <span class="ruby-keyword kw">end</span></pre>
678
704
  </div>
679
705
 
@@ -815,15 +841,15 @@ Return the project data in TJP syntax format.
815
841
  <div class="method-source-code"
816
842
  id="generate-ttribute-source">
817
843
  <pre>
818
- <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 343</span>
819
- 343: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateAttribute</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
820
- 344: <span class="ruby-identifier">val</span> = <span class="ruby-identifier">scenarioIdx</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">property</span>[<span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>] <span class="ruby-operator">:</span> <span class="ruby-identifier">property</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">attrId</span>)
821
- 345: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">val</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">empty?</span>) <span class="ruby-operator">||</span>
822
- 346: (<span class="ruby-identifier">scenarioIdx</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">inheritable?</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>))
823
- 347:
824
- 348: <span class="ruby-identifier">generateAttributeText</span>(<span class="ruby-identifier">property</span>.<span class="ruby-identifier">getAttribute</span>(<span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>).<span class="ruby-identifier">to_tjp</span>,
825
- 349: <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span>)
826
- 350: <span class="ruby-keyword kw">end</span></pre>
844
+ <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 352</span>
845
+ 352: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateAttribute</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
846
+ 353: <span class="ruby-identifier">val</span> = <span class="ruby-identifier">scenarioIdx</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">property</span>[<span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>] <span class="ruby-operator">:</span> <span class="ruby-identifier">property</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">attrId</span>)
847
+ 354: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">val</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">empty?</span>) <span class="ruby-operator">||</span>
848
+ 355: (<span class="ruby-identifier">scenarioIdx</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">inheritable?</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>))
849
+ 356:
850
+ 357: <span class="ruby-identifier">generateAttributeText</span>(<span class="ruby-identifier">property</span>.<span class="ruby-identifier">getAttribute</span>(<span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>).<span class="ruby-identifier">to_tjp</span>,
851
+ 358: <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span>)
852
+ 359: <span class="ruby-keyword kw">end</span></pre>
827
853
  </div>
828
854
 
829
855
  </div>
@@ -854,16 +880,58 @@ Return the project data in TJP syntax format.
854
880
  <div class="method-source-code"
855
881
  id="generate-ttribute-ext-source">
856
882
  <pre>
857
- <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 352</span>
858
- 352: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateAttributeText</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
859
- 353: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' '</span> * <span class="ruby-identifier">indent</span>
860
- 354: <span class="ruby-identifier">tag</span> = <span class="ruby-value str">''</span>
861
- 355: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">scenarioIdx</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">scenarioIdx</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
862
- 356: <span class="ruby-identifier">tag</span> = <span class="ruby-node">&quot;#{@project.scenario(scenarioIdx).id}:&quot;</span>
863
- 357: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">tag</span>
864
- 358: <span class="ruby-keyword kw">end</span>
865
- 359: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{indentBlock(text, indent + tag.length + 2)}\n&quot;</span>
866
- 360: <span class="ruby-keyword kw">end</span></pre>
883
+ <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 361</span>
884
+ 361: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateAttributeText</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
885
+ 362: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' '</span> * <span class="ruby-identifier">indent</span>
886
+ 363: <span class="ruby-identifier">tag</span> = <span class="ruby-value str">''</span>
887
+ 364: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">scenarioIdx</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">scenarioIdx</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
888
+ 365: <span class="ruby-identifier">tag</span> = <span class="ruby-node">&quot;#{@project.scenario(scenarioIdx).id}:&quot;</span>
889
+ 366: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">tag</span>
890
+ 367: <span class="ruby-keyword kw">end</span>
891
+ 368: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{indentBlock(text, indent + tag.length + 2)}\n&quot;</span>
892
+ 369: <span class="ruby-keyword kw">end</span></pre>
893
+ </div>
894
+
895
+ </div>
896
+
897
+
898
+
899
+
900
+ </div>
901
+
902
+
903
+ <div id="generate-ookings-y-esource-method" class="method-detail ">
904
+ <a name="method-i-generateBookingsByResource"></a>
905
+
906
+ <div class="method-heading">
907
+
908
+ <span class="method-name">generateBookingsByResource</span><span
909
+ class="method-args">(resource, indent, scenarioIdx)</span>
910
+ <span class="method-click-advice">click to toggle source</span>
911
+
912
+ </div>
913
+
914
+ <div class="method-description">
915
+
916
+
917
+
918
+
919
+
920
+ <div class="method-source-code"
921
+ id="generate-ookings-y-esource-source">
922
+ <pre>
923
+ <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 415</span>
924
+ 415: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateBookingsByResource</span>(<span class="ruby-identifier">resource</span>, <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span>)
925
+ 416: <span class="ruby-comment cmt"># Get the bookings for this resource hashed by task.</span>
926
+ 417: <span class="ruby-identifier">bookings</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getBookings</span>(<span class="ruby-identifier">scenarioIdx</span>,
927
+ 418: <span class="ruby-constant">TimeInterval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)),
928
+ 419: <span class="ruby-keyword kw">false</span>)
929
+ 420: <span class="ruby-identifier">bookings</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">booking</span><span class="ruby-operator">|</span>
930
+ 421: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@taskList</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">booking</span>.<span class="ruby-identifier">task</span>)
931
+ 422: <span class="ruby-identifier">generateAttributeText</span>(<span class="ruby-value str">'booking '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">to_tjp</span>(<span class="ruby-keyword kw">true</span>), <span class="ruby-identifier">indent</span>,
932
+ 423: <span class="ruby-identifier">scenarioIdx</span>)
933
+ 424: <span class="ruby-keyword kw">end</span>
934
+ 425: <span class="ruby-keyword kw">end</span></pre>
867
935
  </div>
868
936
 
869
937
  </div>
@@ -874,12 +942,12 @@ Return the project data in TJP syntax format.
874
942
  </div>
875
943
 
876
944
 
877
- <div id="generate-ooking-method" class="method-detail ">
878
- <a name="method-i-generateBooking"></a>
945
+ <div id="generate-ookings-y-ask-method" class="method-detail ">
946
+ <a name="method-i-generateBookingsByTask"></a>
879
947
 
880
948
  <div class="method-heading">
881
949
 
882
- <span class="method-name">generateBooking</span><span
950
+ <span class="method-name">generateBookingsByTask</span><span
883
951
  class="method-args">(task, indent, scenarioIdx)</span>
884
952
  <span class="method-click-advice">click to toggle source</span>
885
953
 
@@ -892,22 +960,23 @@ Return the project data in TJP syntax format.
892
960
 
893
961
 
894
962
  <div class="method-source-code"
895
- id="generate-ooking-source">
963
+ id="generate-ookings-y-ask-source">
896
964
  <pre>
897
- <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 390</span>
898
- 390: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateBooking</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span>)
899
- 391: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
900
- 392:
901
- 393: <span class="ruby-comment cmt"># Convert Hash into an [ Resource, Booking ] Array sorted by Resource</span>
902
- 394: <span class="ruby-comment cmt"># ID. This guarantees a reproducible order.</span>
903
- 395: <span class="ruby-identifier">resourceBookings</span> = <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">task</span>].<span class="ruby-identifier">sort</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
904
- 396: <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">fullId</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">b</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">fullId</span>
905
- 397: <span class="ruby-keyword kw">end</span>
906
- 398:
907
- 399: <span class="ruby-identifier">resourceBookings</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resourceId</span>, <span class="ruby-identifier">booking</span><span class="ruby-operator">|</span>
908
- 400: <span class="ruby-identifier">generateAttributeText</span>(<span class="ruby-value str">'booking '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">to_tjp</span>, <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span>)
909
- 401: <span class="ruby-keyword kw">end</span>
910
- 402: <span class="ruby-keyword kw">end</span></pre>
965
+ <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 400</span>
966
+ 400: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateBookingsByTask</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">scenarioIdx</span>)
967
+ 401: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
968
+ 402:
969
+ 403: <span class="ruby-comment cmt"># Convert Hash into an [ Resource, Booking ] Array sorted by Resource</span>
970
+ 404: <span class="ruby-comment cmt"># ID. This guarantees a reproducible order.</span>
971
+ 405: <span class="ruby-identifier">resourceBookings</span> = <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">task</span>].<span class="ruby-identifier">sort</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
972
+ 406: <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">fullId</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">b</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">fullId</span>
973
+ 407: <span class="ruby-keyword kw">end</span>
974
+ 408:
975
+ 409: <span class="ruby-identifier">resourceBookings</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resourceId</span>, <span class="ruby-identifier">booking</span><span class="ruby-operator">|</span>
976
+ 410: <span class="ruby-identifier">generateAttributeText</span>(<span class="ruby-value str">'booking '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">to_tjp</span>(<span class="ruby-keyword kw">false</span>), <span class="ruby-identifier">indent</span>,
977
+ 411: <span class="ruby-identifier">scenarioIdx</span>)
978
+ 412: <span class="ruby-keyword kw">end</span>
979
+ 413: <span class="ruby-keyword kw">end</span></pre>
911
980
  </div>
912
981
 
913
982
  </div>
@@ -1180,17 +1249,17 @@ the attributes.
1180
1249
  274: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateResourceAttributes</span>
1181
1250
  275: <span class="ruby-ivar">@resourceList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
1182
1251
  276: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">activity</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">%</span> <span class="ruby-value">100</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1183
- 277:
1184
- 278: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;supplement resource #{resource.fullId} {\n&quot;</span>
1185
- 279: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resources</span>.<span class="ruby-identifier">eachAttributeDefinition</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attrDef</span><span class="ruby-operator">|</span>
1186
- 280: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>
1187
- 281: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-ivar">@supportedResourceAttrs</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">id</span>) <span class="ruby-operator">&amp;&amp;</span>
1188
- 282: <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">userDefined</span>) <span class="ruby-operator">||</span>
1189
- 283: <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'resourceAttributes'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">id</span>)
1190
- 284:
1191
- 285: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">scenarioSpecific</span>
1192
- 286: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
1193
- 287: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">inheritable?</span>(<span class="ruby-identifier">resource</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">scenarioIdx</span>)
1252
+ 277: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;supplement resource #{resource.fullId} {\n&quot;</span>
1253
+ 278: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resources</span>.<span class="ruby-identifier">eachAttributeDefinition</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attrDef</span><span class="ruby-operator">|</span>
1254
+ 279: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>
1255
+ 280: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-ivar">@supportedResourceAttrs</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">id</span>) <span class="ruby-operator">&amp;&amp;</span>
1256
+ 281: <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">userDefined</span>) <span class="ruby-operator">||</span>
1257
+ 282: <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'resourceAttributes'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">id</span>)
1258
+ 283:
1259
+ 284: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">scenarioSpecific</span>
1260
+ 285: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
1261
+ 286: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">inheritable?</span>(<span class="ruby-identifier">resource</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">scenarioIdx</span>)
1262
+ 287:
1194
1263
  288: <span class="ruby-identifier">generateAttribute</span>(<span class="ruby-identifier">resource</span>, <span class="ruby-identifier">id</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">scenarioIdx</span>)
1195
1264
  289: <span class="ruby-keyword kw">end</span>
1196
1265
  290: <span class="ruby-keyword kw">else</span>
@@ -1198,9 +1267,18 @@ the attributes.
1198
1267
  292: <span class="ruby-keyword kw">end</span>
1199
1268
  293: <span class="ruby-keyword kw">end</span>
1200
1269
  294:
1201
- 295: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;}\n&quot;</span>
1202
- 296: <span class="ruby-keyword kw">end</span>
1203
- 297: <span class="ruby-keyword kw">end</span></pre>
1270
+ 295: <span class="ruby-comment cmt"># Since 'booking' is a task attribute, we need a special handling if</span>
1271
+ 296: <span class="ruby-comment cmt"># we want to list them in the resource context.</span>
1272
+ 297: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'resourceAttributes'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'booking'</span>) <span class="ruby-operator">&amp;&amp;</span>
1273
+ 298: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'resourceAttributes'</span>)[<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'*'</span>
1274
+ 299: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
1275
+ 300: <span class="ruby-identifier">generateBookingsByResource</span>(<span class="ruby-identifier">resource</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">scenarioIdx</span>)
1276
+ 301: <span class="ruby-keyword kw">end</span>
1277
+ 302: <span class="ruby-keyword kw">end</span>
1278
+ 303:
1279
+ 304: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;}\n&quot;</span>
1280
+ 305: <span class="ruby-keyword kw">end</span>
1281
+ 306: <span class="ruby-keyword kw">end</span></pre>
1204
1282
  </div>
1205
1283
 
1206
1284
  </div>
@@ -1321,7 +1399,7 @@ attributes are declared in subsequent supplement statements.
1321
1399
  193: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateTask</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">indent</span>)
1322
1400
  194: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">activity</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">%</span> <span class="ruby-value">100</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1323
1401
  195:
1324
- 196: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' '</span> * <span class="ruby-identifier">indent</span> <span class="ruby-operator">+</span> <span class="ruby-node">&quot;task #{task.id} &quot;</span> <span class="ruby-operator">+</span>
1402
+ 196: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' '</span> * <span class="ruby-identifier">indent</span> <span class="ruby-operator">+</span> <span class="ruby-node">&quot;task #{task.subId} &quot;</span> <span class="ruby-operator">+</span>
1325
1403
  197: <span class="ruby-node">&quot;#{quotedString(task.name)} {\n&quot;</span>
1326
1404
  198:
1327
1405
  199: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'taskAttributes'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'depends'</span>)
@@ -1406,48 +1484,48 @@ attributes.
1406
1484
  <div class="method-source-code"
1407
1485
  id="generate-ask-ttributes-source">
1408
1486
  <pre>
1409
- <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 301</span>
1410
- 301: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateTaskAttributes</span>
1411
- 302: <span class="ruby-ivar">@taskList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
1412
- 303: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">activity</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">%</span> <span class="ruby-value">100</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1413
- 304:
1414
- 305: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;supplement task #{task.fullId} {\n&quot;</span>
1415
- 306: <span class="ruby-comment cmt"># Declare adopted tasks.</span>
1416
- 307: <span class="ruby-identifier">adoptees</span> = <span class="ruby-value str">&quot;&quot;</span>
1417
- 308: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">adoptees</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">adoptee</span><span class="ruby-operator">|</span>
1418
- 309: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@taskList</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">adoptee</span>)
1419
- 310:
1420
- 311: <span class="ruby-identifier">adoptees</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">adoptees</span>.<span class="ruby-identifier">empty?</span>
1421
- 312: <span class="ruby-identifier">adoptees</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">adoptee</span>.<span class="ruby-identifier">fullId</span>
1422
- 313: <span class="ruby-keyword kw">end</span>
1423
- 314: <span class="ruby-identifier">generateAttributeText</span>(<span class="ruby-node">&quot;adopt #{adoptees}&quot;</span>, <span class="ruby-value">2</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">adoptees</span>.<span class="ruby-identifier">empty?</span>
1424
- 315:
1425
- 316: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">eachAttributeDefinition</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attrDef</span><span class="ruby-operator">|</span>
1426
- 317: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>
1427
- 318:
1428
- 319: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-ivar">@supportedTaskAttrs</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">id</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">userDefined</span>) <span class="ruby-operator">||</span>
1429
- 320: <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'taskAttributes'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">id</span>)
1430
- 321:
1431
- 322: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">scenarioSpecific</span>
1432
- 323: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
1433
- 324: <span class="ruby-comment cmt"># Some attributes need special treatment.</span>
1434
- 325: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">id</span>
1435
- 326: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'depends'</span>
1436
- 327: <span class="ruby-keyword kw">next</span> <span class="ruby-comment cmt"># already taken care of</span>
1437
- 328: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'booking'</span>
1438
- 329: <span class="ruby-identifier">generateBooking</span>(<span class="ruby-identifier">task</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">scenarioIdx</span>)
1439
- 330: <span class="ruby-keyword kw">else</span>
1440
- 331: <span class="ruby-identifier">generateAttribute</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">id</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">scenarioIdx</span>)
1441
- 332: <span class="ruby-keyword kw">end</span>
1442
- 333: <span class="ruby-keyword kw">end</span>
1443
- 334: <span class="ruby-keyword kw">else</span>
1444
- 335: <span class="ruby-identifier">generateAttribute</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">id</span>, <span class="ruby-value">2</span>)
1445
- 336: <span class="ruby-keyword kw">end</span>
1446
- 337: <span class="ruby-keyword kw">end</span>
1447
- 338:
1448
- 339: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;}\n&quot;</span>
1449
- 340: <span class="ruby-keyword kw">end</span>
1450
- 341: <span class="ruby-keyword kw">end</span></pre>
1487
+ <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 310</span>
1488
+ 310: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateTaskAttributes</span>
1489
+ 311: <span class="ruby-ivar">@taskList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
1490
+ 312: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">activity</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">%</span> <span class="ruby-value">100</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1491
+ 313:
1492
+ 314: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;supplement task #{task.fullId} {\n&quot;</span>
1493
+ 315: <span class="ruby-comment cmt"># Declare adopted tasks.</span>
1494
+ 316: <span class="ruby-identifier">adoptees</span> = <span class="ruby-value str">&quot;&quot;</span>
1495
+ 317: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">adoptees</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">adoptee</span><span class="ruby-operator">|</span>
1496
+ 318: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@taskList</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">adoptee</span>)
1497
+ 319:
1498
+ 320: <span class="ruby-identifier">adoptees</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">adoptees</span>.<span class="ruby-identifier">empty?</span>
1499
+ 321: <span class="ruby-identifier">adoptees</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">adoptee</span>.<span class="ruby-identifier">fullId</span>
1500
+ 322: <span class="ruby-keyword kw">end</span>
1501
+ 323: <span class="ruby-identifier">generateAttributeText</span>(<span class="ruby-node">&quot;adopt #{adoptees}&quot;</span>, <span class="ruby-value">2</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">adoptees</span>.<span class="ruby-identifier">empty?</span>
1502
+ 324:
1503
+ 325: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">eachAttributeDefinition</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attrDef</span><span class="ruby-operator">|</span>
1504
+ 326: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>
1505
+ 327:
1506
+ 328: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-ivar">@supportedTaskAttrs</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">id</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">userDefined</span>) <span class="ruby-operator">||</span>
1507
+ 329: <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'taskAttributes'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">id</span>)
1508
+ 330:
1509
+ 331: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">scenarioSpecific</span>
1510
+ 332: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
1511
+ 333: <span class="ruby-comment cmt"># Some attributes need special treatment.</span>
1512
+ 334: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">id</span>
1513
+ 335: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'depends'</span>
1514
+ 336: <span class="ruby-keyword kw">next</span> <span class="ruby-comment cmt"># already taken care of</span>
1515
+ 337: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'booking'</span>
1516
+ 338: <span class="ruby-identifier">generateBookingsByTask</span>(<span class="ruby-identifier">task</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">scenarioIdx</span>)
1517
+ 339: <span class="ruby-keyword kw">else</span>
1518
+ 340: <span class="ruby-identifier">generateAttribute</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">id</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">scenarioIdx</span>)
1519
+ 341: <span class="ruby-keyword kw">end</span>
1520
+ 342: <span class="ruby-keyword kw">end</span>
1521
+ 343: <span class="ruby-keyword kw">else</span>
1522
+ 344: <span class="ruby-identifier">generateAttribute</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">id</span>, <span class="ruby-value">2</span>)
1523
+ 345: <span class="ruby-keyword kw">end</span>
1524
+ 346: <span class="ruby-keyword kw">end</span>
1525
+ 347:
1526
+ 348: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;}\n&quot;</span>
1527
+ 349: <span class="ruby-keyword kw">end</span>
1528
+ 350: <span class="ruby-keyword kw">end</span></pre>
1451
1529
  </div>
1452
1530
 
1453
1531
  </div>
@@ -1576,32 +1654,33 @@ report.
1576
1654
  <div class="method-source-code"
1577
1655
  id="get-ookings-source">
1578
1656
  <pre>
1579
- <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 364</span>
1580
- 364: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getBookings</span>
1581
- 365: <span class="ruby-ivar">@bookings</span> = {}
1582
- 366: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'taskAttributes'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'booking'</span>)
1583
- 367: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
1584
- 368: <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>] = {}
1585
- 369: <span class="ruby-ivar">@resourceList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
1586
- 370: <span class="ruby-comment cmt"># Get the bookings for this resource hashed by task.</span>
1587
- 371: <span class="ruby-identifier">bookings</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getBookings</span>(<span class="ruby-identifier">scenarioIdx</span>,
1588
- 372: <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)))
1589
- 373: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">bookings</span>.<span class="ruby-identifier">nil?</span>
1590
- 374:
1591
- 375: <span class="ruby-comment cmt"># Now convert/add them to a tripple-stage hash by scenarioIdx, task</span>
1592
- 376: <span class="ruby-comment cmt"># and then resource.</span>
1593
- 377: <span class="ruby-identifier">bookings</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">booking</span><span class="ruby-operator">|</span>
1594
- 378: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@taskList</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
1595
- 379:
1596
- 380: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
1597
- 381: <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">task</span>] = {}
1598
- 382: <span class="ruby-keyword kw">end</span>
1599
- 383: <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">task</span>][<span class="ruby-identifier">resource</span>] = <span class="ruby-identifier">booking</span>
1600
- 384: <span class="ruby-keyword kw">end</span>
1601
- 385: <span class="ruby-keyword kw">end</span>
1602
- 386: <span class="ruby-keyword kw">end</span>
1603
- 387: <span class="ruby-keyword kw">end</span>
1604
- 388: <span class="ruby-keyword kw">end</span></pre>
1657
+ <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 373</span>
1658
+ 373: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getBookings</span>
1659
+ 374: <span class="ruby-ivar">@bookings</span> = {}
1660
+ 375: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'taskAttributes'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'booking'</span>) <span class="ruby-operator">||</span>
1661
+ 376: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'resourceAttributes'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'booking'</span>)
1662
+ 377: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
1663
+ 378: <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>] = {}
1664
+ 379: <span class="ruby-ivar">@resourceList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
1665
+ 380: <span class="ruby-comment cmt"># Get the bookings for this resource hashed by task.</span>
1666
+ 381: <span class="ruby-identifier">bookings</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getBookings</span>(
1667
+ 382: <span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-constant">TimeInterval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)))
1668
+ 383: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">bookings</span>.<span class="ruby-identifier">nil?</span>
1669
+ 384:
1670
+ 385: <span class="ruby-comment cmt"># Now convert/add them to a tripple-stage hash by scenarioIdx, task</span>
1671
+ 386: <span class="ruby-comment cmt"># and then resource.</span>
1672
+ 387: <span class="ruby-identifier">bookings</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">booking</span><span class="ruby-operator">|</span>
1673
+ 388: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@taskList</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
1674
+ 389:
1675
+ 390: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
1676
+ 391: <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">task</span>] = {}
1677
+ 392: <span class="ruby-keyword kw">end</span>
1678
+ 393: <span class="ruby-ivar">@bookings</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">task</span>][<span class="ruby-identifier">resource</span>] = <span class="ruby-identifier">booking</span>
1679
+ 394: <span class="ruby-keyword kw">end</span>
1680
+ 395: <span class="ruby-keyword kw">end</span>
1681
+ 396: <span class="ruby-keyword kw">end</span>
1682
+ 397: <span class="ruby-keyword kw">end</span>
1683
+ 398: <span class="ruby-keyword kw">end</span></pre>
1605
1684
  </div>
1606
1685
 
1607
1686
  </div>
@@ -1639,21 +1718,21 @@ a line break.
1639
1718
  <div class="method-source-code"
1640
1719
  id="indent-lock-source">
1641
1720
  <pre>
1642
- <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 410</span>
1643
- 410: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">indentBlock</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">indent</span>)
1644
- 411: <span class="ruby-identifier">out</span> = <span class="ruby-value str">''</span>
1645
- 412: <span class="ruby-identifier">firstSpace</span> = <span class="ruby-value">0</span>
1646
- 413: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1647
- 414: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">firstSpace</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">text</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-value">\ \</span><span class="ruby-comment cmt"># There must be a space after ?</span>
1648
- 415: <span class="ruby-identifier">firstSpace</span> = <span class="ruby-identifier">i</span>
1649
- 416: <span class="ruby-keyword kw">end</span>
1650
- 417: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">text</span>[<span class="ruby-identifier">i</span>]
1651
- 418: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-value">\n\</span>
1652
- 419: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">' '</span> * (<span class="ruby-identifier">indent</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">firstSpace</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
1653
- 420: <span class="ruby-keyword kw">end</span>
1654
- 421: <span class="ruby-keyword kw">end</span>
1655
- 422: <span class="ruby-identifier">out</span>
1656
- 423: <span class="ruby-keyword kw">end</span></pre>
1721
+ <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 434</span>
1722
+ 434: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">indentBlock</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">indent</span>)
1723
+ 435: <span class="ruby-identifier">out</span> = <span class="ruby-value str">''</span>
1724
+ 436: <span class="ruby-identifier">firstSpace</span> = <span class="ruby-value">0</span>
1725
+ 437: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1726
+ 438: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">firstSpace</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">text</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-value">\ \</span><span class="ruby-comment cmt"># There must be a space after ?</span>
1727
+ 439: <span class="ruby-identifier">firstSpace</span> = <span class="ruby-identifier">i</span>
1728
+ 440: <span class="ruby-keyword kw">end</span>
1729
+ 441: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">text</span>[<span class="ruby-identifier">i</span>]
1730
+ 442: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-value">\n\</span>
1731
+ 443: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">' '</span> * (<span class="ruby-identifier">indent</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">firstSpace</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
1732
+ 444: <span class="ruby-keyword kw">end</span>
1733
+ 445: <span class="ruby-keyword kw">end</span>
1734
+ 446: <span class="ruby-identifier">out</span>
1735
+ 447: <span class="ruby-keyword kw">end</span></pre>
1657
1736
  </div>
1658
1737
 
1659
1738
  </div>
@@ -1687,19 +1766,19 @@ from the parent scenario.
1687
1766
  <div class="method-source-code"
1688
1767
  id="inheritable--source">
1689
1768
  <pre>
1690
- <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 436</span>
1691
- 436: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inheritable?</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">listItem</span> = <span class="ruby-keyword kw">nil</span>)
1692
- 437: <span class="ruby-identifier">parentScenario</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scenarioIdx</span>).<span class="ruby-identifier">parent</span>
1693
- 438: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">parentScenario</span>
1694
- 439:
1695
- 440: <span class="ruby-identifier">parentScenarioIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">parentScenario</span>)
1696
- 441: <span class="ruby-identifier">parentAttr</span> = <span class="ruby-identifier">property</span>[<span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">parentScenarioIdx</span>]
1697
- 442: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parentAttr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">listItem</span>
1698
- 443: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">parentAttr</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">listItem</span>)
1699
- 444: <span class="ruby-keyword kw">else</span>
1700
- 445: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">property</span>[<span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">parentAttr</span>
1701
- 446: <span class="ruby-keyword kw">end</span>
1702
- 447: <span class="ruby-keyword kw">end</span></pre>
1769
+ <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 460</span>
1770
+ 460: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inheritable?</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">listItem</span> = <span class="ruby-keyword kw">nil</span>)
1771
+ 461: <span class="ruby-identifier">parentScenario</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scenarioIdx</span>).<span class="ruby-identifier">parent</span>
1772
+ 462: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">parentScenario</span>
1773
+ 463:
1774
+ 464: <span class="ruby-identifier">parentScenarioIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">parentScenario</span>)
1775
+ 465: <span class="ruby-identifier">parentAttr</span> = <span class="ruby-identifier">property</span>[<span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">parentScenarioIdx</span>]
1776
+ 466: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parentAttr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">listItem</span>
1777
+ 467: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">parentAttr</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">listItem</span>)
1778
+ 468: <span class="ruby-keyword kw">else</span>
1779
+ 469: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">property</span>[<span class="ruby-identifier">attrId</span>, <span class="ruby-identifier">scenarioIdx</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">parentAttr</span>
1780
+ 470: <span class="ruby-keyword kw">end</span>
1781
+ 471: <span class="ruby-keyword kw">end</span></pre>
1703
1782
  </div>
1704
1783
 
1705
1784
  </div>
@@ -1730,15 +1809,15 @@ from the parent scenario.
1730
1809
  <div class="method-source-code"
1731
1810
  id="quoted-tring-source">
1732
1811
  <pre>
1733
- <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 425</span>
1734
- 425: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">quotedString</span>(<span class="ruby-identifier">str</span>)
1735
- 426: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">str</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">\n\</span>
1736
- 427: <span class="ruby-node">&quot;-8&lt;-\n#{str}\n-&gt;8-&quot;</span>
1737
- 428: <span class="ruby-keyword kw">else</span>
1738
- 429: <span class="ruby-identifier">escaped</span> = <span class="ruby-identifier">str</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">&quot;\&quot;&quot;</span>, <span class="ruby-value str">'\&quot;'</span>)
1739
- 430: <span class="ruby-node">&quot;\&quot;#{escaped}\&quot;&quot;</span>
1740
- 431: <span class="ruby-keyword kw">end</span>
1741
- 432: <span class="ruby-keyword kw">end</span></pre>
1812
+ <span class="ruby-comment cmt"># File lib/taskjuggler/reports/TjpExportRE.rb, line 449</span>
1813
+ 449: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">quotedString</span>(<span class="ruby-identifier">str</span>)
1814
+ 450: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">str</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">\n\</span>
1815
+ 451: <span class="ruby-node">&quot;-8&lt;-\n#{str}\n-&gt;8-&quot;</span>
1816
+ 452: <span class="ruby-keyword kw">else</span>
1817
+ 453: <span class="ruby-identifier">escaped</span> = <span class="ruby-identifier">str</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">&quot;\&quot;&quot;</span>, <span class="ruby-value str">'\&quot;'</span>)
1818
+ 454: <span class="ruby-node">&quot;\&quot;#{escaped}\&quot;&quot;</span>
1819
+ 455: <span class="ruby-keyword kw">end</span>
1820
+ 456: <span class="ruby-keyword kw">end</span></pre>
1742
1821
  </div>
1743
1822
 
1744
1823
  </div>