taskjuggler 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -291,12 +291,24 @@
291
291
 
292
292
  <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
293
293
 
294
+ <li><a href="../TaskJuggler/ICalReport.html">TaskJuggler::ICalReport</a></li>
295
+
296
+ <li><a href="../TaskJuggler/ICalendar.html">TaskJuggler::ICalendar</a></li>
297
+
298
+ <li><a href="../TaskJuggler/ICalendar/Component.html">TaskJuggler::ICalendar::Component</a></li>
299
+
300
+ <li><a href="../TaskJuggler/ICalendar/Event.html">TaskJuggler::ICalendar::Event</a></li>
301
+
302
+ <li><a href="../TaskJuggler/ICalendar/Journal.html">TaskJuggler::ICalendar::Journal</a></li>
303
+
304
+ <li><a href="../TaskJuggler/ICalendar/Person.html">TaskJuggler::ICalendar::Person</a></li>
305
+
306
+ <li><a href="../TaskJuggler/ICalendar/Todo.html">TaskJuggler::ICalendar::Todo</a></li>
307
+
294
308
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
295
309
 
296
310
  <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
297
311
 
298
- <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
299
-
300
312
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
301
313
 
302
314
  <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
@@ -411,6 +423,8 @@
411
423
 
412
424
  <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
413
425
 
426
+ <li><a href="../TaskJuggler/ReportScenario.html">TaskJuggler::ReportScenario</a></li>
427
+
414
428
  <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
415
429
 
416
430
  <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
@@ -469,6 +483,8 @@
469
483
 
470
484
  <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
471
485
 
486
+ <li><a href="../TaskJuggler/ScoreboardInterval.html">TaskJuggler::ScoreboardInterval</a></li>
487
+
472
488
  <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
473
489
 
474
490
  <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
@@ -515,6 +531,10 @@
515
531
 
516
532
  <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
517
533
 
534
+ <li><a href="../TaskJuggler/TagFile.html">TaskJuggler::TagFile</a></li>
535
+
536
+ <li><a href="../TaskJuggler/TagFile/TagFileEntry.html">TaskJuggler::TagFile::TagFileEntry</a></li>
537
+
518
538
  <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
519
539
 
520
540
  <li><a href="../TaskJuggler/TaskDepListAttribute.html">TaskJuggler::TaskDepListAttribute</a></li>
@@ -565,6 +585,10 @@
565
585
 
566
586
  <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
567
587
 
588
+ <li><a href="../TaskJuggler/TimeInterval.html">TaskJuggler::TimeInterval</a></li>
589
+
590
+ <li><a href="../TaskJuggler/TimeIntervalListAttribute.html">TaskJuggler::TimeIntervalListAttribute</a></li>
591
+
568
592
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
569
593
 
570
594
  <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
@@ -724,6 +748,21 @@ attribute like an URL that contains more details about the task.
724
748
 
725
749
 
726
750
 
751
+ </div>
752
+ </div>
753
+
754
+ <div id="sub-d-attribute-method" class="method-detail">
755
+ <a name="subId"></a>
756
+
757
+ <div class="method-heading attribute-method-heading">
758
+ <span class="method-name">subId</span><span
759
+ class="attribute-access-type">[R]</span>
760
+ </div>
761
+
762
+ <div class="method-description">
763
+
764
+
765
+
727
766
  </div>
728
767
  </div>
729
768
 
@@ -898,87 +937,89 @@ be nil and specified by a hierachical <em>id</em> (e. g.
898
937
  44: <span class="ruby-ivar">@propertySet</span> = <span class="ruby-identifier">propertySet</span>
899
938
  45: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">propertySet</span>.<span class="ruby-identifier">project</span>
900
939
  46: <span class="ruby-ivar">@parent</span> = <span class="ruby-identifier">parent</span>
901
- 47: <span class="ruby-comment cmt"># Attributes are created on-demand. We need to be careful that a pure</span>
902
- 48: <span class="ruby-comment cmt"># check for existance does not create them unecessarily.</span>
903
- 49: <span class="ruby-ivar">@attributes</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash</span>, <span class="ruby-identifier">attributeId</span><span class="ruby-operator">|</span>
904
- 50: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">aType</span> = <span class="ruby-identifier">attributeDefinition</span>(<span class="ruby-identifier">attributeId</span>))
905
- 51: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
906
- 52: <span class="ruby-node">&quot;Unknown attribute '#{attributeId}' requested for &quot;</span> <span class="ruby-operator">+</span>
907
- 53: <span class="ruby-node">&quot;#{self.class.to_s.sub(/TaskJuggler::/, '')} '#{fullId}'&quot;</span>
908
- 54: <span class="ruby-keyword kw">end</span>
909
- 55: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">aType</span>.<span class="ruby-identifier">scenarioSpecific</span>
910
- 56: <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">attributeId</span>] = <span class="ruby-identifier">aType</span>.<span class="ruby-identifier">objClass</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@propertySet</span>, <span class="ruby-identifier">aType</span>)
911
- 57: <span class="ruby-keyword kw">else</span>
912
- 58: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Attribute '#{attributeId}' is scenario specific&quot;</span>
913
- 59: <span class="ruby-keyword kw">end</span>
914
- 60: <span class="ruby-keyword kw">end</span>
915
- 61: <span class="ruby-ivar">@scenarioAttributes</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioCount</span>) <span class="ruby-keyword kw">do</span>
916
- 62: <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash</span>, <span class="ruby-identifier">attributeId</span><span class="ruby-operator">|</span>
917
- 63: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">aType</span> = <span class="ruby-identifier">attributeDefinition</span>(<span class="ruby-identifier">attributeId</span>))
918
- 64: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
919
- 65: <span class="ruby-node">&quot;Unknown attribute '#{attributeId}' requested for &quot;</span> <span class="ruby-operator">+</span>
920
- 66: <span class="ruby-node">&quot;#{self.class.to_s.sub(/TaskJuggler::/, '')} '#{fullId}'&quot;</span>
921
- 67: <span class="ruby-keyword kw">end</span>
922
- 68: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">aType</span>.<span class="ruby-identifier">scenarioSpecific</span>
923
- 69: <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">attributeId</span>] = <span class="ruby-identifier">aType</span>.<span class="ruby-identifier">objClass</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@propertySet</span>, <span class="ruby-identifier">aType</span>)
924
- 70: <span class="ruby-keyword kw">else</span>
925
- 71: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
926
- 72: <span class="ruby-node">&quot;Attribute '#{attributeId}' is not scenario specific&quot;</span>
927
- 73: <span class="ruby-keyword kw">end</span>
928
- 74: <span class="ruby-keyword kw">end</span>
929
- 75: <span class="ruby-keyword kw">end</span>
930
- 76:
931
- 77: <span class="ruby-comment cmt"># If _id_ is still nil, we generate a unique id.</span>
932
- 78: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">id</span>
933
- 79: <span class="ruby-identifier">tag</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/TaskJuggler::/</span>, <span class="ruby-value str">''</span>)
934
- 80: <span class="ruby-identifier">id</span> = <span class="ruby-value str">'_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">tag</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'_'</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">propertySet</span>.<span class="ruby-identifier">items</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span>
935
- 81: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">fullId</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'.'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">id</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">flatNamespace</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">parent</span>
936
- 82: <span class="ruby-keyword kw">end</span>
937
- 83: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">flatNamespace</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">id</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'.'</span>)
938
- 84: <span class="ruby-identifier">parentId</span> = <span class="ruby-identifier">id</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">id</span>.<span class="ruby-identifier">rindex</span>(<span class="ruby-value str">'.'</span>) <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)]
939
- 85: <span class="ruby-comment cmt"># Set parent to the parent property if it's still nil.</span>
940
- 86: <span class="ruby-ivar">@parent</span> = <span class="ruby-ivar">@propertySet</span>[<span class="ruby-identifier">parentId</span>] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@parent</span>
941
- 87: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span>
942
- 88: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@parent</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@propertySet</span>[<span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">fullId</span>]
943
- 89: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Fatal Error: parent must be member of same property set&quot;</span>
944
- 90: <span class="ruby-keyword kw">end</span>
945
- 91: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parentId</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">fullId</span>
946
- 92: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Fatal Error: parent (#{@parent.fullId}) and parent ID &quot;</span> <span class="ruby-operator">+</span>
947
- 93: <span class="ruby-node">&quot;(#{@parentId}) don't match&quot;</span>
948
- 94: <span class="ruby-keyword kw">end</span>
949
- 95: <span class="ruby-keyword kw">end</span>
950
- 96: <span class="ruby-ivar">@id</span> = <span class="ruby-identifier">id</span>[(<span class="ruby-identifier">id</span>.<span class="ruby-identifier">rindex</span>(<span class="ruby-value str">'.'</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)<span class="ruby-operator">..</span> <span class="ruby-value">1</span>]
951
- 97: <span class="ruby-keyword kw">else</span>
952
- 98: <span class="ruby-ivar">@id</span> = <span class="ruby-identifier">id</span>
953
- 99: <span class="ruby-keyword kw">end</span>
954
- 100: <span class="ruby-comment cmt"># The attribute 'id' is either the short ID or the full hierarchical ID.</span>
955
- 101: <span class="ruby-identifier">set</span>(<span class="ruby-value str">'id'</span>, <span class="ruby-identifier">fullId</span>)
956
- 102:
957
- 103: <span class="ruby-comment cmt"># The name of the property.</span>
958
- 104: <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
959
- 105: <span class="ruby-identifier">set</span>(<span class="ruby-value str">'name'</span>, <span class="ruby-identifier">name</span>)
960
- 106:
961
- 107: <span class="ruby-ivar">@level</span> = <span class="ruby-value">1</span>
962
- 108: <span class="ruby-ivar">@sourceFileInfo</span> = <span class="ruby-keyword kw">nil</span>
963
- 109:
964
- 110: <span class="ruby-ivar">@sequenceNo</span> = <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">items</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
965
- 111: <span class="ruby-identifier">set</span>(<span class="ruby-value str">'seqno'</span>, <span class="ruby-ivar">@sequenceNo</span>)
966
- 112: <span class="ruby-comment cmt"># This is a list of the real sub nodes of this PropertyTreeNode.</span>
967
- 113: <span class="ruby-ivar">@children</span> = []
968
- 114: <span class="ruby-comment cmt"># This is a list of the adopted sub nodes of this PropertyTreeNode.</span>
969
- 115: <span class="ruby-ivar">@adoptees</span> = []
970
- 116: <span class="ruby-comment cmt"># In case we have a parent object, we register this object as child of</span>
971
- 117: <span class="ruby-comment cmt"># the parent.</span>
972
- 118: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@parent</span>)
973
- 119: <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">addChild</span>(<span class="ruby-keyword kw">self</span>)
974
- 120: <span class="ruby-keyword kw">end</span>
975
- 121: <span class="ruby-comment cmt"># This is a list of the PropertyTreeNode objects that have adopted this</span>
976
- 122: <span class="ruby-comment cmt"># node.</span>
977
- 123: <span class="ruby-ivar">@stepParents</span> = []
978
- 124:
979
- 125: <span class="ruby-comment cmt"># Scenario specific data</span>
980
- 126: <span class="ruby-ivar">@data</span> = <span class="ruby-keyword kw">nil</span>
981
- 127: <span class="ruby-keyword kw">end</span></pre>
940
+ 47:
941
+ 48: <span class="ruby-comment cmt"># Scenario specific data</span>
942
+ 49: <span class="ruby-ivar">@data</span> = <span class="ruby-keyword kw">nil</span>
943
+ 50:
944
+ 51: <span class="ruby-comment cmt"># Attributes are created on-demand. We need to be careful that a pure</span>
945
+ 52: <span class="ruby-comment cmt"># check for existance does not create them unecessarily.</span>
946
+ 53: <span class="ruby-ivar">@attributes</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash</span>, <span class="ruby-identifier">attributeId</span><span class="ruby-operator">|</span>
947
+ 54: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">aType</span> = <span class="ruby-identifier">attributeDefinition</span>(<span class="ruby-identifier">attributeId</span>))
948
+ 55: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
949
+ 56: <span class="ruby-node">&quot;Unknown attribute '#{attributeId}' requested for &quot;</span> <span class="ruby-operator">+</span>
950
+ 57: <span class="ruby-node">&quot;#{self.class.to_s.sub(/TaskJuggler::/, '')} '#{fullId}'&quot;</span>
951
+ 58: <span class="ruby-keyword kw">end</span>
952
+ 59: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">aType</span>.<span class="ruby-identifier">scenarioSpecific</span>
953
+ 60: <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">attributeId</span>] = <span class="ruby-identifier">aType</span>.<span class="ruby-identifier">objClass</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@propertySet</span>, <span class="ruby-identifier">aType</span>, <span class="ruby-keyword kw">self</span>)
954
+ 61: <span class="ruby-keyword kw">else</span>
955
+ 62: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Attribute '#{attributeId}' is scenario specific&quot;</span>
956
+ 63: <span class="ruby-keyword kw">end</span>
957
+ 64: <span class="ruby-keyword kw">end</span>
958
+ 65: <span class="ruby-ivar">@scenarioAttributes</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioCount</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
959
+ 66: <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash</span>, <span class="ruby-identifier">attributeId</span><span class="ruby-operator">|</span>
960
+ 67: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">aType</span> = <span class="ruby-identifier">attributeDefinition</span>(<span class="ruby-identifier">attributeId</span>))
961
+ 68: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
962
+ 69: <span class="ruby-node">&quot;Unknown attribute '#{attributeId}' requested for &quot;</span> <span class="ruby-operator">+</span>
963
+ 70: <span class="ruby-node">&quot;#{self.class.to_s.sub(/TaskJuggler::/, '')} '#{fullId}'&quot;</span>
964
+ 71: <span class="ruby-keyword kw">end</span>
965
+ 72: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">aType</span>.<span class="ruby-identifier">scenarioSpecific</span>
966
+ 73: <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">attributeId</span>] = <span class="ruby-identifier">aType</span>.<span class="ruby-identifier">objClass</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@propertySet</span>, <span class="ruby-identifier">aType</span>,
967
+ 74: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">scenarioIdx</span>])
968
+ 75: <span class="ruby-keyword kw">else</span>
969
+ 76: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
970
+ 77: <span class="ruby-node">&quot;Attribute '#{attributeId}' is not scenario specific&quot;</span>
971
+ 78: <span class="ruby-keyword kw">end</span>
972
+ 79: <span class="ruby-keyword kw">end</span>
973
+ 80: <span class="ruby-keyword kw">end</span>
974
+ 81:
975
+ 82: <span class="ruby-comment cmt"># If _id_ is still nil, we generate a unique id.</span>
976
+ 83: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">id</span>
977
+ 84: <span class="ruby-identifier">tag</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/TaskJuggler::/</span>, <span class="ruby-value str">''</span>)
978
+ 85: <span class="ruby-identifier">id</span> = <span class="ruby-value str">'_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">tag</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'_'</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">propertySet</span>.<span class="ruby-identifier">items</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">to_s</span>
979
+ 86: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">fullId</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'.'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">id</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">flatNamespace</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">parent</span>
980
+ 87: <span class="ruby-keyword kw">end</span>
981
+ 88: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">flatNamespace</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">id</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'.'</span>)
982
+ 89: <span class="ruby-identifier">parentId</span> = <span class="ruby-identifier">id</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">id</span>.<span class="ruby-identifier">rindex</span>(<span class="ruby-value str">'.'</span>) <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)]
983
+ 90: <span class="ruby-comment cmt"># Set parent to the parent property if it's still nil.</span>
984
+ 91: <span class="ruby-ivar">@parent</span> = <span class="ruby-ivar">@propertySet</span>[<span class="ruby-identifier">parentId</span>] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@parent</span>
985
+ 92: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span>
986
+ 93: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@parent</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@propertySet</span>[<span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">fullId</span>]
987
+ 94: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Fatal Error: parent must be member of same property set&quot;</span>
988
+ 95: <span class="ruby-keyword kw">end</span>
989
+ 96: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parentId</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">fullId</span>
990
+ 97: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Fatal Error: parent (#{@parent.fullId}) and parent ID &quot;</span> <span class="ruby-operator">+</span>
991
+ 98: <span class="ruby-node">&quot;(#{@parentId}) don't match&quot;</span>
992
+ 99: <span class="ruby-keyword kw">end</span>
993
+ 100: <span class="ruby-keyword kw">end</span>
994
+ 101: <span class="ruby-ivar">@subId</span> = <span class="ruby-identifier">id</span>[(<span class="ruby-identifier">id</span>.<span class="ruby-identifier">rindex</span>(<span class="ruby-value str">'.'</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)<span class="ruby-operator">..</span> <span class="ruby-value">1</span>]
995
+ 102: <span class="ruby-keyword kw">else</span>
996
+ 103: <span class="ruby-ivar">@subId</span> = <span class="ruby-identifier">id</span>
997
+ 104: <span class="ruby-keyword kw">end</span>
998
+ 105: <span class="ruby-comment cmt"># The attribute 'id' is either the short ID or the full hierarchical ID.</span>
999
+ 106: <span class="ruby-identifier">set</span>(<span class="ruby-value str">'id'</span>, <span class="ruby-identifier">fullId</span>)
1000
+ 107:
1001
+ 108: <span class="ruby-comment cmt"># The name of the property.</span>
1002
+ 109: <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
1003
+ 110: <span class="ruby-identifier">set</span>(<span class="ruby-value str">'name'</span>, <span class="ruby-identifier">name</span>)
1004
+ 111:
1005
+ 112: <span class="ruby-ivar">@level</span> = <span class="ruby-value">1</span>
1006
+ 113: <span class="ruby-ivar">@sourceFileInfo</span> = <span class="ruby-keyword kw">nil</span>
1007
+ 114:
1008
+ 115: <span class="ruby-ivar">@sequenceNo</span> = <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">items</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
1009
+ 116: <span class="ruby-identifier">set</span>(<span class="ruby-value str">'seqno'</span>, <span class="ruby-ivar">@sequenceNo</span>)
1010
+ 117: <span class="ruby-comment cmt"># This is a list of the real sub nodes of this PropertyTreeNode.</span>
1011
+ 118: <span class="ruby-ivar">@children</span> = []
1012
+ 119: <span class="ruby-comment cmt"># This is a list of the adopted sub nodes of this PropertyTreeNode.</span>
1013
+ 120: <span class="ruby-ivar">@adoptees</span> = []
1014
+ 121: <span class="ruby-comment cmt"># In case we have a parent object, we register this object as child of</span>
1015
+ 122: <span class="ruby-comment cmt"># the parent.</span>
1016
+ 123: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@parent</span>)
1017
+ 124: <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">addChild</span>(<span class="ruby-keyword kw">self</span>)
1018
+ 125: <span class="ruby-keyword kw">end</span>
1019
+ 126: <span class="ruby-comment cmt"># This is a list of the PropertyTreeNode objects that have adopted this</span>
1020
+ 127: <span class="ruby-comment cmt"># node.</span>
1021
+ 128: <span class="ruby-ivar">@stepParents</span> = []
1022
+ 129: <span class="ruby-keyword kw">end</span></pre>
982
1023
  </div>
983
1024
 
984
1025
  </div>
@@ -1019,10 +1060,11 @@ the <a href="Scenario.html">Scenario</a>.
1019
1060
  <div class="method-source-code"
1020
1061
  id="--source">
1021
1062
  <pre>
1022
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 452</span>
1023
- 452: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenario</span>)
1024
- 453: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenario</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">get</span>
1025
- 454: <span class="ruby-keyword kw">end</span></pre>
1063
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 456</span>
1064
+ 456: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenario</span>)
1065
+ 457: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenario</span>][<span class="ruby-identifier">attributeId</span>]
1066
+ 458: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">scenario</span>].<span class="ruby-identifier">instance_variable_get</span>((<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">attributeId</span>).<span class="ruby-identifier">intern</span>)
1067
+ 459: <span class="ruby-keyword kw">end</span></pre>
1026
1068
  </div>
1027
1069
 
1028
1070
  </div>
@@ -1058,40 +1100,40 @@ case the attribute does not exist, an exception is raised.
1058
1100
  <div class="method-source-code"
1059
1101
  id="--source">
1060
1102
  <pre>
1061
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 415</span>
1062
- 415: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenario</span>, <span class="ruby-identifier">value</span>)
1063
- 416: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenario</span>
1064
- 417: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1065
- 418: <span class="ruby-comment cmt"># If we get values in 'provided' mode, we copy them immedidately to</span>
1066
- 419: <span class="ruby-comment cmt"># all derived scenarios.</span>
1067
- 420: <span class="ruby-identifier">overwrite</span> = <span class="ruby-keyword kw">false</span>
1068
- 421: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scenario</span>).<span class="ruby-identifier">all</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sc</span><span class="ruby-operator">|</span>
1069
- 422: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
1070
- 423:
1071
- 424: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span>
1072
- 425: <span class="ruby-identifier">overwrite</span> = <span class="ruby-keyword kw">true</span>
1073
- 426: <span class="ruby-keyword kw">end</span>
1103
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 419</span>
1104
+ 419: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenario</span>, <span class="ruby-identifier">value</span>)
1105
+ 420: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenario</span>
1106
+ 421: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1107
+ 422: <span class="ruby-comment cmt"># If we get values in 'provided' mode, we copy them immedidately to</span>
1108
+ 423: <span class="ruby-comment cmt"># all derived scenarios.</span>
1109
+ 424: <span class="ruby-identifier">overwrite</span> = <span class="ruby-keyword kw">false</span>
1110
+ 425: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scenario</span>).<span class="ruby-identifier">all</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sc</span><span class="ruby-operator">|</span>
1111
+ 426: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
1074
1112
  427:
1075
- 428: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">scenario</span>
1076
- 429: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">set</span>(<span class="ruby-identifier">value</span>)
1077
- 430: <span class="ruby-keyword kw">else</span>
1078
- 431: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherit</span>(<span class="ruby-identifier">value</span>)
1079
- 432: <span class="ruby-keyword kw">end</span>
1080
- 433: <span class="ruby-keyword kw">end</span>
1081
- 434: <span class="ruby-comment cmt"># We only raise the overwrite error after all scenarios have been</span>
1082
- 435: <span class="ruby-comment cmt"># set. For some attributes the overwrite is actually allowed.</span>
1083
- 436: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">overwrite</span>
1084
- 437: <span class="ruby-identifier">raise</span> <span class="ruby-constant">AttributeOverwrite</span>,
1085
- 438: <span class="ruby-value str">&quot;Overwriting a previously provided value for attribute &quot;</span> <span class="ruby-operator">+</span>
1086
- 439: <span class="ruby-node">&quot;#{attributeId}&quot;</span>
1087
- 440: <span class="ruby-keyword kw">end</span>
1088
- 441: <span class="ruby-keyword kw">else</span>
1089
- 442: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenario</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">set</span>(<span class="ruby-identifier">value</span>)
1090
- 443: <span class="ruby-keyword kw">end</span>
1091
- 444: <span class="ruby-keyword kw">else</span>
1092
- 445: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">set</span>(<span class="ruby-identifier">value</span>)
1093
- 446: <span class="ruby-keyword kw">end</span>
1094
- 447: <span class="ruby-keyword kw">end</span></pre>
1113
+ 428: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span>
1114
+ 429: <span class="ruby-identifier">overwrite</span> = <span class="ruby-keyword kw">true</span>
1115
+ 430: <span class="ruby-keyword kw">end</span>
1116
+ 431:
1117
+ 432: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">scenario</span>
1118
+ 433: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">set</span>(<span class="ruby-identifier">value</span>)
1119
+ 434: <span class="ruby-keyword kw">else</span>
1120
+ 435: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherit</span>(<span class="ruby-identifier">value</span>)
1121
+ 436: <span class="ruby-keyword kw">end</span>
1122
+ 437: <span class="ruby-keyword kw">end</span>
1123
+ 438: <span class="ruby-comment cmt"># We only raise the overwrite error after all scenarios have been</span>
1124
+ 439: <span class="ruby-comment cmt"># set. For some attributes the overwrite is actually allowed.</span>
1125
+ 440: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">overwrite</span>
1126
+ 441: <span class="ruby-identifier">raise</span> <span class="ruby-constant">AttributeOverwrite</span>,
1127
+ 442: <span class="ruby-value str">&quot;Overwriting a previously provided value for attribute &quot;</span> <span class="ruby-operator">+</span>
1128
+ 443: <span class="ruby-node">&quot;#{attributeId}&quot;</span>
1129
+ 444: <span class="ruby-keyword kw">end</span>
1130
+ 445: <span class="ruby-keyword kw">else</span>
1131
+ 446: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenario</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">set</span>(<span class="ruby-identifier">value</span>)
1132
+ 447: <span class="ruby-keyword kw">end</span>
1133
+ 448: <span class="ruby-keyword kw">else</span>
1134
+ 449: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">set</span>(<span class="ruby-identifier">value</span>)
1135
+ 450: <span class="ruby-keyword kw">end</span>
1136
+ 451: <span class="ruby-keyword kw">end</span></pre>
1095
1137
  </div>
1096
1138
 
1097
1139
  </div>
@@ -1124,13 +1166,13 @@ Add <em>child</em> node as child to this node.
1124
1166
  <div class="method-source-code"
1125
1167
  id="add-hild-source">
1126
1168
  <pre>
1127
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 335</span>
1128
- 335: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addChild</span>(<span class="ruby-identifier">child</span>)
1129
- 336: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">propertySet</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@propertySet</span>
1130
- 337: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Child nodes must belong to the same property set as the parent&quot;</span>
1131
- 338: <span class="ruby-keyword kw">end</span>
1132
- 339: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">child</span>)
1133
- 340: <span class="ruby-keyword kw">end</span></pre>
1169
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 337</span>
1170
+ 337: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addChild</span>(<span class="ruby-identifier">child</span>)
1171
+ 338: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">propertySet</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@propertySet</span>
1172
+ 339: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Child nodes must belong to the same property set as the parent&quot;</span>
1173
+ 340: <span class="ruby-keyword kw">end</span>
1174
+ 341: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">child</span>)
1175
+ 342: <span class="ruby-keyword kw">end</span></pre>
1134
1176
  </div>
1135
1177
 
1136
1178
  </div>
@@ -1164,39 +1206,39 @@ with the child.
1164
1206
  <div class="method-source-code"
1165
1207
  id="adopt-source">
1166
1208
  <pre>
1167
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 138</span>
1168
- 138: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">adopt</span>(<span class="ruby-identifier">property</span>)
1169
- 139: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@adoptees</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">property</span>)
1170
- 140:
1171
- 141: <span class="ruby-comment cmt"># The adopted node and the adopting node must not have any common</span>
1172
- 142: <span class="ruby-comment cmt"># ancestors.</span>
1173
- 143: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">root</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">property</span>.<span class="ruby-identifier">root</span>
1174
- 144: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'adopt_common_root'</span>,
1175
- 145: <span class="ruby-node">&quot;The adoptee #{property.fullId} and the parent #{fullId} &quot;</span> <span class="ruby-operator">+</span>
1176
- 146: <span class="ruby-value str">&quot;may not share common ancestors.&quot;</span>)
1177
- 147: <span class="ruby-keyword kw">end</span>
1178
- 148:
1179
- 149: <span class="ruby-comment cmt"># The adopted trees for this node must not overlap.</span>
1180
- 150: <span class="ruby-ivar">@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>
1181
- 151: <span class="ruby-comment cmt"># Check if the to be adopted node is an ancestor of an already adopted</span>
1182
- 152: <span class="ruby-comment cmt"># node.</span>
1183
- 153: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">adoptee</span>.<span class="ruby-identifier">ancestors</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">property</span>)
1184
- 154: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'adopt_duplicate_child'</span>,
1185
- 155: <span class="ruby-node">&quot;The child #{adoptee.fullId} of #{property.fullId} &quot;</span> <span class="ruby-operator">+</span>
1186
- 156: <span class="ruby-node">&quot;has already been adopted by #{fullId}.&quot;</span>)
1187
- 157: <span class="ruby-keyword kw">end</span>
1188
- 158: <span class="ruby-comment cmt"># Check if the already adopted nodes are an ancestor of the to be</span>
1189
- 159: <span class="ruby-comment cmt"># adopted node.</span>
1190
- 160: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">property</span>.<span class="ruby-identifier">ancestors</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">adoptee</span>)
1191
- 161: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'adopt_duplicate_parent'</span>,
1192
- 162: <span class="ruby-node">&quot;The parent #{adoptee.fullId} of #{property.fullId} &quot;</span> <span class="ruby-operator">+</span>
1193
- 163: <span class="ruby-node">&quot;has already been adopted by #{fullId}.&quot;</span>)
1194
- 164: <span class="ruby-keyword kw">end</span>
1195
- 165: <span class="ruby-keyword kw">end</span>
1196
- 166:
1197
- 167: <span class="ruby-ivar">@adoptees</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">property</span>
1198
- 168: <span class="ruby-identifier">property</span>.<span class="ruby-identifier">getAdopted</span>(<span class="ruby-keyword kw">self</span>)
1199
- 169: <span class="ruby-keyword kw">end</span></pre>
1209
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 140</span>
1210
+ 140: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">adopt</span>(<span class="ruby-identifier">property</span>)
1211
+ 141: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@adoptees</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">property</span>)
1212
+ 142:
1213
+ 143: <span class="ruby-comment cmt"># The adopted node and the adopting node must not have any common</span>
1214
+ 144: <span class="ruby-comment cmt"># ancestors.</span>
1215
+ 145: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">root</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">property</span>.<span class="ruby-identifier">root</span>
1216
+ 146: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'adopt_common_root'</span>,
1217
+ 147: <span class="ruby-node">&quot;The adoptee #{property.fullId} and the parent #{fullId} &quot;</span> <span class="ruby-operator">+</span>
1218
+ 148: <span class="ruby-value str">&quot;may not share common ancestors.&quot;</span>)
1219
+ 149: <span class="ruby-keyword kw">end</span>
1220
+ 150:
1221
+ 151: <span class="ruby-comment cmt"># The adopted trees for this node must not overlap.</span>
1222
+ 152: <span class="ruby-ivar">@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>
1223
+ 153: <span class="ruby-comment cmt"># Check if the to be adopted node is an ancestor of an already adopted</span>
1224
+ 154: <span class="ruby-comment cmt"># node.</span>
1225
+ 155: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">adoptee</span>.<span class="ruby-identifier">ancestors</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">property</span>)
1226
+ 156: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'adopt_duplicate_child'</span>,
1227
+ 157: <span class="ruby-node">&quot;The child #{adoptee.fullId} of #{property.fullId} &quot;</span> <span class="ruby-operator">+</span>
1228
+ 158: <span class="ruby-node">&quot;has already been adopted by #{fullId}.&quot;</span>)
1229
+ 159: <span class="ruby-keyword kw">end</span>
1230
+ 160: <span class="ruby-comment cmt"># Check if the already adopted nodes are an ancestor of the to be</span>
1231
+ 161: <span class="ruby-comment cmt"># adopted node.</span>
1232
+ 162: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">property</span>.<span class="ruby-identifier">ancestors</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">adoptee</span>)
1233
+ 163: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'adopt_duplicate_parent'</span>,
1234
+ 164: <span class="ruby-node">&quot;The parent #{adoptee.fullId} of #{property.fullId} &quot;</span> <span class="ruby-operator">+</span>
1235
+ 165: <span class="ruby-node">&quot;has already been adopted by #{fullId}.&quot;</span>)
1236
+ 166: <span class="ruby-keyword kw">end</span>
1237
+ 167: <span class="ruby-keyword kw">end</span>
1238
+ 168:
1239
+ 169: <span class="ruby-ivar">@adoptees</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">property</span>
1240
+ 170: <span class="ruby-identifier">property</span>.<span class="ruby-identifier">getAdopted</span>(<span class="ruby-keyword kw">self</span>)
1241
+ 171: <span class="ruby-keyword kw">end</span></pre>
1200
1242
  </div>
1201
1243
 
1202
1244
  </div>
@@ -1229,14 +1271,14 @@ Returns a list of this node and all transient sub nodes.
1229
1271
  <div class="method-source-code"
1230
1272
  id="all-source">
1231
1273
  <pre>
1232
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 257</span>
1233
- 257: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">all</span>
1234
- 258: <span class="ruby-identifier">res</span> = [ <span class="ruby-keyword kw">self</span> ]
1235
- 259: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
1236
- 260: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">c</span>.<span class="ruby-identifier">all</span>)
1237
- 261: <span class="ruby-keyword kw">end</span>
1238
- 262: <span class="ruby-identifier">res</span>
1239
- 263: <span class="ruby-keyword kw">end</span></pre>
1274
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 259</span>
1275
+ 259: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">all</span>
1276
+ 260: <span class="ruby-identifier">res</span> = [ <span class="ruby-keyword kw">self</span> ]
1277
+ 261: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
1278
+ 262: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">c</span>.<span class="ruby-identifier">all</span>)
1279
+ 263: <span class="ruby-keyword kw">end</span>
1280
+ 264: <span class="ruby-identifier">res</span>
1281
+ 265: <span class="ruby-keyword kw">end</span></pre>
1240
1282
  </div>
1241
1283
 
1242
1284
  </div>
@@ -1269,18 +1311,18 @@ Return a list of all leaf nodes of this node.
1269
1311
  <div class="method-source-code"
1270
1312
  id="all-eaves-source">
1271
1313
  <pre>
1272
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 266</span>
1273
- 266: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">allLeaves</span>(<span class="ruby-identifier">withoutSelf</span> = <span class="ruby-keyword kw">false</span>)
1274
- 267: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">leaf?</span>
1275
- 268: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">withoutSelf</span> <span class="ruby-operator">?</span> [] <span class="ruby-operator">:</span> [ <span class="ruby-keyword kw">self</span> ]
1276
- 269: <span class="ruby-keyword kw">else</span>
1277
- 270: <span class="ruby-identifier">res</span> = []
1278
- 271: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
1279
- 272: <span class="ruby-identifier">res</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">allLeaves</span>
1280
- 273: <span class="ruby-keyword kw">end</span>
1281
- 274: <span class="ruby-keyword kw">end</span>
1282
- 275: <span class="ruby-identifier">res</span>
1283
- 276: <span class="ruby-keyword kw">end</span></pre>
1314
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 268</span>
1315
+ 268: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">allLeaves</span>(<span class="ruby-identifier">withoutSelf</span> = <span class="ruby-keyword kw">false</span>)
1316
+ 269: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">leaf?</span>
1317
+ 270: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">withoutSelf</span> <span class="ruby-operator">?</span> [] <span class="ruby-operator">:</span> [ <span class="ruby-keyword kw">self</span> ]
1318
+ 271: <span class="ruby-keyword kw">else</span>
1319
+ 272: <span class="ruby-identifier">res</span> = []
1320
+ 273: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
1321
+ 274: <span class="ruby-identifier">res</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">allLeaves</span>
1322
+ 275: <span class="ruby-keyword kw">end</span>
1323
+ 276: <span class="ruby-keyword kw">end</span>
1324
+ 277: <span class="ruby-identifier">res</span>
1325
+ 278: <span class="ruby-keyword kw">end</span></pre>
1284
1326
  </div>
1285
1327
 
1286
1328
  </div>
@@ -1313,15 +1355,15 @@ Return a list with all parent nodes of this node.
1313
1355
  <div class="method-source-code"
1314
1356
  id="ancestors-source">
1315
1357
  <pre>
1316
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 362</span>
1317
- 362: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ancestors</span>
1318
- 363: <span class="ruby-identifier">nodes</span> = []
1319
- 364: <span class="ruby-identifier">n</span> = <span class="ruby-keyword kw">self</span>
1320
- 365: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">parent</span>
1321
- 366: <span class="ruby-identifier">nodes</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">n</span> = <span class="ruby-identifier">n</span>.<span class="ruby-identifier">parent</span>)
1322
- 367: <span class="ruby-keyword kw">end</span>
1323
- 368: <span class="ruby-identifier">nodes</span>
1324
- 369: <span class="ruby-keyword kw">end</span></pre>
1358
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 364</span>
1359
+ 364: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ancestors</span>
1360
+ 365: <span class="ruby-identifier">nodes</span> = []
1361
+ 366: <span class="ruby-identifier">n</span> = <span class="ruby-keyword kw">self</span>
1362
+ 367: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">parent</span>
1363
+ 368: <span class="ruby-identifier">nodes</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">n</span> = <span class="ruby-identifier">n</span>.<span class="ruby-identifier">parent</span>)
1364
+ 369: <span class="ruby-keyword kw">end</span>
1365
+ 370: <span class="ruby-identifier">nodes</span>
1366
+ 371: <span class="ruby-keyword kw">end</span></pre>
1325
1367
  </div>
1326
1368
 
1327
1369
  </div>
@@ -1354,10 +1396,10 @@ Return the type of the attribute with ID <em>attributeId</em>.
1354
1396
  <div class="method-source-code"
1355
1397
  id="attribute-efinition-source">
1356
1398
  <pre>
1357
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 381</span>
1358
- 381: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeDefinition</span>(<span class="ruby-identifier">attributeId</span>)
1359
- 382: <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">attributeDefinitions</span>[<span class="ruby-identifier">attributeId</span>]
1360
- 383: <span class="ruby-keyword kw">end</span></pre>
1399
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 383</span>
1400
+ 383: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeDefinition</span>(<span class="ruby-identifier">attributeId</span>)
1401
+ 384: <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">attributeDefinitions</span>[<span class="ruby-identifier">attributeId</span>]
1402
+ 385: <span class="ruby-keyword kw">end</span></pre>
1361
1403
  </div>
1362
1404
 
1363
1405
  </div>
@@ -1391,10 +1433,10 @@ Array that can be used with restoreAttributes().
1391
1433
  <div class="method-source-code"
1392
1434
  id="backup-ttributes-source">
1393
1435
  <pre>
1394
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 193</span>
1395
- 193: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backupAttributes</span>
1396
- 194: [ <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">clone</span>, <span class="ruby-ivar">@scenarioAttributes</span>.<span class="ruby-identifier">clone</span> ]
1397
- 195: <span class="ruby-keyword kw">end</span></pre>
1436
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 195</span>
1437
+ 195: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backupAttributes</span>
1438
+ 196: [ <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">clone</span>, <span class="ruby-ivar">@scenarioAttributes</span>.<span class="ruby-identifier">clone</span> ]
1439
+ 197: <span class="ruby-keyword kw">end</span></pre>
1398
1440
  </div>
1399
1441
 
1400
1442
  </div>
@@ -1425,51 +1467,51 @@ Array that can be used with restoreAttributes().
1425
1467
  <div class="method-source-code"
1426
1468
  id="check-ails-nd-arnings-source">
1427
1469
  <pre>
1428
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 498</span>
1429
- 498: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkFailsAndWarnings</span>
1430
- 499: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-value str">'fail'</span>) <span class="ruby-operator">||</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-value str">'warn'</span>)
1431
- 500: <span class="ruby-identifier">propertyType</span> = <span class="ruby-keyword kw">case</span> <span class="ruby-keyword kw">self</span>
1432
- 501: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Task</span>
1433
- 502: <span class="ruby-value str">'task'</span>
1434
- 503: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Resource</span>
1435
- 504: <span class="ruby-value str">'resource'</span>
1436
- 505: <span class="ruby-keyword kw">else</span>
1437
- 506: <span class="ruby-value str">'unknown'</span>
1438
- 507: <span class="ruby-keyword kw">end</span>
1439
- 508: <span class="ruby-identifier">queryAttrs</span> = { <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
1440
- 509: <span class="ruby-value str">'property'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">self</span>,
1441
- 510: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
1442
- 511: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>],
1443
- 512: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>],
1444
- 513: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">:days</span>,
1445
- 514: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'numberFormat'</span>],
1446
- 515: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
1447
- 516: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'currencyFormat'</span>] }
1448
- 517: <span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
1449
- 518: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'fail'</span>]
1450
- 519: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'fail'</span>].<span class="ruby-identifier">get</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">expr</span><span class="ruby-operator">|</span>
1451
- 520: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">expr</span>.<span class="ruby-identifier">eval</span>(<span class="ruby-identifier">query</span>)
1452
- 521: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;#{propertyType}_fail_check&quot;</span>,
1453
- 522: <span class="ruby-node">&quot;User defined check failed for #{propertyType} &quot;</span> <span class="ruby-operator">+</span>
1454
- 523: <span class="ruby-node">&quot;#{fullId} \n&quot;</span> <span class="ruby-operator">+</span>
1455
- 524: <span class="ruby-node">&quot;Condition: #{expr.to_s}\n&quot;</span> <span class="ruby-operator">+</span>
1456
- 525: <span class="ruby-node">&quot;Result: #{expr.to_s(query)}&quot;</span>)
1457
- 526: <span class="ruby-keyword kw">end</span>
1458
- 527: <span class="ruby-keyword kw">end</span>
1459
- 528: <span class="ruby-keyword kw">end</span>
1460
- 529: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'warn'</span>]
1461
- 530: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'warn'</span>].<span class="ruby-identifier">get</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">expr</span><span class="ruby-operator">|</span>
1462
- 531: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">expr</span>.<span class="ruby-identifier">eval</span>(<span class="ruby-identifier">query</span>)
1463
- 532: <span class="ruby-identifier">warning</span>(<span class="ruby-node">&quot;#{propertyType}_warn_check&quot;</span>,
1464
- 533: <span class="ruby-node">&quot;User defined warning triggered for #{propertyType} &quot;</span> <span class="ruby-operator">+</span>
1465
- 534: <span class="ruby-node">&quot;#{fullId} \n&quot;</span> <span class="ruby-operator">+</span>
1466
- 535: <span class="ruby-node">&quot;Condition: #{expr.to_s}\n&quot;</span> <span class="ruby-operator">+</span>
1467
- 536: <span class="ruby-node">&quot;Result: #{expr.to_s(query)}&quot;</span>)
1468
- 537: <span class="ruby-keyword kw">end</span>
1469
- 538: <span class="ruby-keyword kw">end</span>
1470
- 539: <span class="ruby-keyword kw">end</span>
1471
- 540: <span class="ruby-keyword kw">end</span>
1472
- 541: <span class="ruby-keyword kw">end</span></pre>
1470
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 503</span>
1471
+ 503: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkFailsAndWarnings</span>
1472
+ 504: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-value str">'fail'</span>) <span class="ruby-operator">||</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-value str">'warn'</span>)
1473
+ 505: <span class="ruby-identifier">propertyType</span> = <span class="ruby-keyword kw">case</span> <span class="ruby-keyword kw">self</span>
1474
+ 506: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Task</span>
1475
+ 507: <span class="ruby-value str">'task'</span>
1476
+ 508: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Resource</span>
1477
+ 509: <span class="ruby-value str">'resource'</span>
1478
+ 510: <span class="ruby-keyword kw">else</span>
1479
+ 511: <span class="ruby-value str">'unknown'</span>
1480
+ 512: <span class="ruby-keyword kw">end</span>
1481
+ 513: <span class="ruby-identifier">queryAttrs</span> = { <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
1482
+ 514: <span class="ruby-value str">'property'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">self</span>,
1483
+ 515: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
1484
+ 516: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>],
1485
+ 517: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>],
1486
+ 518: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">:days</span>,
1487
+ 519: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'numberFormat'</span>],
1488
+ 520: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
1489
+ 521: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'currencyFormat'</span>] }
1490
+ 522: <span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
1491
+ 523: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'fail'</span>]
1492
+ 524: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'fail'</span>].<span class="ruby-identifier">get</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">expr</span><span class="ruby-operator">|</span>
1493
+ 525: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">expr</span>.<span class="ruby-identifier">eval</span>(<span class="ruby-identifier">query</span>)
1494
+ 526: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;#{propertyType}_fail_check&quot;</span>,
1495
+ 527: <span class="ruby-node">&quot;User defined check failed for #{propertyType} &quot;</span> <span class="ruby-operator">+</span>
1496
+ 528: <span class="ruby-node">&quot;#{fullId} \n&quot;</span> <span class="ruby-operator">+</span>
1497
+ 529: <span class="ruby-node">&quot;Condition: #{expr.to_s}\n&quot;</span> <span class="ruby-operator">+</span>
1498
+ 530: <span class="ruby-node">&quot;Result: #{expr.to_s(query)}&quot;</span>)
1499
+ 531: <span class="ruby-keyword kw">end</span>
1500
+ 532: <span class="ruby-keyword kw">end</span>
1501
+ 533: <span class="ruby-keyword kw">end</span>
1502
+ 534: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'warn'</span>]
1503
+ 535: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'warn'</span>].<span class="ruby-identifier">get</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">expr</span><span class="ruby-operator">|</span>
1504
+ 536: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">expr</span>.<span class="ruby-identifier">eval</span>(<span class="ruby-identifier">query</span>)
1505
+ 537: <span class="ruby-identifier">warning</span>(<span class="ruby-node">&quot;#{propertyType}_warn_check&quot;</span>,
1506
+ 538: <span class="ruby-node">&quot;User defined warning triggered for #{propertyType} &quot;</span> <span class="ruby-operator">+</span>
1507
+ 539: <span class="ruby-node">&quot;#{fullId} \n&quot;</span> <span class="ruby-operator">+</span>
1508
+ 540: <span class="ruby-node">&quot;Condition: #{expr.to_s}\n&quot;</span> <span class="ruby-operator">+</span>
1509
+ 541: <span class="ruby-node">&quot;Result: #{expr.to_s(query)}&quot;</span>)
1510
+ 542: <span class="ruby-keyword kw">end</span>
1511
+ 543: <span class="ruby-keyword kw">end</span>
1512
+ 544: <span class="ruby-keyword kw">end</span>
1513
+ 545: <span class="ruby-keyword kw">end</span>
1514
+ 546: <span class="ruby-keyword kw">end</span></pre>
1473
1515
  </div>
1474
1516
 
1475
1517
  </div>
@@ -1502,10 +1544,10 @@ Return true if the node has children.
1502
1544
  <div class="method-source-code"
1503
1545
  id="container--source">
1504
1546
  <pre>
1505
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 357</span>
1506
- 357: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">container?</span>
1507
- 358: <span class="ruby-operator">!</span><span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@adoptees</span>.<span class="ruby-identifier">empty?</span>
1508
- 359: <span class="ruby-keyword kw">end</span></pre>
1547
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 359</span>
1548
+ 359: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">container?</span>
1549
+ 360: <span class="ruby-operator">!</span><span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@adoptees</span>.<span class="ruby-identifier">empty?</span>
1550
+ 361: <span class="ruby-keyword kw">end</span></pre>
1509
1551
  </div>
1510
1552
 
1511
1553
  </div>
@@ -1541,10 +1583,10 @@ these references should remain references.
1541
1583
  <div class="method-source-code"
1542
1584
  id="deep-clone-source">
1543
1585
  <pre>
1544
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 132</span>
1545
- 132: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
1546
- 133: <span class="ruby-keyword kw">self</span>
1547
- 134: <span class="ruby-keyword kw">end</span></pre>
1586
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 134</span>
1587
+ 134: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
1588
+ 135: <span class="ruby-keyword kw">self</span>
1589
+ 136: <span class="ruby-keyword kw">end</span></pre>
1548
1590
  </div>
1549
1591
 
1550
1592
  </div>
@@ -1575,10 +1617,10 @@ these references should remain references.
1575
1617
  <div class="method-source-code"
1576
1618
  id="error-source">
1577
1619
  <pre>
1578
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 643</span>
1579
- 643: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1580
- 644: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sourceFileInfo</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">nil</span>)
1581
- 645: <span class="ruby-keyword kw">end</span></pre>
1620
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 648</span>
1621
+ 648: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1622
+ 649: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-ivar">@sourceFileInfo</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">nil</span>)
1623
+ 650: <span class="ruby-keyword kw">end</span></pre>
1582
1624
  </div>
1583
1625
 
1584
1626
  </div>
@@ -1614,17 +1656,17 @@ node to this node, separating the IDs by a dot.
1614
1656
  <div class="method-source-code"
1615
1657
  id="full-d-source">
1616
1658
  <pre>
1617
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 281</span>
1618
- 281: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fullId</span>
1619
- 282: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@id</span>
1620
- 283: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">flatNamespace</span>
1621
- 284: <span class="ruby-identifier">t</span> = <span class="ruby-keyword kw">self</span>
1622
- 285: <span class="ruby-keyword kw">until</span> (<span class="ruby-identifier">t</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">parent</span>).<span class="ruby-identifier">nil?</span>
1623
- 286: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">id</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;.&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">res</span>
1624
- 287: <span class="ruby-keyword kw">end</span>
1625
- 288: <span class="ruby-keyword kw">end</span>
1626
- 289: <span class="ruby-identifier">res</span>
1627
- 290: <span class="ruby-keyword kw">end</span></pre>
1659
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 283</span>
1660
+ 283: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fullId</span>
1661
+ 284: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@subId</span>
1662
+ 285: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">flatNamespace</span>
1663
+ 286: <span class="ruby-identifier">t</span> = <span class="ruby-keyword kw">self</span>
1664
+ 287: <span class="ruby-keyword kw">until</span> (<span class="ruby-identifier">t</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">parent</span>).<span class="ruby-identifier">nil?</span>
1665
+ 288: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">subId</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;.&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">res</span>
1666
+ 289: <span class="ruby-keyword kw">end</span>
1667
+ 290: <span class="ruby-keyword kw">end</span>
1668
+ 291: <span class="ruby-identifier">res</span>
1669
+ 292: <span class="ruby-keyword kw">end</span></pre>
1628
1670
  </div>
1629
1671
 
1630
1672
  </div>
@@ -1659,10 +1701,12 @@ case the attribute does not exist, an exception is raised.
1659
1701
  <div class="method-source-code"
1660
1702
  id="get-source">
1661
1703
  <pre>
1662
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 388</span>
1663
- 388: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get</span>(<span class="ruby-identifier">attributeId</span>)
1664
- 389: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">get</span>
1665
- 390: <span class="ruby-keyword kw">end</span></pre>
1704
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 390</span>
1705
+ 390: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get</span>(<span class="ruby-identifier">attributeId</span>)
1706
+ 391: <span class="ruby-comment cmt"># Make sure the attribute gets created if it doesn't exist already.</span>
1707
+ 392: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>]
1708
+ 393: <span class="ruby-identifier">instance_variable_get</span>((<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">attributeId</span>).<span class="ruby-identifier">intern</span>)
1709
+ 394: <span class="ruby-keyword kw">end</span></pre>
1666
1710
  </div>
1667
1711
 
1668
1712
  </div>
@@ -1699,14 +1743,14 @@ exception is raised.
1699
1743
  <div class="method-source-code"
1700
1744
  id="get-ttribute-source">
1701
1745
  <pre>
1702
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 397</span>
1703
- 397: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getAttribute</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
1704
- 398: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span>
1705
- 399: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>]
1706
- 400: <span class="ruby-keyword kw">else</span>
1707
- 401: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>]
1708
- 402: <span class="ruby-keyword kw">end</span>
1709
- 403: <span class="ruby-keyword kw">end</span></pre>
1746
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 401</span>
1747
+ 401: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getAttribute</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
1748
+ 402: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span>
1749
+ 403: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>]
1750
+ 404: <span class="ruby-keyword kw">else</span>
1751
+ 405: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>]
1752
+ 406: <span class="ruby-keyword kw">end</span>
1753
+ 407: <span class="ruby-keyword kw">end</span></pre>
1710
1754
  </div>
1711
1755
 
1712
1756
  </div>
@@ -1741,18 +1785,18 @@ with an index for each level from the root to this node.
1741
1785
  <div class="method-source-code"
1742
1786
  id="get-ndicies-source">
1743
1787
  <pre>
1744
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 309</span>
1745
- 309: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getBSIndicies</span>
1746
- 310: <span class="ruby-identifier">idcs</span> = []
1747
- 311: <span class="ruby-identifier">p</span> = <span class="ruby-keyword kw">self</span>
1748
- 312: <span class="ruby-keyword kw">begin</span>
1749
- 313: <span class="ruby-identifier">parent</span> = <span class="ruby-identifier">p</span>.<span class="ruby-identifier">parent</span>
1750
- 314: <span class="ruby-identifier">idcs</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">parent</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">levelSeqNo</span>(<span class="ruby-identifier">p</span>) <span class="ruby-operator">:</span>
1751
- 315: <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">levelSeqNo</span>(<span class="ruby-identifier">p</span>))
1752
- 316: <span class="ruby-identifier">p</span> = <span class="ruby-identifier">parent</span>
1753
- 317: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">p</span>
1754
- 318: <span class="ruby-identifier">idcs</span>
1755
- 319: <span class="ruby-keyword kw">end</span></pre>
1788
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 311</span>
1789
+ 311: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getBSIndicies</span>
1790
+ 312: <span class="ruby-identifier">idcs</span> = []
1791
+ 313: <span class="ruby-identifier">p</span> = <span class="ruby-keyword kw">self</span>
1792
+ 314: <span class="ruby-keyword kw">begin</span>
1793
+ 315: <span class="ruby-identifier">parent</span> = <span class="ruby-identifier">p</span>.<span class="ruby-identifier">parent</span>
1794
+ 316: <span class="ruby-identifier">idcs</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">parent</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">levelSeqNo</span>(<span class="ruby-identifier">p</span>) <span class="ruby-operator">:</span>
1795
+ 317: <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">levelSeqNo</span>(<span class="ruby-identifier">p</span>))
1796
+ 318: <span class="ruby-identifier">p</span> = <span class="ruby-identifier">parent</span>
1797
+ 319: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">p</span>
1798
+ 320: <span class="ruby-identifier">idcs</span>
1799
+ 321: <span class="ruby-keyword kw">end</span></pre>
1756
1800
  </div>
1757
1801
 
1758
1802
  </div>
@@ -1787,17 +1831,17 @@ of Fixnums.
1787
1831
  <div class="method-source-code"
1788
1832
  id="get-ndicies-source">
1789
1833
  <pre>
1790
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 323</span>
1791
- 323: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getIndicies</span>
1792
- 324: <span class="ruby-identifier">idcs</span> = []
1793
- 325: <span class="ruby-identifier">p</span> = <span class="ruby-keyword kw">self</span>
1794
- 326: <span class="ruby-keyword kw">begin</span>
1795
- 327: <span class="ruby-identifier">parent</span> = <span class="ruby-identifier">p</span>.<span class="ruby-identifier">parent</span>
1796
- 328: <span class="ruby-identifier">idcs</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">p</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'index'</span>))
1797
- 329: <span class="ruby-identifier">p</span> = <span class="ruby-identifier">parent</span>
1798
- 330: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">p</span>
1799
- 331: <span class="ruby-identifier">idcs</span>
1800
- 332: <span class="ruby-keyword kw">end</span></pre>
1834
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 325</span>
1835
+ 325: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getIndicies</span>
1836
+ 326: <span class="ruby-identifier">idcs</span> = []
1837
+ 327: <span class="ruby-identifier">p</span> = <span class="ruby-keyword kw">self</span>
1838
+ 328: <span class="ruby-keyword kw">begin</span>
1839
+ 329: <span class="ruby-identifier">parent</span> = <span class="ruby-identifier">p</span>.<span class="ruby-identifier">parent</span>
1840
+ 330: <span class="ruby-identifier">idcs</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">p</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'index'</span>))
1841
+ 331: <span class="ruby-identifier">p</span> = <span class="ruby-identifier">parent</span>
1842
+ 332: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">p</span>
1843
+ 333: <span class="ruby-identifier">idcs</span>
1844
+ 334: <span class="ruby-keyword kw">end</span></pre>
1801
1845
  </div>
1802
1846
 
1803
1847
  </div>
@@ -1828,10 +1872,10 @@ of Fixnums.
1828
1872
  <div class="method-source-code"
1829
1873
  id="info-source">
1830
1874
  <pre>
1831
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 651</span>
1832
- 651: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">info</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1833
- 652: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">info</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sourceFileInfo</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">nil</span>)
1834
- 653: <span class="ruby-keyword kw">end</span></pre>
1875
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 656</span>
1876
+ 656: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">info</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1877
+ 657: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">info</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-ivar">@sourceFileInfo</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">nil</span>)
1878
+ 658: <span class="ruby-keyword kw">end</span></pre>
1835
1879
  </div>
1836
1880
 
1837
1881
  </div>
@@ -1865,53 +1909,53 @@ href="Project.html">Project</a>.
1865
1909
  <div class="method-source-code"
1866
1910
  id="inherit-ttributes-source">
1867
1911
  <pre>
1868
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 209</span>
1869
- 209: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inheritAttributes</span>
1870
- 210: <span class="ruby-comment cmt"># Inherit non-scenario-specific values</span>
1871
- 211: <span class="ruby-ivar">@propertySet</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>
1872
- 212: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">scenarioSpecific</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">inheritedFromParent</span>
1873
- 213:
1874
- 214: <span class="ruby-identifier">aId</span> = <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>
1875
- 215: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span>
1876
- 216: <span class="ruby-comment cmt"># Inherit values from parent property</span>
1877
- 217: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">provided</span>(<span class="ruby-identifier">aId</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">inherited</span>(<span class="ruby-identifier">aId</span>)
1878
- 218: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">aId</span>].<span class="ruby-identifier">inherit</span>(<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">aId</span>))
1879
- 219: <span class="ruby-keyword kw">end</span>
1880
- 220: <span class="ruby-keyword kw">else</span>
1881
- 221: <span class="ruby-comment cmt"># Inherit selected values from project if top-level property</span>
1882
- 222: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">inheritedFromProject</span>
1883
- 223: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@project</span>[<span class="ruby-identifier">aId</span>]
1884
- 224: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">aId</span>].<span class="ruby-identifier">inherit</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-identifier">aId</span>])
1885
- 225: <span class="ruby-keyword kw">end</span>
1886
- 226: <span class="ruby-keyword kw">end</span>
1887
- 227: <span class="ruby-keyword kw">end</span>
1888
- 228: <span class="ruby-keyword kw">end</span>
1889
- 229:
1890
- 230: <span class="ruby-comment cmt"># Inherit scenario-specific values</span>
1891
- 231: <span class="ruby-ivar">@propertySet</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>
1892
- 232: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">scenarioSpecific</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">inheritedFromParent</span>
1893
- 233:
1894
- 234: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioCount</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
1895
- 235: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span>
1896
- 236: <span class="ruby-comment cmt"># Inherit scenario specific values from parent property</span>
1897
- 237: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">provided</span>(<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">scenarioIdx</span>) <span class="ruby-operator">||</span>
1898
- 238: <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">inherited</span>(<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">scenarioIdx</span>)
1899
- 239: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>].<span class="ruby-identifier">inherit</span>(
1900
- 240: <span class="ruby-identifier">parent</span>[<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">scenarioIdx</span>])
1901
- 241: <span class="ruby-keyword kw">end</span>
1902
- 242: <span class="ruby-keyword kw">else</span>
1903
- 243: <span class="ruby-comment cmt"># Inherit selected values from project if top-level property</span>
1904
- 244: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">inheritedFromProject</span>
1905
- 245: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@project</span>[<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>] <span class="ruby-operator">&amp;&amp;</span>
1906
- 246: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>]
1907
- 247: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>].<span class="ruby-identifier">inherit</span>(
1908
- 248: <span class="ruby-ivar">@project</span>[<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>])
1909
- 249: <span class="ruby-keyword kw">end</span>
1910
- 250: <span class="ruby-keyword kw">end</span>
1911
- 251: <span class="ruby-keyword kw">end</span>
1912
- 252: <span class="ruby-keyword kw">end</span>
1913
- 253: <span class="ruby-keyword kw">end</span>
1914
- 254: <span class="ruby-keyword kw">end</span></pre>
1912
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 211</span>
1913
+ 211: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inheritAttributes</span>
1914
+ 212: <span class="ruby-comment cmt"># Inherit non-scenario-specific values</span>
1915
+ 213: <span class="ruby-ivar">@propertySet</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>
1916
+ 214: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">scenarioSpecific</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">inheritedFromParent</span>
1917
+ 215:
1918
+ 216: <span class="ruby-identifier">aId</span> = <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>
1919
+ 217: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span>
1920
+ 218: <span class="ruby-comment cmt"># Inherit values from parent property</span>
1921
+ 219: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">provided</span>(<span class="ruby-identifier">aId</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">inherited</span>(<span class="ruby-identifier">aId</span>)
1922
+ 220: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">aId</span>].<span class="ruby-identifier">inherit</span>(<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">aId</span>))
1923
+ 221: <span class="ruby-keyword kw">end</span>
1924
+ 222: <span class="ruby-keyword kw">else</span>
1925
+ 223: <span class="ruby-comment cmt"># Inherit selected values from project if top-level property</span>
1926
+ 224: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">inheritedFromProject</span>
1927
+ 225: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@project</span>[<span class="ruby-identifier">aId</span>]
1928
+ 226: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">aId</span>].<span class="ruby-identifier">inherit</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-identifier">aId</span>])
1929
+ 227: <span class="ruby-keyword kw">end</span>
1930
+ 228: <span class="ruby-keyword kw">end</span>
1931
+ 229: <span class="ruby-keyword kw">end</span>
1932
+ 230: <span class="ruby-keyword kw">end</span>
1933
+ 231:
1934
+ 232: <span class="ruby-comment cmt"># Inherit scenario-specific values</span>
1935
+ 233: <span class="ruby-ivar">@propertySet</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>
1936
+ 234: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">scenarioSpecific</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">inheritedFromParent</span>
1937
+ 235:
1938
+ 236: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioCount</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scenarioIdx</span><span class="ruby-operator">|</span>
1939
+ 237: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span>
1940
+ 238: <span class="ruby-comment cmt"># Inherit scenario specific values from parent property</span>
1941
+ 239: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">provided</span>(<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">scenarioIdx</span>) <span class="ruby-operator">||</span>
1942
+ 240: <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">inherited</span>(<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">scenarioIdx</span>)
1943
+ 241: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>].<span class="ruby-identifier">inherit</span>(
1944
+ 242: <span class="ruby-identifier">parent</span>[<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">scenarioIdx</span>])
1945
+ 243: <span class="ruby-keyword kw">end</span>
1946
+ 244: <span class="ruby-keyword kw">else</span>
1947
+ 245: <span class="ruby-comment cmt"># Inherit selected values from project if top-level property</span>
1948
+ 246: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">inheritedFromProject</span>
1949
+ 247: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@project</span>[<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>] <span class="ruby-operator">&amp;&amp;</span>
1950
+ 248: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>]
1951
+ 249: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>].<span class="ruby-identifier">inherit</span>(
1952
+ 250: <span class="ruby-ivar">@project</span>[<span class="ruby-identifier">attrDef</span>.<span class="ruby-identifier">id</span>])
1953
+ 251: <span class="ruby-keyword kw">end</span>
1954
+ 252: <span class="ruby-keyword kw">end</span>
1955
+ 253: <span class="ruby-keyword kw">end</span>
1956
+ 254: <span class="ruby-keyword kw">end</span>
1957
+ 255: <span class="ruby-keyword kw">end</span>
1958
+ 256: <span class="ruby-keyword kw">end</span></pre>
1915
1959
  </div>
1916
1960
 
1917
1961
  </div>
@@ -1946,18 +1990,18 @@ scenario.
1946
1990
  <div class="method-source-code"
1947
1991
  id="inherited-source">
1948
1992
  <pre>
1949
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 472</span>
1950
- 472: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inherited</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
1951
- 473: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span>
1952
- 474: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
1953
- 475: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1954
- 476: <span class="ruby-keyword kw">end</span>
1955
- 477: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherited</span>
1956
- 478: <span class="ruby-keyword kw">else</span>
1957
- 479: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
1958
- 480: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherited</span>
1959
- 481: <span class="ruby-keyword kw">end</span>
1960
- 482: <span class="ruby-keyword kw">end</span></pre>
1993
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 477</span>
1994
+ 477: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inherited</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
1995
+ 478: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span>
1996
+ 479: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
1997
+ 480: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1998
+ 481: <span class="ruby-keyword kw">end</span>
1999
+ 482: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherited</span>
2000
+ 483: <span class="ruby-keyword kw">else</span>
2001
+ 484: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
2002
+ 485: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherited</span>
2003
+ 486: <span class="ruby-keyword kw">end</span>
2004
+ 487: <span class="ruby-keyword kw">end</span></pre>
1961
2005
  </div>
1962
2006
 
1963
2007
  </div>
@@ -1991,14 +2035,14 @@ Find out if this property is a direct or indirect child of
1991
2035
  <div class="method-source-code"
1992
2036
  id="is-hild-f--source">
1993
2037
  <pre>
1994
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 343</span>
1995
- 343: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isChildOf?</span>(<span class="ruby-identifier">ancestor</span>)
1996
- 344: <span class="ruby-identifier">parent</span> = <span class="ruby-keyword kw">self</span>
1997
- 345: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">parent</span> = <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">parent</span>
1998
- 346: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">parent</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">ancestor</span>)
1999
- 347: <span class="ruby-keyword kw">end</span>
2000
- 348: <span class="ruby-keyword kw">false</span>
2001
- 349: <span class="ruby-keyword kw">end</span></pre>
2038
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 345</span>
2039
+ 345: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isChildOf?</span>(<span class="ruby-identifier">ancestor</span>)
2040
+ 346: <span class="ruby-identifier">parent</span> = <span class="ruby-keyword kw">self</span>
2041
+ 347: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">parent</span> = <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">parent</span>
2042
+ 348: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">parent</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">ancestor</span>)
2043
+ 349: <span class="ruby-keyword kw">end</span>
2044
+ 350: <span class="ruby-keyword kw">false</span>
2045
+ 351: <span class="ruby-keyword kw">end</span></pre>
2002
2046
  </div>
2003
2047
 
2004
2048
  </div>
@@ -2031,10 +2075,10 @@ Return a list of all children including adopted kids.
2031
2075
  <div class="method-source-code"
2032
2076
  id="kids-source">
2033
2077
  <pre>
2034
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 182</span>
2035
- 182: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">kids</span>
2036
- 183: <span class="ruby-ivar">@children</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@adoptees</span>
2037
- 184: <span class="ruby-keyword kw">end</span></pre>
2078
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 184</span>
2079
+ 184: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">kids</span>
2080
+ 185: <span class="ruby-ivar">@children</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@adoptees</span>
2081
+ 186: <span class="ruby-keyword kw">end</span></pre>
2038
2082
  </div>
2039
2083
 
2040
2084
  </div>
@@ -2067,10 +2111,10 @@ Return true if the node is a leaf node (has no children).
2067
2111
  <div class="method-source-code"
2068
2112
  id="leaf--source">
2069
2113
  <pre>
2070
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 352</span>
2071
- 352: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">leaf?</span>
2072
- 353: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@adoptees</span>.<span class="ruby-identifier">empty?</span>
2073
- 354: <span class="ruby-keyword kw">end</span></pre>
2114
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 354</span>
2115
+ 354: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">leaf?</span>
2116
+ 355: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@adoptees</span>.<span class="ruby-identifier">empty?</span>
2117
+ 356: <span class="ruby-keyword kw">end</span></pre>
2074
2118
  </div>
2075
2119
 
2076
2120
  </div>
@@ -2105,17 +2149,17 @@ have to be calculated each time the function is called.
2105
2149
  <div class="method-source-code"
2106
2150
  id="level-source">
2107
2151
  <pre>
2108
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 295</span>
2109
- 295: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">level</span>
2110
- 296: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@level</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@level</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>
2111
- 297:
2112
- 298: <span class="ruby-identifier">t</span> = <span class="ruby-keyword kw">self</span>
2113
- 299: <span class="ruby-ivar">@level</span> = <span class="ruby-value">0</span>
2114
- 300: <span class="ruby-keyword kw">until</span> (<span class="ruby-identifier">t</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">parent</span>).<span class="ruby-identifier">nil?</span>
2115
- 301: <span class="ruby-ivar">@level</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2116
- 302: <span class="ruby-keyword kw">end</span>
2117
- 303: <span class="ruby-ivar">@level</span>
2118
- 304: <span class="ruby-keyword kw">end</span></pre>
2152
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 297</span>
2153
+ 297: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">level</span>
2154
+ 298: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@level</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@level</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>
2155
+ 299:
2156
+ 300: <span class="ruby-identifier">t</span> = <span class="ruby-keyword kw">self</span>
2157
+ 301: <span class="ruby-ivar">@level</span> = <span class="ruby-value">0</span>
2158
+ 302: <span class="ruby-keyword kw">until</span> (<span class="ruby-identifier">t</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">parent</span>).<span class="ruby-identifier">nil?</span>
2159
+ 303: <span class="ruby-ivar">@level</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2160
+ 304: <span class="ruby-keyword kw">end</span>
2161
+ 305: <span class="ruby-ivar">@level</span>
2162
+ 306: <span class="ruby-keyword kw">end</span></pre>
2119
2163
  </div>
2120
2164
 
2121
2165
  </div>
@@ -2148,10 +2192,10 @@ Return the index of the child <em>node</em>.
2148
2192
  <div class="method-source-code"
2149
2193
  id="level-eq-o-source">
2150
2194
  <pre>
2151
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 204</span>
2152
- 204: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">levelSeqNo</span>(<span class="ruby-identifier">node</span>)
2153
- 205: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">node</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
2154
- 206: <span class="ruby-keyword kw">end</span></pre>
2195
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 206</span>
2196
+ 206: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">levelSeqNo</span>(<span class="ruby-identifier">node</span>)
2197
+ 207: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">node</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
2198
+ 208: <span class="ruby-keyword kw">end</span></pre>
2155
2199
  </div>
2156
2200
 
2157
2201
  </div>
@@ -2188,10 +2232,10 @@ href="Scenario.html">Scenario</a> class.
2188
2232
  <div class="method-source-code"
2189
2233
  id="method-missing-source">
2190
2234
  <pre>
2191
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 639</span>
2192
- 639: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">func</span>, <span class="ruby-identifier">scenarioIdx</span>, *<span class="ruby-identifier">args</span>)
2193
- 640: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">method</span>(<span class="ruby-identifier">func</span>).<span class="ruby-identifier">call</span>(*<span class="ruby-identifier">args</span>)
2194
- 641: <span class="ruby-keyword kw">end</span></pre>
2235
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 644</span>
2236
+ 644: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">func</span>, <span class="ruby-identifier">scenarioIdx</span>, *<span class="ruby-identifier">args</span>)
2237
+ 645: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">method</span>(<span class="ruby-identifier">func</span>).<span class="ruby-identifier">call</span>(*<span class="ruby-identifier">args</span>)
2238
+ 646: <span class="ruby-keyword kw">end</span></pre>
2195
2239
  </div>
2196
2240
 
2197
2241
  </div>
@@ -2222,20 +2266,20 @@ href="Scenario.html">Scenario</a> class.
2222
2266
  <div class="method-source-code"
2223
2267
  id="modified--source">
2224
2268
  <pre>
2225
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 484</span>
2226
- 484: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">modified?</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
2227
- 485: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span>
2228
- 486: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
2229
- 487: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2230
- 488: <span class="ruby-keyword kw">end</span>
2231
- 489:
2232
- 490: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span> <span class="ruby-operator">||</span>
2233
- 491: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherited</span>
2234
- 492: <span class="ruby-keyword kw">else</span>
2235
- 493: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
2236
- 494: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherited</span>
2237
- 495: <span class="ruby-keyword kw">end</span>
2238
- 496: <span class="ruby-keyword kw">end</span></pre>
2269
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 489</span>
2270
+ 489: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">modified?</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
2271
+ 490: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span>
2272
+ 491: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
2273
+ 492: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2274
+ 493: <span class="ruby-keyword kw">end</span>
2275
+ 494:
2276
+ 495: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span> <span class="ruby-operator">||</span>
2277
+ 496: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherited</span>
2278
+ 497: <span class="ruby-keyword kw">else</span>
2279
+ 498: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
2280
+ 499: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">inherited</span>
2281
+ 500: <span class="ruby-keyword kw">end</span>
2282
+ 501: <span class="ruby-keyword kw">end</span></pre>
2239
2283
  </div>
2240
2284
 
2241
2285
  </div>
@@ -2268,10 +2312,10 @@ Return a list of all parents including step parents.
2268
2312
  <div class="method-source-code"
2269
2313
  id="parents-source">
2270
2314
  <pre>
2271
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 187</span>
2272
- 187: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parents</span>
2273
- 188: (<span class="ruby-ivar">@parent</span> <span class="ruby-operator">?</span> [ <span class="ruby-ivar">@parent</span> ] <span class="ruby-operator">:</span> []) <span class="ruby-operator">+</span> <span class="ruby-ivar">@stepParents</span>
2274
- 189: <span class="ruby-keyword kw">end</span></pre>
2315
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 189</span>
2316
+ 189: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parents</span>
2317
+ 190: (<span class="ruby-ivar">@parent</span> <span class="ruby-operator">?</span> [ <span class="ruby-ivar">@parent</span> ] <span class="ruby-operator">:</span> []) <span class="ruby-operator">+</span> <span class="ruby-ivar">@stepParents</span>
2318
+ 191: <span class="ruby-keyword kw">end</span></pre>
2275
2319
  </div>
2276
2320
 
2277
2321
  </div>
@@ -2305,18 +2349,18 @@ scenario <em>scenarioIdx</em>) has been provided by the user.
2305
2349
  <div class="method-source-code"
2306
2350
  id="provided-source">
2307
2351
  <pre>
2308
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 458</span>
2309
- 458: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">provided</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
2310
- 459: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span>
2311
- 460: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
2312
- 461: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2313
- 462: <span class="ruby-keyword kw">end</span>
2314
- 463: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span>
2315
- 464: <span class="ruby-keyword kw">else</span>
2316
- 465: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
2317
- 466: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span>
2318
- 467: <span class="ruby-keyword kw">end</span>
2319
- 468: <span class="ruby-keyword kw">end</span></pre>
2352
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 463</span>
2353
+ 463: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">provided</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-keyword kw">nil</span>)
2354
+ 464: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scenarioIdx</span>
2355
+ 465: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
2356
+ 466: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2357
+ 467: <span class="ruby-keyword kw">end</span>
2358
+ 468: <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">scenarioIdx</span>][<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span>
2359
+ 469: <span class="ruby-keyword kw">else</span>
2360
+ 470: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">attributeId</span>)
2361
+ 471: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">provided</span>
2362
+ 472: <span class="ruby-keyword kw">end</span>
2363
+ 473: <span class="ruby-keyword kw">end</span></pre>
2320
2364
  </div>
2321
2365
 
2322
2366
  </div>
@@ -2347,23 +2391,23 @@ scenario <em>scenarioIdx</em>) has been provided by the user.
2347
2391
  <div class="method-source-code"
2348
2392
  id="query-alert-source">
2349
2393
  <pre>
2350
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 543</span>
2351
- 543: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_alert</span>(<span class="ruby-identifier">query</span>)
2352
- 544: <span class="ruby-identifier">journal</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>]
2353
- 545: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">alert</span> =
2354
- 546: <span class="ruby-identifier">journal</span>.<span class="ruby-identifier">alertLevel</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>)
2355
- 547: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">colorName</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">alert</span>)
2356
- 548: <span class="ruby-identifier">rText</span> = <span class="ruby-node">&quot;&lt;fcol:#{colorName.downcase}&gt;#{colorName}&lt;/fcol&gt;&quot;</span>
2357
- 549: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">rti</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rText</span>, <span class="ruby-constant">RTFHandlers</span>.<span class="ruby-identifier">create</span>(<span class="ruby-ivar">@project</span>),
2358
- 550: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>).
2359
- 551: <span class="ruby-identifier">generateIntermediateFormat</span>)
2360
- 552: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ptn_journal'</span>,
2361
- 553: <span class="ruby-value str">&quot;Syntax error in journal message&quot;</span>)
2362
- 554: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2363
- 555: <span class="ruby-keyword kw">end</span>
2364
- 556: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">blockMode</span> = <span class="ruby-keyword kw">false</span>
2365
- 557: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rti</span>
2366
- 558: <span class="ruby-keyword kw">end</span></pre>
2394
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 548</span>
2395
+ 548: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_alert</span>(<span class="ruby-identifier">query</span>)
2396
+ 549: <span class="ruby-identifier">journal</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>]
2397
+ 550: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">alert</span> =
2398
+ 551: <span class="ruby-identifier">journal</span>.<span class="ruby-identifier">alertLevel</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>)
2399
+ 552: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">colorName</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">alert</span>)
2400
+ 553: <span class="ruby-identifier">rText</span> = <span class="ruby-node">&quot;&lt;fcol:#{colorName.downcase}&gt;#{colorName}&lt;/fcol&gt;&quot;</span>
2401
+ 554: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">rti</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rText</span>, <span class="ruby-constant">RTFHandlers</span>.<span class="ruby-identifier">create</span>(<span class="ruby-ivar">@project</span>),
2402
+ 555: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>).
2403
+ 556: <span class="ruby-identifier">generateIntermediateFormat</span>)
2404
+ 557: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ptn_journal'</span>,
2405
+ 558: <span class="ruby-value str">&quot;Syntax error in journal message&quot;</span>)
2406
+ 559: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2407
+ 560: <span class="ruby-keyword kw">end</span>
2408
+ 561: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">blockMode</span> = <span class="ruby-keyword kw">false</span>
2409
+ 562: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rti</span>
2410
+ 563: <span class="ruby-keyword kw">end</span></pre>
2367
2411
  </div>
2368
2412
 
2369
2413
  </div>
@@ -2394,13 +2438,13 @@ scenario <em>scenarioIdx</em>) has been provided by the user.
2394
2438
  <div class="method-source-code"
2395
2439
  id="query-alertmessages-source">
2396
2440
  <pre>
2397
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 560</span>
2398
- 560: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_alertmessages</span>(<span class="ruby-identifier">query</span>)
2399
- 561: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">alertEntries</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-value">1</span>,
2400
- 562: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2401
- 563: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>),
2402
- 564: <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">true</span>)
2403
- 565: <span class="ruby-keyword kw">end</span></pre>
2441
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 565</span>
2442
+ 565: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_alertmessages</span>(<span class="ruby-identifier">query</span>)
2443
+ 566: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">alertEntries</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-value">1</span>,
2444
+ 567: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2445
+ 568: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>),
2446
+ 569: <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">true</span>)
2447
+ 570: <span class="ruby-keyword kw">end</span></pre>
2404
2448
  </div>
2405
2449
 
2406
2450
  </div>
@@ -2431,13 +2475,13 @@ scenario <em>scenarioIdx</em>) has been provided by the user.
2431
2475
  <div class="method-source-code"
2432
2476
  id="query-alertsummaries-source">
2433
2477
  <pre>
2434
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 567</span>
2435
- 567: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_alertsummaries</span>(<span class="ruby-identifier">query</span>)
2436
- 568: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">alertEntries</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-value">1</span>,
2437
- 569: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2438
- 570: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>),
2439
- 571: <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">false</span>)
2440
- 572: <span class="ruby-keyword kw">end</span></pre>
2478
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 572</span>
2479
+ 572: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_alertsummaries</span>(<span class="ruby-identifier">query</span>)
2480
+ 573: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">alertEntries</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-value">1</span>,
2481
+ 574: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2482
+ 575: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>),
2483
+ 576: <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">false</span>)
2484
+ 577: <span class="ruby-keyword kw">end</span></pre>
2441
2485
  </div>
2442
2486
 
2443
2487
  </div>
@@ -2468,22 +2512,22 @@ scenario <em>scenarioIdx</em>) has been provided by the user.
2468
2512
  <div class="method-source-code"
2469
2513
  id="query-alerttrend-source">
2470
2514
  <pre>
2471
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 588</span>
2472
- 588: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_alerttrend</span>(<span class="ruby-identifier">query</span>)
2473
- 589: <span class="ruby-identifier">journal</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>]
2474
- 590: <span class="ruby-identifier">startAlert</span> = <span class="ruby-identifier">journal</span>.<span class="ruby-identifier">alertLevel</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>)
2475
- 591: <span class="ruby-identifier">endAlert</span> = <span class="ruby-identifier">journal</span>.<span class="ruby-identifier">alertLevel</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>)
2476
- 592: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startAlert</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">endAlert</span>
2477
- 593: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-value">0</span>
2478
- 594: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'Up'</span>
2479
- 595: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">startAlert</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">endAlert</span>
2480
- 596: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-value">2</span>
2481
- 597: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'Down'</span>
2482
- 598: <span class="ruby-keyword kw">else</span>
2483
- 599: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-value">1</span>
2484
- 600: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'Flat'</span>
2485
- 601: <span class="ruby-keyword kw">end</span>
2486
- 602: <span class="ruby-keyword kw">end</span></pre>
2515
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 593</span>
2516
+ 593: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_alerttrend</span>(<span class="ruby-identifier">query</span>)
2517
+ 594: <span class="ruby-identifier">journal</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>]
2518
+ 595: <span class="ruby-identifier">startAlert</span> = <span class="ruby-identifier">journal</span>.<span class="ruby-identifier">alertLevel</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>)
2519
+ 596: <span class="ruby-identifier">endAlert</span> = <span class="ruby-identifier">journal</span>.<span class="ruby-identifier">alertLevel</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>)
2520
+ 597: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startAlert</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">endAlert</span>
2521
+ 598: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-value">0</span>
2522
+ 599: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'Up'</span>
2523
+ 600: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">startAlert</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">endAlert</span>
2524
+ 601: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-value">2</span>
2525
+ 602: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'Down'</span>
2526
+ 603: <span class="ruby-keyword kw">else</span>
2527
+ 604: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-value">1</span>
2528
+ 605: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'Flat'</span>
2529
+ 606: <span class="ruby-keyword kw">end</span>
2530
+ 607: <span class="ruby-keyword kw">end</span></pre>
2487
2531
  </div>
2488
2532
 
2489
2533
  </div>
@@ -2514,13 +2558,13 @@ scenario <em>scenarioIdx</em>) has been provided by the user.
2514
2558
  <div class="method-source-code"
2515
2559
  id="query-journalmessages-source">
2516
2560
  <pre>
2517
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 574</span>
2518
- 574: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_journalmessages</span>(<span class="ruby-identifier">query</span>)
2519
- 575: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">currentEntries</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-value">0</span>,
2520
- 576: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2521
- 577: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>),
2522
- 578: <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">true</span>)
2523
- 579: <span class="ruby-keyword kw">end</span></pre>
2561
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 579</span>
2562
+ 579: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_journalmessages</span>(<span class="ruby-identifier">query</span>)
2563
+ 580: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">currentEntries</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-value">0</span>,
2564
+ 581: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2565
+ 582: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>),
2566
+ 583: <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">true</span>)
2567
+ 584: <span class="ruby-keyword kw">end</span></pre>
2524
2568
  </div>
2525
2569
 
2526
2570
  </div>
@@ -2551,13 +2595,13 @@ scenario <em>scenarioIdx</em>) has been provided by the user.
2551
2595
  <div class="method-source-code"
2552
2596
  id="query-journalsummaries-source">
2553
2597
  <pre>
2554
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 581</span>
2555
- 581: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_journalsummaries</span>(<span class="ruby-identifier">query</span>)
2556
- 582: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">currentEntries</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-value">0</span>,
2557
- 583: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2558
- 584: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>),
2559
- 585: <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">false</span>)
2560
- 586: <span class="ruby-keyword kw">end</span></pre>
2598
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 586</span>
2599
+ 586: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_journalsummaries</span>(<span class="ruby-identifier">query</span>)
2600
+ 587: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">currentEntries</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-value">0</span>,
2601
+ 588: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2602
+ 589: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>),
2603
+ 590: <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">false</span>)
2604
+ 591: <span class="ruby-keyword kw">end</span></pre>
2561
2605
  </div>
2562
2606
 
2563
2607
  </div>
@@ -2591,10 +2635,10 @@ Array generated by backupAttributes().
2591
2635
  <div class="method-source-code"
2592
2636
  id="restore-ttributes-source">
2593
2637
  <pre>
2594
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 199</span>
2595
- 199: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">backup</span>)
2596
- 200: <span class="ruby-ivar">@attributes</span>, <span class="ruby-ivar">@scenarioAttributes</span> = <span class="ruby-identifier">backup</span>
2597
- 201: <span class="ruby-keyword kw">end</span></pre>
2638
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 201</span>
2639
+ 201: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">backup</span>)
2640
+ 202: <span class="ruby-ivar">@attributes</span>, <span class="ruby-ivar">@scenarioAttributes</span> = <span class="ruby-identifier">backup</span>
2641
+ 203: <span class="ruby-keyword kw">end</span></pre>
2598
2642
  </div>
2599
2643
 
2600
2644
  </div>
@@ -2627,14 +2671,14 @@ Return the top-level node for this node.
2627
2671
  <div class="method-source-code"
2628
2672
  id="root-source">
2629
2673
  <pre>
2630
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 372</span>
2631
- 372: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">root</span>
2632
- 373: <span class="ruby-identifier">n</span> = <span class="ruby-keyword kw">self</span>
2633
- 374: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">parent</span>
2634
- 375: <span class="ruby-identifier">n</span> = <span class="ruby-identifier">n</span>.<span class="ruby-identifier">parent</span>
2635
- 376: <span class="ruby-keyword kw">end</span>
2636
- 377: <span class="ruby-identifier">n</span>
2637
- 378: <span class="ruby-keyword kw">end</span></pre>
2674
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 374</span>
2675
+ 374: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">root</span>
2676
+ 375: <span class="ruby-identifier">n</span> = <span class="ruby-keyword kw">self</span>
2677
+ 376: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">parent</span>
2678
+ 377: <span class="ruby-identifier">n</span> = <span class="ruby-identifier">n</span>.<span class="ruby-identifier">parent</span>
2679
+ 378: <span class="ruby-keyword kw">end</span>
2680
+ 379: <span class="ruby-identifier">n</span>
2681
+ 380: <span class="ruby-keyword kw">end</span></pre>
2638
2682
  </div>
2639
2683
 
2640
2684
  </div>
@@ -2669,10 +2713,10 @@ raised.
2669
2713
  <div class="method-source-code"
2670
2714
  id="set-source">
2671
2715
  <pre>
2672
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 407</span>
2673
- 407: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">value</span>)
2674
- 408: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">set</span>(<span class="ruby-identifier">value</span>)
2675
- 409: <span class="ruby-keyword kw">end</span></pre>
2716
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 411</span>
2717
+ 411: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-identifier">value</span>)
2718
+ 412: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">attributeId</span>].<span class="ruby-identifier">set</span>(<span class="ruby-identifier">value</span>)
2719
+ 413: <span class="ruby-keyword kw">end</span></pre>
2676
2720
  </div>
2677
2721
 
2678
2722
  </div>
@@ -2703,10 +2747,10 @@ raised.
2703
2747
  <div class="method-source-code"
2704
2748
  id="warning-source">
2705
2749
  <pre>
2706
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 647</span>
2707
- 647: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
2708
- 648: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sourceFileInfo</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">nil</span>)
2709
- 649: <span class="ruby-keyword kw">end</span></pre>
2750
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 652</span>
2751
+ 652: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
2752
+ 653: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-ivar">@sourceFileInfo</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">nil</span>)
2753
+ 654: <span class="ruby-keyword kw">end</span></pre>
2710
2754
  </div>
2711
2755
 
2712
2756
  </div>
@@ -2743,10 +2787,10 @@ raised.
2743
2787
  <div class="method-source-code"
2744
2788
  id="indent-source">
2745
2789
  <pre>
2746
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 697</span>
2747
- 697: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">indent</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">str</span>)
2748
- 698: <span class="ruby-identifier">tag</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\n/</span>, <span class="ruby-node">&quot;\n#{' ' * tag.length}&quot;</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n&quot;</span>
2749
- 699: <span class="ruby-keyword kw">end</span></pre>
2790
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 702</span>
2791
+ 702: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">indent</span>(<span class="ruby-identifier">tag</span>, <span class="ruby-identifier">str</span>)
2792
+ 703: <span class="ruby-identifier">tag</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\n/</span>, <span class="ruby-node">&quot;\n#{' ' * tag.length}&quot;</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n&quot;</span>
2793
+ 704: <span class="ruby-keyword kw">end</span></pre>
2750
2794
  </div>
2751
2795
 
2752
2796
  </div>
@@ -2780,44 +2824,44 @@ href="Query.html">Query</a>.
2780
2824
  <div class="method-source-code"
2781
2825
  id="journal-essages-source">
2782
2826
  <pre>
2783
- <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 659</span>
2784
- 659: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">journalMessages</span>(<span class="ruby-identifier">entries</span>, <span class="ruby-identifier">query</span>, <span class="ruby-identifier">longVersion</span>)
2785
- 660: <span class="ruby-comment cmt"># The components of the message are either UTF-8 text or RichText. For</span>
2786
- 661: <span class="ruby-comment cmt"># the RichText components, we use the originally provided markup since</span>
2787
- 662: <span class="ruby-comment cmt"># we compose the result as RichText markup first.</span>
2788
- 663: <span class="ruby-identifier">rText</span> = <span class="ruby-value str">''</span>
2789
- 664: <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
2790
- 665: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;==== &lt;nowiki&gt;&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">headline</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;&lt;/nowiki&gt; ====\n&quot;</span>
2791
- 666: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;''Reported on #{entry.date.to_s(query.timeFormat)}'' &quot;</span>
2792
- 667: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">author</span>
2793
- 668: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;''by &lt;nowiki&gt;#{entry.author.name}&lt;/nowiki&gt;''&quot;</span>
2794
- 669: <span class="ruby-keyword kw">end</span>
2795
- 670: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n\n&quot;</span>
2796
- 671: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">flags</span>.<span class="ruby-identifier">empty?</span>
2797
- 672: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;''Flags:'' #{entry.flags.join(', ')}\n\n&quot;</span>
2798
- 673: <span class="ruby-keyword kw">end</span>
2799
- 674: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>
2800
- 675: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n\n&quot;</span>
2801
- 676: <span class="ruby-keyword kw">end</span>
2802
- 677: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">longVersion</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">details</span>
2803
- 678: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">details</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n\n&quot;</span>
2804
- 679: <span class="ruby-keyword kw">end</span>
2805
- 680: <span class="ruby-keyword kw">end</span>
2806
- 681: <span class="ruby-comment cmt"># Now convert the RichText markup String into RichTextIntermediate</span>
2807
- 682: <span class="ruby-comment cmt"># format.</span>
2808
- 683: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">rti</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rText</span>, <span class="ruby-constant">RTFHandlers</span>.<span class="ruby-identifier">create</span>(<span class="ruby-ivar">@project</span>),
2809
- 684: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>).
2810
- 685: <span class="ruby-identifier">generateIntermediateFormat</span>)
2811
- 686: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ptn_journal'</span>,
2812
- 687: <span class="ruby-value str">&quot;Syntax error in journal message&quot;</span>)
2813
- 688: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2814
- 689: <span class="ruby-keyword kw">end</span>
2815
- 690: <span class="ruby-comment cmt"># No section numbers, please!</span>
2816
- 691: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">sectionNumbers</span> = <span class="ruby-keyword kw">false</span>
2817
- 692: <span class="ruby-comment cmt"># We use a special class to allow CSS formating.</span>
2818
- 693: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">cssClass</span> = <span class="ruby-value str">'tj_journal'</span>
2819
- 694: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rti</span>
2820
- 695: <span class="ruby-keyword kw">end</span></pre>
2827
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 664</span>
2828
+ 664: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">journalMessages</span>(<span class="ruby-identifier">entries</span>, <span class="ruby-identifier">query</span>, <span class="ruby-identifier">longVersion</span>)
2829
+ 665: <span class="ruby-comment cmt"># The components of the message are either UTF-8 text or RichText. For</span>
2830
+ 666: <span class="ruby-comment cmt"># the RichText components, we use the originally provided markup since</span>
2831
+ 667: <span class="ruby-comment cmt"># we compose the result as RichText markup first.</span>
2832
+ 668: <span class="ruby-identifier">rText</span> = <span class="ruby-value str">''</span>
2833
+ 669: <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
2834
+ 670: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;==== &lt;nowiki&gt;&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">headline</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;&lt;/nowiki&gt; ====\n&quot;</span>
2835
+ 671: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;''Reported on #{entry.date.to_s(query.timeFormat)}'' &quot;</span>
2836
+ 672: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">author</span>
2837
+ 673: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;''by &lt;nowiki&gt;#{entry.author.name}&lt;/nowiki&gt;''&quot;</span>
2838
+ 674: <span class="ruby-keyword kw">end</span>
2839
+ 675: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n\n&quot;</span>
2840
+ 676: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">flags</span>.<span class="ruby-identifier">empty?</span>
2841
+ 677: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;''Flags:'' #{entry.flags.join(', ')}\n\n&quot;</span>
2842
+ 678: <span class="ruby-keyword kw">end</span>
2843
+ 679: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>
2844
+ 680: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n\n&quot;</span>
2845
+ 681: <span class="ruby-keyword kw">end</span>
2846
+ 682: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">longVersion</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">details</span>
2847
+ 683: <span class="ruby-identifier">rText</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">details</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n\n&quot;</span>
2848
+ 684: <span class="ruby-keyword kw">end</span>
2849
+ 685: <span class="ruby-keyword kw">end</span>
2850
+ 686: <span class="ruby-comment cmt"># Now convert the RichText markup String into RichTextIntermediate</span>
2851
+ 687: <span class="ruby-comment cmt"># format.</span>
2852
+ 688: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">rti</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rText</span>, <span class="ruby-constant">RTFHandlers</span>.<span class="ruby-identifier">create</span>(<span class="ruby-ivar">@project</span>),
2853
+ 689: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>).
2854
+ 690: <span class="ruby-identifier">generateIntermediateFormat</span>)
2855
+ 691: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ptn_journal'</span>,
2856
+ 692: <span class="ruby-value str">&quot;Syntax error in journal message&quot;</span>)
2857
+ 693: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2858
+ 694: <span class="ruby-keyword kw">end</span>
2859
+ 695: <span class="ruby-comment cmt"># No section numbers, please!</span>
2860
+ 696: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">sectionNumbers</span> = <span class="ruby-keyword kw">false</span>
2861
+ 697: <span class="ruby-comment cmt"># We use a special class to allow CSS formating.</span>
2862
+ 698: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">cssClass</span> = <span class="ruby-value str">'tj_journal'</span>
2863
+ 699: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rti</span>
2864
+ 700: <span class="ruby-keyword kw">end</span></pre>
2821
2865
  </div>
2822
2866
 
2823
2867
  </div>