taskjuggler 0.0.11 → 0.1.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 (697) hide show
  1. data/CHANGELOG +6 -1550
  2. data/benchmarks/UTF-8-Strings.rb +58 -0
  3. data/benchmarks/profile.clt +36082 -0
  4. data/benchmarks/profile.html +58182 -0
  5. data/benchmarks/runbench.rb +2 -2
  6. data/data/css/tjmanual.css +0 -1
  7. data/doc/AppConfig.html +1491 -0
  8. data/doc/CHANGELOG.html +557 -0
  9. data/doc/COPYING.html +899 -0
  10. data/doc/Diff.html +1193 -0
  11. data/doc/Diff/Hunk.html +1026 -0
  12. data/doc/Diffable.html +684 -0
  13. data/doc/DiffableString.html +684 -0
  14. data/doc/Object.html +720 -0
  15. data/doc/README_rdoc.html +742 -0
  16. data/doc/RuntimeConfig.html +856 -0
  17. data/doc/String.html +1005 -0
  18. data/doc/TaskJuggler.html +2639 -0
  19. data/doc/TaskJuggler/Account.html +753 -0
  20. data/doc/TaskJuggler/AccountAttribute.html +769 -0
  21. data/doc/TaskJuggler/AccountScenario.html +712 -0
  22. data/doc/TaskJuggler/Allocation.html +963 -0
  23. data/doc/TaskJuggler/AllocationAttribute.html +799 -0
  24. data/doc/TaskJuggler/AttributeBase.html +1328 -0
  25. data/doc/TaskJuggler/AttributeDefinition.html +815 -0
  26. data/doc/TaskJuggler/AttributeOverwrite.html +606 -0
  27. data/doc/TaskJuggler/BatchProcessor.html +1178 -0
  28. data/doc/TaskJuggler/Booking.html +859 -0
  29. data/doc/TaskJuggler/BookingListAttribute.html +769 -0
  30. data/doc/TaskJuggler/BooleanAttribute.html +769 -0
  31. data/doc/TaskJuggler/CSVFile.html +1128 -0
  32. data/doc/TaskJuggler/CellSettingPattern.html +700 -0
  33. data/doc/TaskJuggler/CellSettingPatternList.html +749 -0
  34. data/doc/TaskJuggler/Charge.html +777 -0
  35. data/doc/TaskJuggler/ChargeListAttribute.html +733 -0
  36. data/doc/TaskJuggler/ChargeSet.html +949 -0
  37. data/doc/TaskJuggler/ChargeSetListAttribute.html +778 -0
  38. data/doc/TaskJuggler/CollisionDetector.html +1089 -0
  39. data/doc/TaskJuggler/ColumnListAttribute.html +733 -0
  40. data/doc/TaskJuggler/ColumnTable.html +763 -0
  41. data/doc/TaskJuggler/Daemon.html +819 -0
  42. data/doc/TaskJuggler/DataCache.html +1025 -0
  43. data/doc/TaskJuggler/DataCacheEntry.html +737 -0
  44. data/doc/TaskJuggler/DateAttribute.html +737 -0
  45. data/doc/TaskJuggler/DefinitionListAttribute.html +655 -0
  46. data/doc/TaskJuggler/DependencyListAttribute.html +773 -0
  47. data/doc/TaskJuggler/DurationAttribute.html +770 -0
  48. data/doc/TaskJuggler/FileList.html +793 -0
  49. data/doc/TaskJuggler/FileRecord.html +702 -0
  50. data/doc/TaskJuggler/FixnumAttribute.html +691 -0
  51. data/doc/TaskJuggler/FlagListAttribute.html +769 -0
  52. data/doc/TaskJuggler/FloatAttribute.html +733 -0
  53. data/doc/TaskJuggler/FormatListAttribute.html +697 -0
  54. data/doc/TaskJuggler/GanttChart.html +1487 -0
  55. data/doc/TaskJuggler/GanttContainer.html +945 -0
  56. data/doc/TaskJuggler/GanttHeader.html +948 -0
  57. data/doc/TaskJuggler/GanttHeaderScaleItem.html +762 -0
  58. data/doc/TaskJuggler/GanttLine.html +1325 -0
  59. data/doc/TaskJuggler/GanttLoadStack.html +828 -0
  60. data/doc/TaskJuggler/GanttMilestone.html +926 -0
  61. data/doc/TaskJuggler/GanttRouter.html +1136 -0
  62. data/doc/TaskJuggler/GanttTaskBar.html +948 -0
  63. data/doc/TaskJuggler/HTMLDocument.html +754 -0
  64. data/doc/TaskJuggler/HTMLElements.html +599 -0
  65. data/doc/TaskJuggler/HTMLGraphics.html +837 -0
  66. data/doc/TaskJuggler/Interval.html +1076 -0
  67. data/doc/TaskJuggler/IntervalList.html +797 -0
  68. data/doc/TaskJuggler/IntervalListAttribute.html +773 -0
  69. data/doc/TaskJuggler/JobInfo.html +943 -0
  70. data/doc/TaskJuggler/Journal.html +1248 -0
  71. data/doc/TaskJuggler/JournalEntry.html +860 -0
  72. data/doc/TaskJuggler/JournalEntryList.html +1229 -0
  73. data/doc/TaskJuggler/KeywordArray.html +696 -0
  74. data/doc/TaskJuggler/KeywordDocumentation.html +2250 -0
  75. data/doc/TaskJuggler/Limits.html +1036 -0
  76. data/doc/TaskJuggler/Limits/Limit.html +947 -0
  77. data/doc/TaskJuggler/LimitsAttribute.html +734 -0
  78. data/doc/TaskJuggler/ListAttributeBase.html +703 -0
  79. data/doc/TaskJuggler/Log.html +1163 -0
  80. data/doc/TaskJuggler/LogFile.html +980 -0
  81. data/doc/TaskJuggler/LogicalAttribute.html +760 -0
  82. data/doc/TaskJuggler/LogicalExpression.html +801 -0
  83. data/doc/TaskJuggler/LogicalExpressionAttribute.html +691 -0
  84. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +691 -0
  85. data/doc/TaskJuggler/LogicalFlag.html +753 -0
  86. data/doc/TaskJuggler/LogicalFunction.html +1409 -0
  87. data/doc/TaskJuggler/LogicalOperation.html +1144 -0
  88. data/doc/TaskJuggler/ManagerResponsibilities.html +736 -0
  89. data/doc/TaskJuggler/ManagerStatusRecord.html +740 -0
  90. data/doc/TaskJuggler/Message.html +837 -0
  91. data/doc/TaskJuggler/MessageHandler.html +1056 -0
  92. data/doc/TaskJuggler/Navigator.html +943 -0
  93. data/doc/TaskJuggler/NavigatorElement.html +994 -0
  94. data/doc/TaskJuggler/NikuProject.html +724 -0
  95. data/doc/TaskJuggler/NikuReport.html +1470 -0
  96. data/doc/TaskJuggler/NikuResource.html +694 -0
  97. data/doc/TaskJuggler/NodeListAttribute.html +655 -0
  98. data/doc/TaskJuggler/PlaceHolderCell.html +748 -0
  99. data/doc/TaskJuggler/ProcessIntercom.html +1017 -0
  100. data/doc/TaskJuggler/ProcessIntercomIface.html +773 -0
  101. data/doc/TaskJuggler/Project.html +3478 -0
  102. data/doc/TaskJuggler/ProjectBroker.html +1676 -0
  103. data/doc/TaskJuggler/ProjectBrokerIface.html +851 -0
  104. data/doc/TaskJuggler/ProjectFileParser.html +2102 -0
  105. data/doc/TaskJuggler/ProjectFileScanner.html +1896 -0
  106. data/doc/TaskJuggler/ProjectRecord.html +978 -0
  107. data/doc/TaskJuggler/ProjectServer.html +1249 -0
  108. data/doc/TaskJuggler/ProjectServerIface.html +868 -0
  109. data/doc/TaskJuggler/PropertyAttribute.html +691 -0
  110. data/doc/TaskJuggler/PropertyList.html +1399 -0
  111. data/doc/TaskJuggler/PropertySet.html +1796 -0
  112. data/doc/TaskJuggler/PropertyTreeNode.html +2851 -0
  113. data/doc/TaskJuggler/Query.html +1756 -0
  114. data/doc/TaskJuggler/RTFHandlers.html +664 -0
  115. data/doc/TaskJuggler/RTFNavigator.html +792 -0
  116. data/doc/TaskJuggler/RTFQuery.html +1083 -0
  117. data/doc/TaskJuggler/RTFReport.html +820 -0
  118. data/doc/TaskJuggler/RTFReportLink.html +812 -0
  119. data/doc/TaskJuggler/RTFWithQuerySupport.html +702 -0
  120. data/doc/TaskJuggler/RealFormat.html +805 -0
  121. data/doc/TaskJuggler/RealFormatAttribute.html +655 -0
  122. data/doc/TaskJuggler/ReferenceAttribute.html +880 -0
  123. data/doc/TaskJuggler/Report.html +1501 -0
  124. data/doc/TaskJuggler/ReportBase.html +1266 -0
  125. data/doc/TaskJuggler/ReportContext.html +837 -0
  126. data/doc/TaskJuggler/ReportServer.html +1068 -0
  127. data/doc/TaskJuggler/ReportServerIface.html +902 -0
  128. data/doc/TaskJuggler/ReportServerRecord.html +781 -0
  129. data/doc/TaskJuggler/ReportServlet.html +1029 -0
  130. data/doc/TaskJuggler/ReportTable.html +1179 -0
  131. data/doc/TaskJuggler/ReportTableCell.html +1666 -0
  132. data/doc/TaskJuggler/ReportTableColumn.html +890 -0
  133. data/doc/TaskJuggler/ReportTableLegend.html +1060 -0
  134. data/doc/TaskJuggler/ReportTableLine.html +1067 -0
  135. data/doc/TaskJuggler/Resource.html +1004 -0
  136. data/doc/TaskJuggler/ResourceListAttribute.html +829 -0
  137. data/doc/TaskJuggler/ResourceListRE.html +737 -0
  138. data/doc/TaskJuggler/ResourceScenario.html +2549 -0
  139. data/doc/TaskJuggler/RichText.html +879 -0
  140. data/doc/TaskJuggler/RichTextAttribute.html +811 -0
  141. data/doc/TaskJuggler/RichTextDocument.html +1038 -0
  142. data/doc/TaskJuggler/RichTextElement.html +1780 -0
  143. data/doc/TaskJuggler/RichTextFunctionExample.html +799 -0
  144. data/doc/TaskJuggler/RichTextFunctionHandler.html +750 -0
  145. data/doc/TaskJuggler/RichTextImage.html +712 -0
  146. data/doc/TaskJuggler/RichTextIntermediate.html +1285 -0
  147. data/doc/TaskJuggler/RichTextParser.html +868 -0
  148. data/doc/TaskJuggler/RichTextScanner.html +1565 -0
  149. data/doc/TaskJuggler/RichTextSnip.html +1000 -0
  150. data/doc/TaskJuggler/RichTextSyntaxRules.html +2052 -0
  151. data/doc/TaskJuggler/Scenario.html +656 -0
  152. data/doc/TaskJuggler/ScenarioData.html +838 -0
  153. data/doc/TaskJuggler/ScenarioListAttribute.html +733 -0
  154. data/doc/TaskJuggler/Scoreboard.html +1201 -0
  155. data/doc/TaskJuggler/SheetHandlerBase.html +1297 -0
  156. data/doc/TaskJuggler/SheetReceiver.html +1398 -0
  157. data/doc/TaskJuggler/SheetSender.html +1168 -0
  158. data/doc/TaskJuggler/Shift.html +751 -0
  159. data/doc/TaskJuggler/ShiftAssignment.html +1008 -0
  160. data/doc/TaskJuggler/ShiftAssignments.html +1413 -0
  161. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +734 -0
  162. data/doc/TaskJuggler/ShiftScenario.html +782 -0
  163. data/doc/TaskJuggler/SimpleQueryExpander.html +732 -0
  164. data/doc/TaskJuggler/SortListAttribute.html +691 -0
  165. data/doc/TaskJuggler/StatusSheetReceiver.html +678 -0
  166. data/doc/TaskJuggler/StatusSheetReport.html +935 -0
  167. data/doc/TaskJuggler/StatusSheetSender.html +808 -0
  168. data/doc/TaskJuggler/StdIoWrapper.html +696 -0
  169. data/doc/TaskJuggler/StringAttribute.html +733 -0
  170. data/doc/TaskJuggler/SymbolAttribute.html +691 -0
  171. data/doc/TaskJuggler/SyntaxReference.html +1240 -0
  172. data/doc/TaskJuggler/TOCEntry.html +836 -0
  173. data/doc/TaskJuggler/TSResourceRecord.html +732 -0
  174. data/doc/TaskJuggler/TSTaskRecord.html +744 -0
  175. data/doc/TaskJuggler/TableColumnDefinition.html +949 -0
  176. data/doc/TaskJuggler/TableOfContents.html +790 -0
  177. data/doc/TaskJuggler/TableReport.html +2555 -0
  178. data/doc/TaskJuggler/Task.html +890 -0
  179. data/doc/TaskJuggler/TaskDepListAttribute.html +773 -0
  180. data/doc/TaskJuggler/TaskDependency.html +832 -0
  181. data/doc/TaskJuggler/TaskListAttribute.html +773 -0
  182. data/doc/TaskJuggler/TaskListRE.html +736 -0
  183. data/doc/TaskJuggler/TaskScenario.html +5180 -0
  184. data/doc/TaskJuggler/TernarySearchTree.html +1341 -0
  185. data/doc/TaskJuggler/TextFormatter.html +973 -0
  186. data/doc/TaskJuggler/TextParser.html +1862 -0
  187. data/doc/TaskJuggler/TextParser/Macro.html +708 -0
  188. data/doc/TaskJuggler/TextParser/MacroTable.html +832 -0
  189. data/doc/TaskJuggler/TextParser/Pattern.html +1743 -0
  190. data/doc/TaskJuggler/TextParser/Rule.html +1419 -0
  191. data/doc/TaskJuggler/TextParser/Scanner.html +1516 -0
  192. data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +661 -0
  193. data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +727 -0
  194. data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +724 -0
  195. data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +1095 -0
  196. data/doc/TaskJuggler/TextParser/SourceFileInfo.html +760 -0
  197. data/doc/TaskJuggler/TextParser/StackElement.html +940 -0
  198. data/doc/TaskJuggler/TextParser/State.html +1015 -0
  199. data/doc/TaskJuggler/TextParser/StateTransition.html +808 -0
  200. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +711 -0
  201. data/doc/TaskJuggler/TextParser/TokenDoc.html +742 -0
  202. data/doc/TaskJuggler/TextReport.html +921 -0
  203. data/doc/TaskJuggler/TimeSheet.html +1264 -0
  204. data/doc/TaskJuggler/TimeSheetReceiver.html +675 -0
  205. data/doc/TaskJuggler/TimeSheetRecord.html +1415 -0
  206. data/doc/TaskJuggler/TimeSheetReport.html +1013 -0
  207. data/doc/TaskJuggler/TimeSheetSender.html +700 -0
  208. data/doc/TaskJuggler/TimeSheetSummary.html +959 -0
  209. data/doc/TaskJuggler/TimeSheets.html +736 -0
  210. data/doc/TaskJuggler/Tj3.html +857 -0
  211. data/doc/TaskJuggler/Tj3AppBase.html +942 -0
  212. data/doc/TaskJuggler/Tj3Client.html +1510 -0
  213. data/doc/TaskJuggler/Tj3Daemon.html +870 -0
  214. data/doc/TaskJuggler/Tj3Man.html +768 -0
  215. data/doc/TaskJuggler/Tj3SheetAppBase.html +758 -0
  216. data/doc/TaskJuggler/Tj3SsReceiver.html +747 -0
  217. data/doc/TaskJuggler/Tj3SsSender.html +780 -0
  218. data/doc/TaskJuggler/Tj3TsReceiver.html +747 -0
  219. data/doc/TaskJuggler/Tj3TsSender.html +767 -0
  220. data/doc/TaskJuggler/Tj3TsSummary.html +775 -0
  221. data/doc/TaskJuggler/TjException.html +692 -0
  222. data/doc/TaskJuggler/TjRuntimeError.html +606 -0
  223. data/doc/TaskJuggler/TjTime.html +3117 -0
  224. data/doc/TaskJuggler/TjpExample.html +897 -0
  225. data/doc/TaskJuggler/TjpExportRE.html +1772 -0
  226. data/doc/TaskJuggler/TjpSyntaxRules.html +14329 -0
  227. data/doc/TaskJuggler/URLParameter.html +691 -0
  228. data/doc/TaskJuggler/UserManual.html +1224 -0
  229. data/doc/TaskJuggler/VimSyntax.html +1064 -0
  230. data/doc/TaskJuggler/WebServer.html +757 -0
  231. data/doc/TaskJuggler/WelcomePage.html +789 -0
  232. data/doc/TaskJuggler/WorkingHours.html +1218 -0
  233. data/doc/TaskJuggler/WorkingHoursAttribute.html +756 -0
  234. data/doc/TaskJuggler/XMLBlob.html +707 -0
  235. data/doc/TaskJuggler/XMLComment.html +702 -0
  236. data/doc/TaskJuggler/XMLDocument.html +803 -0
  237. data/doc/TaskJuggler/XMLElement.html +990 -0
  238. data/doc/TaskJuggler/XMLNamedText.html +663 -0
  239. data/doc/TaskJuggler/XMLText.html +717 -0
  240. data/doc/index.html +4518 -0
  241. data/doc/lib/taskjuggler/AccountScenario_rb.html +69 -0
  242. data/doc/lib/taskjuggler/Account_rb.html +71 -0
  243. data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +67 -0
  244. data/doc/lib/taskjuggler/Allocation_rb.html +71 -0
  245. data/doc/lib/taskjuggler/AppConfig_rb.html +69 -0
  246. data/doc/lib/taskjuggler/AttributeBase_rb.html +69 -0
  247. data/doc/lib/taskjuggler/AttributeDefinition_rb.html +67 -0
  248. data/doc/lib/taskjuggler/Attributes_rb.html +83 -0
  249. data/doc/lib/taskjuggler/BatchProcessor_rb.html +71 -0
  250. data/doc/lib/taskjuggler/Booking_rb.html +67 -0
  251. data/doc/lib/taskjuggler/ChargeSet_rb.html +69 -0
  252. data/doc/lib/taskjuggler/Charge_rb.html +69 -0
  253. data/doc/lib/taskjuggler/DataCache_rb.html +71 -0
  254. data/doc/lib/taskjuggler/FileList_rb.html +67 -0
  255. data/doc/lib/taskjuggler/HTMLDocument_rb.html +71 -0
  256. data/doc/lib/taskjuggler/HTMLElements_rb.html +69 -0
  257. data/doc/lib/taskjuggler/IntervalList_rb.html +69 -0
  258. data/doc/lib/taskjuggler/Interval_rb.html +69 -0
  259. data/doc/lib/taskjuggler/Journal_rb.html +67 -0
  260. data/doc/lib/taskjuggler/KeywordArray_rb.html +67 -0
  261. data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +77 -0
  262. data/doc/lib/taskjuggler/Limits_rb.html +69 -0
  263. data/doc/lib/taskjuggler/LogFile_rb.html +69 -0
  264. data/doc/lib/taskjuggler/Log_rb.html +71 -0
  265. data/doc/lib/taskjuggler/LogicalExpression_rb.html +73 -0
  266. data/doc/lib/taskjuggler/LogicalFunction_rb.html +69 -0
  267. data/doc/lib/taskjuggler/LogicalOperation_rb.html +69 -0
  268. data/doc/lib/taskjuggler/MessageHandler_rb.html +69 -0
  269. data/doc/lib/taskjuggler/ProjectFileParser_rb.html +77 -0
  270. data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +69 -0
  271. data/doc/lib/taskjuggler/Project_rb.html +113 -0
  272. data/doc/lib/taskjuggler/PropertyList_rb.html +67 -0
  273. data/doc/lib/taskjuggler/PropertySet_rb.html +71 -0
  274. data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +67 -0
  275. data/doc/lib/taskjuggler/Query_rb.html +69 -0
  276. data/doc/lib/taskjuggler/RealFormat_rb.html +67 -0
  277. data/doc/lib/taskjuggler/ResourceScenario_rb.html +69 -0
  278. data/doc/lib/taskjuggler/Resource_rb.html +71 -0
  279. data/doc/lib/taskjuggler/RichText/Document_rb.html +73 -0
  280. data/doc/lib/taskjuggler/RichText/Element_rb.html +75 -0
  281. data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +73 -0
  282. data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +67 -0
  283. data/doc/lib/taskjuggler/RichText/Parser_rb.html +75 -0
  284. data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +75 -0
  285. data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +73 -0
  286. data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +73 -0
  287. data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +75 -0
  288. data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +71 -0
  289. data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +69 -0
  290. data/doc/lib/taskjuggler/RichText/Scanner_rb.html +71 -0
  291. data/doc/lib/taskjuggler/RichText/Snip_rb.html +71 -0
  292. data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +67 -0
  293. data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +71 -0
  294. data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +71 -0
  295. data/doc/lib/taskjuggler/RichText_rb.html +73 -0
  296. data/doc/lib/taskjuggler/RuntimeConfig_rb.html +69 -0
  297. data/doc/lib/taskjuggler/ScenarioData_rb.html +71 -0
  298. data/doc/lib/taskjuggler/Scenario_rb.html +69 -0
  299. data/doc/lib/taskjuggler/Scoreboard_rb.html +69 -0
  300. data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +75 -0
  301. data/doc/lib/taskjuggler/SheetReceiver_rb.html +81 -0
  302. data/doc/lib/taskjuggler/SheetSender_rb.html +79 -0
  303. data/doc/lib/taskjuggler/ShiftAssignments_rb.html +71 -0
  304. data/doc/lib/taskjuggler/ShiftScenario_rb.html +69 -0
  305. data/doc/lib/taskjuggler/Shift_rb.html +71 -0
  306. data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +69 -0
  307. data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +69 -0
  308. data/doc/lib/taskjuggler/StatusSheetSender_rb.html +69 -0
  309. data/doc/lib/taskjuggler/StdIoWrapper_rb.html +67 -0
  310. data/doc/lib/taskjuggler/SyntaxReference_rb.html +75 -0
  311. data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +67 -0
  312. data/doc/lib/taskjuggler/TaskDependency_rb.html +67 -0
  313. data/doc/lib/taskjuggler/TaskJuggler_rb.html +75 -0
  314. data/doc/lib/taskjuggler/TaskScenario_rb.html +71 -0
  315. data/doc/lib/taskjuggler/Task_rb.html +71 -0
  316. data/doc/lib/taskjuggler/TernarySearchTree_rb.html +69 -0
  317. data/doc/lib/taskjuggler/TextFormatter_rb.html +69 -0
  318. data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +67 -0
  319. data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +71 -0
  320. data/doc/lib/taskjuggler/TextParser/Rule_rb.html +69 -0
  321. data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +77 -0
  322. data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +67 -0
  323. data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +67 -0
  324. data/doc/lib/taskjuggler/TextParser/State_rb.html +67 -0
  325. data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +67 -0
  326. data/doc/lib/taskjuggler/TextParser_rb.html +79 -0
  327. data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +69 -0
  328. data/doc/lib/taskjuggler/TimeSheetSender_rb.html +69 -0
  329. data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +69 -0
  330. data/doc/lib/taskjuggler/TimeSheets_rb.html +67 -0
  331. data/doc/lib/taskjuggler/Tj3AppBase_rb.html +79 -0
  332. data/doc/lib/taskjuggler/Tj3Config_rb.html +71 -0
  333. data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +69 -0
  334. data/doc/lib/taskjuggler/TjException_rb.html +67 -0
  335. data/doc/lib/taskjuggler/TjTime_rb.html +71 -0
  336. data/doc/lib/taskjuggler/TjpExample_rb.html +69 -0
  337. data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +67 -0
  338. data/doc/lib/taskjuggler/URLParameter_rb.html +69 -0
  339. data/doc/lib/taskjuggler/UTF8String_rb.html +69 -0
  340. data/doc/lib/taskjuggler/UserManual_rb.html +81 -0
  341. data/doc/lib/taskjuggler/VimSyntax_rb.html +69 -0
  342. data/doc/lib/taskjuggler/WorkingHours_rb.html +71 -0
  343. data/doc/lib/taskjuggler/XMLDocument_rb.html +69 -0
  344. data/doc/lib/taskjuggler/XMLElement_rb.html +69 -0
  345. data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +75 -0
  346. data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +75 -0
  347. data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +75 -0
  348. data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +71 -0
  349. data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +71 -0
  350. data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +71 -0
  351. data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +71 -0
  352. data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +71 -0
  353. data/doc/lib/taskjuggler/apps/Tj3_rb.html +71 -0
  354. data/doc/lib/taskjuggler/daemon/Daemon_rb.html +69 -0
  355. data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +71 -0
  356. data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +83 -0
  357. data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +85 -0
  358. data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +73 -0
  359. data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +69 -0
  360. data/doc/lib/taskjuggler/daemon/WebServer_rb.html +81 -0
  361. data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +71 -0
  362. data/doc/lib/taskjuggler/deep_copy_rb.html +67 -0
  363. data/doc/lib/taskjuggler/reports/CSVFile_rb.html +69 -0
  364. data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +69 -0
  365. data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +69 -0
  366. data/doc/lib/taskjuggler/reports/GanttChart_rb.html +75 -0
  367. data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +69 -0
  368. data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +67 -0
  369. data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +69 -0
  370. data/doc/lib/taskjuggler/reports/GanttLine_rb.html +79 -0
  371. data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +69 -0
  372. data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +69 -0
  373. data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +69 -0
  374. data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +69 -0
  375. data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +67 -0
  376. data/doc/lib/taskjuggler/reports/Navigator_rb.html +69 -0
  377. data/doc/lib/taskjuggler/reports/NikuReport_rb.html +71 -0
  378. data/doc/lib/taskjuggler/reports/ReportBase_rb.html +67 -0
  379. data/doc/lib/taskjuggler/reports/ReportContext_rb.html +67 -0
  380. data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +67 -0
  381. data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +67 -0
  382. data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +67 -0
  383. data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +69 -0
  384. data/doc/lib/taskjuggler/reports/ReportTable_rb.html +71 -0
  385. data/doc/lib/taskjuggler/reports/Report_rb.html +93 -0
  386. data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +75 -0
  387. data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +69 -0
  388. data/doc/lib/taskjuggler/reports/TableReport_rb.html +77 -0
  389. data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +75 -0
  390. data/doc/lib/taskjuggler/reports/TextReport_rb.html +69 -0
  391. data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +69 -0
  392. data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +69 -0
  393. data/doc/lib/tj3_rb.html +69 -0
  394. data/doc/lib/tj3client_rb.html +69 -0
  395. data/doc/lib/tj3d_rb.html +69 -0
  396. data/doc/lib/tj3man_rb.html +69 -0
  397. data/doc/lib/tj3ss_receiver_rb.html +69 -0
  398. data/doc/lib/tj3ss_sender_rb.html +69 -0
  399. data/doc/lib/tj3ts_receiver_rb.html +69 -0
  400. data/doc/lib/tj3ts_sender_rb.html +69 -0
  401. data/doc/lib/tj3ts_summary_rb.html +69 -0
  402. data/doc/rdoc.css +706 -0
  403. data/examples/tutorial.tjp +2 -1
  404. data/lib/taskjuggler/Attributes.rb +33 -12
  405. data/lib/taskjuggler/DataCache.rb +17 -0
  406. data/lib/taskjuggler/FileList.rb +9 -0
  407. data/lib/taskjuggler/HTMLDocument.rb +19 -21
  408. data/lib/taskjuggler/HTMLElements.rb +46 -0
  409. data/lib/taskjuggler/Journal.rb +95 -46
  410. data/lib/taskjuggler/KeywordDocumentation.rb +248 -185
  411. data/lib/taskjuggler/LogicalExpression.rb +2 -2
  412. data/lib/taskjuggler/LogicalFunction.rb +22 -1
  413. data/lib/taskjuggler/LogicalOperation.rb +15 -5
  414. data/lib/taskjuggler/Project.rb +73 -16
  415. data/lib/taskjuggler/ProjectFileParser.rb +1 -1
  416. data/lib/taskjuggler/ProjectFileScanner.rb +27 -0
  417. data/lib/taskjuggler/PropertySet.rb +22 -45
  418. data/lib/taskjuggler/PropertyTreeNode.rb +99 -128
  419. data/lib/taskjuggler/Query.rb +39 -8
  420. data/lib/taskjuggler/Resource.rb +15 -6
  421. data/lib/taskjuggler/RichText/Document.rb +3 -3
  422. data/lib/taskjuggler/RichText/RTFQuery.rb +4 -4
  423. data/lib/taskjuggler/SheetHandlerBase.rb +14 -12
  424. data/lib/taskjuggler/SheetReceiver.rb +17 -15
  425. data/lib/taskjuggler/SheetSender.rb +16 -10
  426. data/{spec/support → lib/taskjuggler}/StdIoWrapper.rb +17 -0
  427. data/lib/taskjuggler/SyntaxReference.rb +2 -2
  428. data/lib/taskjuggler/TableColumnDefinition.rb +4 -3
  429. data/lib/taskjuggler/Task.rb +7 -2
  430. data/lib/taskjuggler/TaskJuggler.rb +74 -0
  431. data/lib/taskjuggler/TaskScenario.rb +62 -83
  432. data/lib/taskjuggler/TextParser.rb +20 -13
  433. data/lib/taskjuggler/TextParser/Scanner.rb +17 -1
  434. data/lib/taskjuggler/TimeSheetSummary.rb +9 -5
  435. data/lib/taskjuggler/TimeSheets.rb +6 -1
  436. data/lib/taskjuggler/Tj3AppBase.rb +41 -18
  437. data/lib/taskjuggler/Tj3Config.rb +1 -1
  438. data/lib/taskjuggler/TjTime.rb +6 -1
  439. data/lib/taskjuggler/TjpSyntaxRules.rb +408 -227
  440. data/lib/taskjuggler/UTF8String.rb +10 -0
  441. data/lib/taskjuggler/UserManual.rb +89 -81
  442. data/lib/taskjuggler/WorkingHours.rb +2 -3
  443. data/lib/taskjuggler/XMLDocument.rb +13 -4
  444. data/lib/taskjuggler/XMLElement.rb +31 -3
  445. data/lib/taskjuggler/apps/Tj3.rb +53 -21
  446. data/lib/taskjuggler/apps/Tj3Client.rb +19 -17
  447. data/lib/taskjuggler/apps/Tj3Daemon.rb +24 -21
  448. data/lib/taskjuggler/{Tj3Man.rb → apps/Tj3Man.rb} +2 -2
  449. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +14 -11
  450. data/lib/taskjuggler/apps/Tj3SsSender.rb +17 -14
  451. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +14 -11
  452. data/lib/taskjuggler/apps/Tj3TsSender.rb +16 -13
  453. data/lib/taskjuggler/apps/Tj3TsSummary.rb +16 -13
  454. data/lib/taskjuggler/reports/GanttChart.rb +1 -1
  455. data/lib/taskjuggler/reports/GanttRouter.rb +0 -2
  456. data/lib/taskjuggler/reports/GanttTaskBar.rb +2 -1
  457. data/lib/taskjuggler/reports/Navigator.rb +2 -1
  458. data/lib/taskjuggler/reports/NikuReport.rb +11 -7
  459. data/lib/taskjuggler/reports/ReportContext.rb +1 -0
  460. data/lib/taskjuggler/reports/StatusSheetReport.rb +7 -2
  461. data/lib/taskjuggler/reports/TableReport.rb +6 -4
  462. data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -0
  463. data/lib/taskjuggler/reports/TjpExportRE.rb +4 -4
  464. data/lib/tj3man.rb +1 -1
  465. data/manual/Day_To_Day_Juggling +134 -137
  466. data/manual/TaskJuggler_2x_Migration +39 -32
  467. data/manual/The_TaskJuggler_Syntax +6 -0
  468. data/prj_cfg.rb +2 -3
  469. data/spec/StatusSheets_spec.rb +314 -0
  470. data/spec/TimeSheets_spec.rb +237 -16
  471. data/spec/Tj3_spec.rb +1 -1
  472. data/spec/support/DaemonControl.rb +1 -1
  473. data/tasks/changelog.rake +13 -3
  474. data/tasks/manual.rake +1 -1
  475. data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -1
  476. data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +1 -1
  477. data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +1 -1
  478. data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -1
  479. data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -1
  480. data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +1 -1
  481. data/test/TestSuite/CSV-Reports/refs/taskreport.csv +1 -1
  482. data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +1 -1
  483. data/test/TestSuite/CSV-Reports/sortByTree.tjp +3 -1
  484. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +4 -1
  485. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -1
  486. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +4 -1
  487. data/test/TestSuite/CSV-Reports/taskreport.tjp +3 -1
  488. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +3 -1
  489. data/test/TestSuite/CSV-Reports/weekly.tjp +1 -0
  490. data/test/TestSuite/Export-Reports/refs/Account.tjp +25 -30
  491. data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +1 -0
  492. data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +43 -72
  493. data/test/TestSuite/Export-Reports/refs/Alternative.tjp +17 -22
  494. data/test/TestSuite/Export-Reports/refs/AutoID.tjp +11 -10
  495. data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +1 -0
  496. data/test/TestSuite/Export-Reports/refs/Booking.tjp +16 -23
  497. data/test/TestSuite/Export-Reports/refs/Caption.tjp +13 -16
  498. data/test/TestSuite/Export-Reports/refs/Celltext.tjp +12 -16
  499. data/test/TestSuite/Export-Reports/refs/Comments.tjp +15 -19
  500. data/test/TestSuite/Export-Reports/refs/Complete.tjp +17 -26
  501. data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
  502. data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +1 -0
  503. data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +1 -0
  504. data/test/TestSuite/Export-Reports/refs/Depends1.tjp +5 -4
  505. data/test/TestSuite/Export-Reports/refs/Durations.tjp +18 -27
  506. data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +21 -20
  507. data/test/TestSuite/Export-Reports/refs/EnvVar.tjp +21 -0
  508. data/test/TestSuite/Export-Reports/refs/Flags.tjp +6 -5
  509. data/test/TestSuite/Export-Reports/refs/Gap.tjp +2 -1
  510. data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +15 -19
  511. data/test/TestSuite/Export-Reports/refs/Include.tjp +21 -20
  512. data/test/TestSuite/Export-Reports/refs/Journal.tjp +6 -5
  513. data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +92 -140
  514. data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +293 -566
  515. data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +1 -0
  516. data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +17 -22
  517. data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +32 -53
  518. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +1 -0
  519. data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +1 -0
  520. data/test/TestSuite/Export-Reports/refs/Manager.tjp +51 -50
  521. data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +22 -31
  522. data/test/TestSuite/Export-Reports/refs/Milestone.tjp +1 -0
  523. data/test/TestSuite/Export-Reports/refs/MinMax.tjp +2 -1
  524. data/test/TestSuite/Export-Reports/refs/Niku.tjp +80 -139
  525. data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +1 -0
  526. data/test/TestSuite/Export-Reports/refs/Period.tjp +1 -0
  527. data/test/TestSuite/Export-Reports/refs/Persistent.tjp +17 -21
  528. data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +1 -0
  529. data/test/TestSuite/Export-Reports/refs/Priority.tjp +121 -107
  530. data/test/TestSuite/Export-Reports/refs/Project.tjp +1 -0
  531. data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +1 -0
  532. data/test/TestSuite/Export-Reports/refs/Query.tjp +17 -26
  533. data/test/TestSuite/Export-Reports/refs/Reports.tjp +42 -61
  534. data/test/TestSuite/Export-Reports/refs/Resource.tjp +21 -20
  535. data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +16 -20
  536. data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +36 -35
  537. data/test/TestSuite/Export-Reports/refs/Responsible.tjp +17 -21
  538. data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +36 -35
  539. data/test/TestSuite/Export-Reports/refs/Scenario.tjp +3 -1
  540. data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +1 -0
  541. data/test/TestSuite/Export-Reports/refs/Select.tjp +29 -43
  542. data/test/TestSuite/Export-Reports/refs/Shift.tjp +12 -11
  543. data/test/TestSuite/Export-Reports/refs/Simple.tjp +15 -19
  544. data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +33 -47
  545. data/test/TestSuite/Export-Reports/refs/String.tjp +9 -10
  546. data/test/TestSuite/Export-Reports/refs/Supplement.tjp +7 -8
  547. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +10 -11
  548. data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +10 -9
  549. data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +9 -9
  550. data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +25 -37
  551. data/test/TestSuite/Export-Reports/refs/Timezone.tjp +1 -0
  552. data/test/TestSuite/Export-Reports/refs/Vacation.tjp +26 -25
  553. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +453 -821
  554. data/test/TestSuite/HTML-Reports/Alerts.html +160 -412
  555. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  556. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  557. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  558. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  559. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  560. data/test/TestSuite/HTML-Reports/css/tjmanual.css +0 -20
  561. data/test/TestSuite/HTML-Reports/css/tjreport.css +6 -7
  562. data/test/TestSuite/HTML-Reports/depArrows.html +851 -0
  563. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  564. data/test/TestSuite/{ReportGenerator/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
  565. data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +27 -3
  566. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions3.tjp +20 -0
  567. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions4.tjp +16 -0
  568. data/test/TestSuite/ReportGenerator/Correct/refs/DependencyList-1.csv +4 -0
  569. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +2 -0
  570. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-2.csv +8 -0
  571. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions3-1.csv +4 -0
  572. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions4-1.csv +2 -0
  573. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +3 -1
  574. data/test/TestSuite/Scheduler/Correct/Booking.tjp +8 -7
  575. data/test/TestSuite/Scheduler/Correct/Booking2.tjp +16 -9
  576. data/test/TestSuite/Scheduler/Correct/Booking3.tjp +28 -0
  577. data/test/TestSuite/Scheduler/Correct/Container.tjp +2 -2
  578. data/test/TestSuite/Scheduler/Correct/Depends.tjp +3 -3
  579. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +4 -4
  580. data/test/TestSuite/Scheduler/Correct/Limits.tjp +3 -1
  581. data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +2 -2
  582. data/test/TestSuite/Scheduler/Correct/MultipleMandatories.tjp +2 -2
  583. data/test/TestSuite/Scheduler/Correct/Optimize-1.tjp +2 -2
  584. data/test/TestSuite/Scheduler/Correct/Optimize-2.tjp +3 -3
  585. data/test/TestSuite/Scheduler/Correct/Optimize-3.tjp +3 -3
  586. data/test/TestSuite/Scheduler/Correct/Optimize-4.tjp +3 -3
  587. data/test/TestSuite/Scheduler/Correct/Optimize-5.tjp +7 -7
  588. data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +2 -2
  589. data/test/TestSuite/Scheduler/Correct/Shift.tjp +7 -5
  590. data/test/TestSuite/Scheduler/Correct/Shift2.tjp +1 -1
  591. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +5 -2
  592. data/test/TestSuite/Scheduler/Errors/booking_no_duty.tjp +1 -1
  593. data/test/TestSuite/Scheduler/Errors/ts_alert1_more_details.tjp +4 -2
  594. data/test/TestSuite/Scheduler/Errors/ts_alert2_more_details.tjp +4 -2
  595. data/test/TestSuite/Scheduler/Errors/ts_no_expected_end.tjp +4 -2
  596. data/test/TestSuite/Scheduler/Errors/ts_no_headline1.tjp +4 -2
  597. data/test/TestSuite/Scheduler/Errors/ts_no_rem_or_end.tjp +4 -2
  598. data/test/TestSuite/Scheduler/Errors/ts_no_remaining.tjp +4 -2
  599. data/test/TestSuite/Scheduler/Errors/ts_no_status_work.tjp +4 -2
  600. data/test/TestSuite/Scheduler/Errors/ts_no_work.tjp +4 -2
  601. data/test/TestSuite/Scheduler/Errors/ts_res_new_task.tjp +5 -2
  602. data/test/TestSuite/Scheduler/Errors/ts_work_too_high.tjp +4 -2
  603. data/test/TestSuite/Scheduler/Errors/ts_work_too_low.tjp +4 -2
  604. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  605. data/test/TestSuite/StatusSheets/run +1 -1
  606. data/test/TestSuite/Syntax/Correct/Booking.tjp +0 -5
  607. data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
  608. data/test/TestSuite/Syntax/Correct/EnvVar.tjp +12 -0
  609. data/test/TestSuite/Syntax/Correct/Freeze.tjp +1 -3
  610. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +9 -5
  611. data/test/TestSuite/Syntax/Correct/Priority.tjp +22 -11
  612. data/test/TestSuite/Syntax/Correct/Scenario.tjp +1 -1
  613. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +2 -0
  614. data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -4
  615. data/test/TestSuite/Syntax/Correct/css/tjmanual.css +20 -0
  616. data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -6
  617. data/test/TestSuite/Syntax/Correct/tutorial.tjp +2 -1
  618. data/test/TestSuite/Syntax/Errors/no_own_resource_booking.tjp +16 -0
  619. data/test/TestSuite/Syntax/Errors/no_own_task_booking.tjp +16 -0
  620. data/test/TestSuite/Syntax/Errors/resourceroot_leaf.tjp +10 -0
  621. data/test/TestSuite/Syntax/Errors/runaway_token.tjp +8 -0
  622. data/test/TestSuite/Syntax/Errors/sorting_bsi.tjp +11 -0
  623. data/test/TestSuite/Syntax/Errors/ss_no_tracking_scenario.tjp +14 -0
  624. data/test/TestSuite/Syntax/Errors/taskroot_leaf.tjp +8 -0
  625. data/test/TestSuite/Syntax/Errors/ts_bad_priority.tjp +4 -2
  626. data/test/TestSuite/Syntax/Errors/ts_default_details.tjp +4 -2
  627. data/test/TestSuite/Syntax/Errors/ts_default_summary.tjp +4 -2
  628. data/test/TestSuite/Syntax/Errors/ts_duplicate_task.tjp +4 -2
  629. data/test/TestSuite/Syntax/Errors/ts_end_too_early.tjp +4 -2
  630. data/test/TestSuite/Syntax/Errors/ts_headline_too_long.tjp +4 -2
  631. data/test/TestSuite/Syntax/Errors/ts_no_headline2.tjp +4 -2
  632. data/test/TestSuite/Syntax/Errors/ts_no_tracking_scenario.tjp +14 -0
  633. data/test/TestSuite/Syntax/Errors/ts_summary_too_long.tjp +4 -2
  634. data/test/TestSuite/Syntax/Errors/unknown_env_var.tjp +7 -0
  635. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  636. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  637. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  638. data/test/test_Export-Reports.rb +3 -0
  639. data/test/test_Journal.rb +4 -4
  640. data/test/test_PropertySet.rb +5 -5
  641. data/test/test_Syntax.rb +3 -0
  642. data/test/test_WorkingHours.rb +11 -18
  643. metadata +1012 -649
  644. data/lib/exchangebug.rb +0 -42
  645. data/lib/ruby-signal-bug.rb +0 -55
  646. data/spec/tj3client.log +0 -23
  647. data/test/TestSuite/CSV-Reports/alert.tjp +0 -9
  648. data/test/TestSuite/CSV-Reports/refs/alert.csv +0 -15
  649. data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +0 -41
  650. data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -89
  651. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -79
  652. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  653. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  654. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.csv +0 -1
  655. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -78
  656. data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -6
  657. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  658. data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +0 -66
  659. data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +0 -413
  660. data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
  661. data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
  662. data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
  663. data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
  664. data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
  665. data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
  666. data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
  667. data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
  668. data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
  669. data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
  670. data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
  671. data/test/TestSuite/ReportGenerator/Correct/opennodes-1.csv +0 -2
  672. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  673. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  674. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  675. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -86
  676. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +0 -413
  677. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  678. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  679. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  680. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  681. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  682. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  683. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  684. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  685. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  686. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  687. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  688. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
  689. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  690. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  691. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
  692. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +0 -33
  693. data/test/TestSuite/Syntax/Correct/DST.tjp +0 -11
  694. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
  695. data/test/TestSuite/Syntax/Correct/niku.xml +0 -30
  696. data/test/TestSuite/Syntax/Errors/sorting_wbs.tjp +0 -11
  697. data/test/TestSuite/TimeSheets/uu.txt +0 -29
@@ -0,0 +1,2851 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
7
+
8
+ <title>Class: TaskJuggler::PropertyTreeNode</title>
9
+
10
+ <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="../js/jquery.js" type="text/javascript"
13
+ charset="utf-8"></script>
14
+ <script src="../js/thickbox-compressed.js" type="text/javascript"
15
+ charset="utf-8"></script>
16
+ <script src="../js/quicksearch.js" type="text/javascript"
17
+ charset="utf-8"></script>
18
+ <script src="../js/darkfish.js" type="text/javascript"
19
+ charset="utf-8"></script>
20
+
21
+ </head>
22
+ <body class="class">
23
+
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="../index.html">Home</a>
29
+ <a href="../index.html#classes">Classes</a>
30
+ <a href="../index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="file-metadata">
36
+ <div id="file-list-section" class="section">
37
+ <h3 class="section-header">In Files</h3>
38
+ <div class="section-body">
39
+ <ul>
40
+
41
+ <li><a href="../lib/taskjuggler/PropertyTreeNode_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="lib/taskjuggler/PropertyTreeNode.rb">lib/taskjuggler/PropertyTreeNode.rb</a></li>
43
+
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+
49
+ </div>
50
+
51
+ <div id="class-metadata">
52
+
53
+ <!-- Parent Class -->
54
+
55
+ <div id="parent-class-section" class="section">
56
+ <h3 class="section-header">Parent</h3>
57
+
58
+ <p class="link"><a href="../Object.html">Object</a></p>
59
+
60
+ </div>
61
+
62
+
63
+ <!-- Namespace Contents -->
64
+
65
+
66
+ <!-- Method Quickref -->
67
+
68
+ <div id="method-list-section" class="section">
69
+ <h3 class="section-header">Methods</h3>
70
+ <ul class="link-list">
71
+
72
+ <li><a href="#method-c-new">::new</a></li>
73
+
74
+ <li><a href="#method-i-%5B%5D">#[]</a></li>
75
+
76
+ <li><a href="#method-i-%5B%5D%3D">#[]=</a></li>
77
+
78
+ <li><a href="#method-i-addChild">#addChild</a></li>
79
+
80
+ <li><a href="#method-i-adopt">#adopt</a></li>
81
+
82
+ <li><a href="#method-i-all">#all</a></li>
83
+
84
+ <li><a href="#method-i-allLeaves">#allLeaves</a></li>
85
+
86
+ <li><a href="#method-i-ancestors">#ancestors</a></li>
87
+
88
+ <li><a href="#method-i-attributeDefinition">#attributeDefinition</a></li>
89
+
90
+ <li><a href="#method-i-backupAttributes">#backupAttributes</a></li>
91
+
92
+ <li><a href="#method-i-checkFailsAndWarnings">#checkFailsAndWarnings</a></li>
93
+
94
+ <li><a href="#method-i-container%3F">#container?</a></li>
95
+
96
+ <li><a href="#method-i-deep_clone">#deep_clone</a></li>
97
+
98
+ <li><a href="#method-i-error">#error</a></li>
99
+
100
+ <li><a href="#method-i-fullId">#fullId</a></li>
101
+
102
+ <li><a href="#method-i-get">#get</a></li>
103
+
104
+ <li><a href="#method-i-getAttribute">#getAttribute</a></li>
105
+
106
+ <li><a href="#method-i-getBSIndicies">#getBSIndicies</a></li>
107
+
108
+ <li><a href="#method-i-getIndicies">#getIndicies</a></li>
109
+
110
+ <li><a href="#method-i-indent">#indent</a></li>
111
+
112
+ <li><a href="#method-i-info">#info</a></li>
113
+
114
+ <li><a href="#method-i-inheritAttributes">#inheritAttributes</a></li>
115
+
116
+ <li><a href="#method-i-inherited">#inherited</a></li>
117
+
118
+ <li><a href="#method-i-isChildOf%3F">#isChildOf?</a></li>
119
+
120
+ <li><a href="#method-i-journalMessages">#journalMessages</a></li>
121
+
122
+ <li><a href="#method-i-kids">#kids</a></li>
123
+
124
+ <li><a href="#method-i-leaf%3F">#leaf?</a></li>
125
+
126
+ <li><a href="#method-i-level">#level</a></li>
127
+
128
+ <li><a href="#method-i-levelSeqNo">#levelSeqNo</a></li>
129
+
130
+ <li><a href="#method-i-method_missing">#method_missing</a></li>
131
+
132
+ <li><a href="#method-i-modified%3F">#modified?</a></li>
133
+
134
+ <li><a href="#method-i-parents">#parents</a></li>
135
+
136
+ <li><a href="#method-i-provided">#provided</a></li>
137
+
138
+ <li><a href="#method-i-query_alert">#query_alert</a></li>
139
+
140
+ <li><a href="#method-i-query_alertmessages">#query_alertmessages</a></li>
141
+
142
+ <li><a href="#method-i-query_alertsummaries">#query_alertsummaries</a></li>
143
+
144
+ <li><a href="#method-i-query_alerttrend">#query_alerttrend</a></li>
145
+
146
+ <li><a href="#method-i-query_journalmessages">#query_journalmessages</a></li>
147
+
148
+ <li><a href="#method-i-query_journalsummaries">#query_journalsummaries</a></li>
149
+
150
+ <li><a href="#method-i-restoreAttributes">#restoreAttributes</a></li>
151
+
152
+ <li><a href="#method-i-root">#root</a></li>
153
+
154
+ <li><a href="#method-i-set">#set</a></li>
155
+
156
+ <li><a href="#method-i-warning">#warning</a></li>
157
+
158
+ </ul>
159
+ </div>
160
+
161
+
162
+ <!-- Included Modules -->
163
+
164
+ </div>
165
+
166
+ <div id="project-metadata">
167
+
168
+
169
+ <div id="fileindex-section" class="section project-section">
170
+ <h3 class="section-header">Files</h3>
171
+ <ul>
172
+
173
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
174
+
175
+ <li class="file"><a href="../COPYING.html">COPYING</a></li>
176
+
177
+ <li class="file"><a href="../README_rdoc.html">README.rdoc</a></li>
178
+
179
+ </ul>
180
+ </div>
181
+
182
+
183
+ <div id="classindex-section" class="section project-section">
184
+ <h3 class="section-header">Class Index
185
+ <span class="search-toggle"><img src="../images/find.png"
186
+ height="16" width="16" alt="[+]"
187
+ title="show/hide quicksearch" /></span></h3>
188
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
189
+ <fieldset>
190
+ <legend>Quicksearch</legend>
191
+ <input type="text" name="quicksearch" value=""
192
+ class="quicksearch-field" />
193
+ </fieldset>
194
+ </form>
195
+
196
+ <ul class="link-list">
197
+
198
+ <li><a href="../TaskJuggler.html">TaskJuggler</a></li>
199
+
200
+ <li><a href="../TaskJuggler/Account.html">TaskJuggler::Account</a></li>
201
+
202
+ <li><a href="../TaskJuggler/AccountAttribute.html">TaskJuggler::AccountAttribute</a></li>
203
+
204
+ <li><a href="../TaskJuggler/AccountScenario.html">TaskJuggler::AccountScenario</a></li>
205
+
206
+ <li><a href="../TaskJuggler/Allocation.html">TaskJuggler::Allocation</a></li>
207
+
208
+ <li><a href="../TaskJuggler/AllocationAttribute.html">TaskJuggler::AllocationAttribute</a></li>
209
+
210
+ <li><a href="../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li>
211
+
212
+ <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
213
+
214
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
215
+
216
+ <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
217
+
218
+ <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
219
+
220
+ <li><a href="../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li>
221
+
222
+ <li><a href="../TaskJuggler/BooleanAttribute.html">TaskJuggler::BooleanAttribute</a></li>
223
+
224
+ <li><a href="../TaskJuggler/CSVFile.html">TaskJuggler::CSVFile</a></li>
225
+
226
+ <li><a href="../TaskJuggler/CellSettingPattern.html">TaskJuggler::CellSettingPattern</a></li>
227
+
228
+ <li><a href="../TaskJuggler/CellSettingPatternList.html">TaskJuggler::CellSettingPatternList</a></li>
229
+
230
+ <li><a href="../TaskJuggler/Charge.html">TaskJuggler::Charge</a></li>
231
+
232
+ <li><a href="../TaskJuggler/ChargeListAttribute.html">TaskJuggler::ChargeListAttribute</a></li>
233
+
234
+ <li><a href="../TaskJuggler/ChargeSet.html">TaskJuggler::ChargeSet</a></li>
235
+
236
+ <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
237
+
238
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
239
+
240
+ <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
241
+
242
+ <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
243
+
244
+ <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
245
+
246
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
247
+
248
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
249
+
250
+ <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
251
+
252
+ <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
253
+
254
+ <li><a href="../TaskJuggler/DependencyListAttribute.html">TaskJuggler::DependencyListAttribute</a></li>
255
+
256
+ <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
257
+
258
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
259
+
260
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
261
+
262
+ <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
263
+
264
+ <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
265
+
266
+ <li><a href="../TaskJuggler/FloatAttribute.html">TaskJuggler::FloatAttribute</a></li>
267
+
268
+ <li><a href="../TaskJuggler/FormatListAttribute.html">TaskJuggler::FormatListAttribute</a></li>
269
+
270
+ <li><a href="../TaskJuggler/GanttChart.html">TaskJuggler::GanttChart</a></li>
271
+
272
+ <li><a href="../TaskJuggler/GanttContainer.html">TaskJuggler::GanttContainer</a></li>
273
+
274
+ <li><a href="../TaskJuggler/GanttHeader.html">TaskJuggler::GanttHeader</a></li>
275
+
276
+ <li><a href="../TaskJuggler/GanttHeaderScaleItem.html">TaskJuggler::GanttHeaderScaleItem</a></li>
277
+
278
+ <li><a href="../TaskJuggler/GanttLine.html">TaskJuggler::GanttLine</a></li>
279
+
280
+ <li><a href="../TaskJuggler/GanttLoadStack.html">TaskJuggler::GanttLoadStack</a></li>
281
+
282
+ <li><a href="../TaskJuggler/GanttMilestone.html">TaskJuggler::GanttMilestone</a></li>
283
+
284
+ <li><a href="../TaskJuggler/GanttRouter.html">TaskJuggler::GanttRouter</a></li>
285
+
286
+ <li><a href="../TaskJuggler/GanttTaskBar.html">TaskJuggler::GanttTaskBar</a></li>
287
+
288
+ <li><a href="../TaskJuggler/HTMLDocument.html">TaskJuggler::HTMLDocument</a></li>
289
+
290
+ <li><a href="../TaskJuggler/HTMLElements.html">TaskJuggler::HTMLElements</a></li>
291
+
292
+ <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
293
+
294
+ <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
295
+
296
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
297
+
298
+ <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
299
+
300
+ <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
301
+
302
+ <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
303
+
304
+ <li><a href="../TaskJuggler/JournalEntry.html">TaskJuggler::JournalEntry</a></li>
305
+
306
+ <li><a href="../TaskJuggler/JournalEntryList.html">TaskJuggler::JournalEntryList</a></li>
307
+
308
+ <li><a href="../TaskJuggler/KeywordArray.html">TaskJuggler::KeywordArray</a></li>
309
+
310
+ <li><a href="../TaskJuggler/KeywordDocumentation.html">TaskJuggler::KeywordDocumentation</a></li>
311
+
312
+ <li><a href="../TaskJuggler/Limits.html">TaskJuggler::Limits</a></li>
313
+
314
+ <li><a href="../TaskJuggler/Limits/Limit.html">TaskJuggler::Limits::Limit</a></li>
315
+
316
+ <li><a href="../TaskJuggler/LimitsAttribute.html">TaskJuggler::LimitsAttribute</a></li>
317
+
318
+ <li><a href="../TaskJuggler/ListAttributeBase.html">TaskJuggler::ListAttributeBase</a></li>
319
+
320
+ <li><a href="../TaskJuggler/Log.html">TaskJuggler::Log</a></li>
321
+
322
+ <li><a href="../TaskJuggler/LogFile.html">TaskJuggler::LogFile</a></li>
323
+
324
+ <li><a href="../TaskJuggler/LogicalAttribute.html">TaskJuggler::LogicalAttribute</a></li>
325
+
326
+ <li><a href="../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li>
327
+
328
+ <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
329
+
330
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
331
+
332
+ <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
333
+
334
+ <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
335
+
336
+ <li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
337
+
338
+ <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
339
+
340
+ <li><a href="../TaskJuggler/ManagerStatusRecord.html">TaskJuggler::ManagerStatusRecord</a></li>
341
+
342
+ <li><a href="../TaskJuggler/Message.html">TaskJuggler::Message</a></li>
343
+
344
+ <li><a href="../TaskJuggler/MessageHandler.html">TaskJuggler::MessageHandler</a></li>
345
+
346
+ <li><a href="../TaskJuggler/Navigator.html">TaskJuggler::Navigator</a></li>
347
+
348
+ <li><a href="../TaskJuggler/NavigatorElement.html">TaskJuggler::NavigatorElement</a></li>
349
+
350
+ <li><a href="../TaskJuggler/NikuProject.html">TaskJuggler::NikuProject</a></li>
351
+
352
+ <li><a href="../TaskJuggler/NikuReport.html">TaskJuggler::NikuReport</a></li>
353
+
354
+ <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
355
+
356
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
357
+
358
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
359
+
360
+ <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
361
+
362
+ <li><a href="../TaskJuggler/ProcessIntercomIface.html">TaskJuggler::ProcessIntercomIface</a></li>
363
+
364
+ <li><a href="../TaskJuggler/Project.html">TaskJuggler::Project</a></li>
365
+
366
+ <li><a href="../TaskJuggler/ProjectBroker.html">TaskJuggler::ProjectBroker</a></li>
367
+
368
+ <li><a href="../TaskJuggler/ProjectBrokerIface.html">TaskJuggler::ProjectBrokerIface</a></li>
369
+
370
+ <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
371
+
372
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
373
+
374
+ <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
375
+
376
+ <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
377
+
378
+ <li><a href="../TaskJuggler/ProjectServerIface.html">TaskJuggler::ProjectServerIface</a></li>
379
+
380
+ <li><a href="../TaskJuggler/PropertyAttribute.html">TaskJuggler::PropertyAttribute</a></li>
381
+
382
+ <li><a href="../TaskJuggler/PropertyList.html">TaskJuggler::PropertyList</a></li>
383
+
384
+ <li><a href="../TaskJuggler/PropertySet.html">TaskJuggler::PropertySet</a></li>
385
+
386
+ <li><a href="../TaskJuggler/PropertyTreeNode.html">TaskJuggler::PropertyTreeNode</a></li>
387
+
388
+ <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
389
+
390
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
391
+
392
+ <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
393
+
394
+ <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
395
+
396
+ <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
397
+
398
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
399
+
400
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
401
+
402
+ <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
403
+
404
+ <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
405
+
406
+ <li><a href="../TaskJuggler/ReferenceAttribute.html">TaskJuggler::ReferenceAttribute</a></li>
407
+
408
+ <li><a href="../TaskJuggler/Report.html">TaskJuggler::Report</a></li>
409
+
410
+ <li><a href="../TaskJuggler/ReportBase.html">TaskJuggler::ReportBase</a></li>
411
+
412
+ <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
413
+
414
+ <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
415
+
416
+ <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
417
+
418
+ <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
419
+
420
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
421
+
422
+ <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
423
+
424
+ <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
425
+
426
+ <li><a href="../TaskJuggler/ReportTableColumn.html">TaskJuggler::ReportTableColumn</a></li>
427
+
428
+ <li><a href="../TaskJuggler/ReportTableLegend.html">TaskJuggler::ReportTableLegend</a></li>
429
+
430
+ <li><a href="../TaskJuggler/ReportTableLine.html">TaskJuggler::ReportTableLine</a></li>
431
+
432
+ <li><a href="../TaskJuggler/Resource.html">TaskJuggler::Resource</a></li>
433
+
434
+ <li><a href="../TaskJuggler/ResourceListAttribute.html">TaskJuggler::ResourceListAttribute</a></li>
435
+
436
+ <li><a href="../TaskJuggler/ResourceListRE.html">TaskJuggler::ResourceListRE</a></li>
437
+
438
+ <li><a href="../TaskJuggler/ResourceScenario.html">TaskJuggler::ResourceScenario</a></li>
439
+
440
+ <li><a href="../TaskJuggler/RichText.html">TaskJuggler::RichText</a></li>
441
+
442
+ <li><a href="../TaskJuggler/RichTextAttribute.html">TaskJuggler::RichTextAttribute</a></li>
443
+
444
+ <li><a href="../TaskJuggler/RichTextDocument.html">TaskJuggler::RichTextDocument</a></li>
445
+
446
+ <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
447
+
448
+ <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
449
+
450
+ <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
451
+
452
+ <li><a href="../TaskJuggler/RichTextImage.html">TaskJuggler::RichTextImage</a></li>
453
+
454
+ <li><a href="../TaskJuggler/RichTextIntermediate.html">TaskJuggler::RichTextIntermediate</a></li>
455
+
456
+ <li><a href="../TaskJuggler/RichTextParser.html">TaskJuggler::RichTextParser</a></li>
457
+
458
+ <li><a href="../TaskJuggler/RichTextScanner.html">TaskJuggler::RichTextScanner</a></li>
459
+
460
+ <li><a href="../TaskJuggler/RichTextSnip.html">TaskJuggler::RichTextSnip</a></li>
461
+
462
+ <li><a href="../TaskJuggler/RichTextSyntaxRules.html">TaskJuggler::RichTextSyntaxRules</a></li>
463
+
464
+ <li><a href="../TaskJuggler/Scenario.html">TaskJuggler::Scenario</a></li>
465
+
466
+ <li><a href="../TaskJuggler/ScenarioData.html">TaskJuggler::ScenarioData</a></li>
467
+
468
+ <li><a href="../TaskJuggler/ScenarioListAttribute.html">TaskJuggler::ScenarioListAttribute</a></li>
469
+
470
+ <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
471
+
472
+ <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
473
+
474
+ <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
475
+
476
+ <li><a href="../TaskJuggler/SheetSender.html">TaskJuggler::SheetSender</a></li>
477
+
478
+ <li><a href="../TaskJuggler/Shift.html">TaskJuggler::Shift</a></li>
479
+
480
+ <li><a href="../TaskJuggler/ShiftAssignment.html">TaskJuggler::ShiftAssignment</a></li>
481
+
482
+ <li><a href="../TaskJuggler/ShiftAssignments.html">TaskJuggler::ShiftAssignments</a></li>
483
+
484
+ <li><a href="../TaskJuggler/ShiftAssignmentsAttribute.html">TaskJuggler::ShiftAssignmentsAttribute</a></li>
485
+
486
+ <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
487
+
488
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
489
+
490
+ <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
491
+
492
+ <li><a href="../TaskJuggler/StatusSheetReceiver.html">TaskJuggler::StatusSheetReceiver</a></li>
493
+
494
+ <li><a href="../TaskJuggler/StatusSheetReport.html">TaskJuggler::StatusSheetReport</a></li>
495
+
496
+ <li><a href="../TaskJuggler/StatusSheetSender.html">TaskJuggler::StatusSheetSender</a></li>
497
+
498
+ <li><a href="../TaskJuggler/StdIoWrapper.html">TaskJuggler::StdIoWrapper</a></li>
499
+
500
+ <li><a href="../TaskJuggler/StringAttribute.html">TaskJuggler::StringAttribute</a></li>
501
+
502
+ <li><a href="../TaskJuggler/SymbolAttribute.html">TaskJuggler::SymbolAttribute</a></li>
503
+
504
+ <li><a href="../TaskJuggler/SyntaxReference.html">TaskJuggler::SyntaxReference</a></li>
505
+
506
+ <li><a href="../TaskJuggler/TOCEntry.html">TaskJuggler::TOCEntry</a></li>
507
+
508
+ <li><a href="../TaskJuggler/TSResourceRecord.html">TaskJuggler::TSResourceRecord</a></li>
509
+
510
+ <li><a href="../TaskJuggler/TSTaskRecord.html">TaskJuggler::TSTaskRecord</a></li>
511
+
512
+ <li><a href="../TaskJuggler/TableColumnDefinition.html">TaskJuggler::TableColumnDefinition</a></li>
513
+
514
+ <li><a href="../TaskJuggler/TableOfContents.html">TaskJuggler::TableOfContents</a></li>
515
+
516
+ <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
517
+
518
+ <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
519
+
520
+ <li><a href="../TaskJuggler/TaskDepListAttribute.html">TaskJuggler::TaskDepListAttribute</a></li>
521
+
522
+ <li><a href="../TaskJuggler/TaskDependency.html">TaskJuggler::TaskDependency</a></li>
523
+
524
+ <li><a href="../TaskJuggler/TaskListAttribute.html">TaskJuggler::TaskListAttribute</a></li>
525
+
526
+ <li><a href="../TaskJuggler/TaskListRE.html">TaskJuggler::TaskListRE</a></li>
527
+
528
+ <li><a href="../TaskJuggler/TaskScenario.html">TaskJuggler::TaskScenario</a></li>
529
+
530
+ <li><a href="../TaskJuggler/TernarySearchTree.html">TaskJuggler::TernarySearchTree</a></li>
531
+
532
+ <li><a href="../TaskJuggler/TextFormatter.html">TaskJuggler::TextFormatter</a></li>
533
+
534
+ <li><a href="../TaskJuggler/TextParser.html">TaskJuggler::TextParser</a></li>
535
+
536
+ <li><a href="../TaskJuggler/TextParser/Macro.html">TaskJuggler::TextParser::Macro</a></li>
537
+
538
+ <li><a href="../TaskJuggler/TextParser/MacroTable.html">TaskJuggler::TextParser::MacroTable</a></li>
539
+
540
+ <li><a href="../TaskJuggler/TextParser/Pattern.html">TaskJuggler::TextParser::Pattern</a></li>
541
+
542
+ <li><a href="../TaskJuggler/TextParser/Rule.html">TaskJuggler::TextParser::Rule</a></li>
543
+
544
+ <li><a href="../TaskJuggler/TextParser/Scanner.html">TaskJuggler::TextParser::Scanner</a></li>
545
+
546
+ <li><a href="../TaskJuggler/TextParser/Scanner/BufferStreamHandle.html">TaskJuggler::TextParser::Scanner::BufferStreamHandle</a></li>
547
+
548
+ <li><a href="../TaskJuggler/TextParser/Scanner/FileStreamHandle.html">TaskJuggler::TextParser::Scanner::FileStreamHandle</a></li>
549
+
550
+ <li><a href="../TaskJuggler/TextParser/Scanner/MacroStackEntry.html">TaskJuggler::TextParser::Scanner::MacroStackEntry</a></li>
551
+
552
+ <li><a href="../TaskJuggler/TextParser/Scanner/StreamHandle.html">TaskJuggler::TextParser::Scanner::StreamHandle</a></li>
553
+
554
+ <li><a href="../TaskJuggler/TextParser/SourceFileInfo.html">TaskJuggler::TextParser::SourceFileInfo</a></li>
555
+
556
+ <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
557
+
558
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
559
+
560
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
561
+
562
+ <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
563
+
564
+ <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
565
+
566
+ <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
567
+
568
+ <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
569
+
570
+ <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
571
+
572
+ <li><a href="../TaskJuggler/TimeSheetRecord.html">TaskJuggler::TimeSheetRecord</a></li>
573
+
574
+ <li><a href="../TaskJuggler/TimeSheetReport.html">TaskJuggler::TimeSheetReport</a></li>
575
+
576
+ <li><a href="../TaskJuggler/TimeSheetSender.html">TaskJuggler::TimeSheetSender</a></li>
577
+
578
+ <li><a href="../TaskJuggler/TimeSheetSummary.html">TaskJuggler::TimeSheetSummary</a></li>
579
+
580
+ <li><a href="../TaskJuggler/TimeSheets.html">TaskJuggler::TimeSheets</a></li>
581
+
582
+ <li><a href="../TaskJuggler/Tj3.html">TaskJuggler::Tj3</a></li>
583
+
584
+ <li><a href="../TaskJuggler/Tj3AppBase.html">TaskJuggler::Tj3AppBase</a></li>
585
+
586
+ <li><a href="../TaskJuggler/Tj3Client.html">TaskJuggler::Tj3Client</a></li>
587
+
588
+ <li><a href="../TaskJuggler/Tj3Daemon.html">TaskJuggler::Tj3Daemon</a></li>
589
+
590
+ <li><a href="../TaskJuggler/Tj3Man.html">TaskJuggler::Tj3Man</a></li>
591
+
592
+ <li><a href="../TaskJuggler/Tj3SheetAppBase.html">TaskJuggler::Tj3SheetAppBase</a></li>
593
+
594
+ <li><a href="../TaskJuggler/Tj3SsReceiver.html">TaskJuggler::Tj3SsReceiver</a></li>
595
+
596
+ <li><a href="../TaskJuggler/Tj3SsSender.html">TaskJuggler::Tj3SsSender</a></li>
597
+
598
+ <li><a href="../TaskJuggler/Tj3TsReceiver.html">TaskJuggler::Tj3TsReceiver</a></li>
599
+
600
+ <li><a href="../TaskJuggler/Tj3TsSender.html">TaskJuggler::Tj3TsSender</a></li>
601
+
602
+ <li><a href="../TaskJuggler/Tj3TsSummary.html">TaskJuggler::Tj3TsSummary</a></li>
603
+
604
+ <li><a href="../TaskJuggler/TjException.html">TaskJuggler::TjException</a></li>
605
+
606
+ <li><a href="../TaskJuggler/TjRuntimeError.html">TaskJuggler::TjRuntimeError</a></li>
607
+
608
+ <li><a href="../TaskJuggler/TjTime.html">TaskJuggler::TjTime</a></li>
609
+
610
+ <li><a href="../TaskJuggler/TjpExample.html">TaskJuggler::TjpExample</a></li>
611
+
612
+ <li><a href="../TaskJuggler/TjpExportRE.html">TaskJuggler::TjpExportRE</a></li>
613
+
614
+ <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
615
+
616
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
617
+
618
+ <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
619
+
620
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
621
+
622
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
623
+
624
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
625
+
626
+ <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
627
+
628
+ <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
629
+
630
+ <li><a href="../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li>
631
+
632
+ <li><a href="../TaskJuggler/XMLComment.html">TaskJuggler::XMLComment</a></li>
633
+
634
+ <li><a href="../TaskJuggler/XMLDocument.html">TaskJuggler::XMLDocument</a></li>
635
+
636
+ <li><a href="../TaskJuggler/XMLElement.html">TaskJuggler::XMLElement</a></li>
637
+
638
+ <li><a href="../TaskJuggler/XMLNamedText.html">TaskJuggler::XMLNamedText</a></li>
639
+
640
+ <li><a href="../TaskJuggler/XMLText.html">TaskJuggler::XMLText</a></li>
641
+
642
+ <li><a href="../Diff.html">Diff</a></li>
643
+
644
+ <li><a href="../Diff/Hunk.html">Diff::Hunk</a></li>
645
+
646
+ <li><a href="../AppConfig.html">AppConfig</a></li>
647
+
648
+ <li><a href="../Diffable.html">Diffable</a></li>
649
+
650
+ <li><a href="../DiffableString.html">DiffableString</a></li>
651
+
652
+ <li><a href="../Object.html">Object</a></li>
653
+
654
+ <li><a href="../RuntimeConfig.html">RuntimeConfig</a></li>
655
+
656
+ <li><a href="../String.html">String</a></li>
657
+
658
+ </ul>
659
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
660
+ </div>
661
+
662
+
663
+ </div>
664
+ </div>
665
+
666
+ <div id="documentation">
667
+ <h1 class="class">TaskJuggler::PropertyTreeNode</h1>
668
+
669
+ <div id="description">
670
+ <p>
671
+ This class is the base object for all <a href="Project.html">Project</a>
672
+ properties. A <a href="Project.html">Project</a> property is a e. g. a <a
673
+ href="Task.html">Task</a>, a <a href="Resource.html">Resource</a> or other
674
+ objects. Such properties can be arranged in tree form by assigning child
675
+ properties to an existing property. The parent object needs to exist at
676
+ object creation time. The <a
677
+ href="PropertyTreeNode.html">PropertyTreeNode</a> class holds all data and
678
+ methods that are common to the different types of properties. Each property
679
+ can have a set of predifined attributes. The <a
680
+ href="PropertySet.html">PropertySet</a> class holds collections of the same
681
+ <a href="PropertyTreeNode.html">PropertyTreeNode</a> objects and the
682
+ defined attributes. Each <a href="PropertySet.html">PropertySet</a> has a
683
+ predefined set of attributes, but the attribute set can be extended by the
684
+ user. E.g. a task has the predefined attribute &#8216;start&#8217; and
685
+ &#8216;end&#8217; date. The user can extend tasks with a user defined
686
+ attribute like an URL that contains more details about the task.
687
+ </p>
688
+
689
+ </div>
690
+
691
+ <!-- Constants -->
692
+
693
+
694
+ <!-- Attributes -->
695
+
696
+ <div id="attribute-method-details" class="method-section section">
697
+ <h3 class="section-header">Attributes</h3>
698
+
699
+
700
+ <div id="property-et-attribute-method" class="method-detail">
701
+ <a name="propertySet"></a>
702
+
703
+ <div class="method-heading attribute-method-heading">
704
+ <span class="method-name">propertySet</span><span
705
+ class="attribute-access-type">[R]</span>
706
+ </div>
707
+
708
+ <div class="method-description">
709
+
710
+
711
+
712
+ </div>
713
+ </div>
714
+
715
+ <div id="id-attribute-method" class="method-detail">
716
+ <a name="id"></a>
717
+
718
+ <div class="method-heading attribute-method-heading">
719
+ <span class="method-name">id</span><span
720
+ class="attribute-access-type">[R]</span>
721
+ </div>
722
+
723
+ <div class="method-description">
724
+
725
+
726
+
727
+ </div>
728
+ </div>
729
+
730
+ <div id="parent-attribute-method" class="method-detail">
731
+ <a name="parent"></a>
732
+
733
+ <div class="method-heading attribute-method-heading">
734
+ <span class="method-name">parent</span><span
735
+ class="attribute-access-type">[R]</span>
736
+ </div>
737
+
738
+ <div class="method-description">
739
+
740
+
741
+
742
+ </div>
743
+ </div>
744
+
745
+ <div id="project-attribute-method" class="method-detail">
746
+ <a name="project"></a>
747
+
748
+ <div class="method-heading attribute-method-heading">
749
+ <span class="method-name">project</span><span
750
+ class="attribute-access-type">[R]</span>
751
+ </div>
752
+
753
+ <div class="method-description">
754
+
755
+
756
+
757
+ </div>
758
+ </div>
759
+
760
+ <div id="sequence-o-attribute-method" class="method-detail">
761
+ <a name="sequenceNo"></a>
762
+
763
+ <div class="method-heading attribute-method-heading">
764
+ <span class="method-name">sequenceNo</span><span
765
+ class="attribute-access-type">[R]</span>
766
+ </div>
767
+
768
+ <div class="method-description">
769
+
770
+
771
+
772
+ </div>
773
+ </div>
774
+
775
+ <div id="children-attribute-method" class="method-detail">
776
+ <a name="children"></a>
777
+
778
+ <div class="method-heading attribute-method-heading">
779
+ <span class="method-name">children</span><span
780
+ class="attribute-access-type">[R]</span>
781
+ </div>
782
+
783
+ <div class="method-description">
784
+
785
+
786
+
787
+ </div>
788
+ </div>
789
+
790
+ <div id="adoptees-attribute-method" class="method-detail">
791
+ <a name="adoptees"></a>
792
+
793
+ <div class="method-heading attribute-method-heading">
794
+ <span class="method-name">adoptees</span><span
795
+ class="attribute-access-type">[R]</span>
796
+ </div>
797
+
798
+ <div class="method-description">
799
+
800
+
801
+
802
+ </div>
803
+ </div>
804
+
805
+ <div id="name-attribute-method" class="method-detail">
806
+ <a name="name"></a>
807
+
808
+ <a name="name="></a>
809
+
810
+ <div class="method-heading attribute-method-heading">
811
+ <span class="method-name">name</span><span
812
+ class="attribute-access-type">[RW]</span>
813
+ </div>
814
+
815
+ <div class="method-description">
816
+
817
+
818
+
819
+ </div>
820
+ </div>
821
+
822
+ <div id="source-ile-nfo-attribute-method" class="method-detail">
823
+ <a name="sourceFileInfo"></a>
824
+
825
+ <a name="sourceFileInfo="></a>
826
+
827
+ <div class="method-heading attribute-method-heading">
828
+ <span class="method-name">sourceFileInfo</span><span
829
+ class="attribute-access-type">[RW]</span>
830
+ </div>
831
+
832
+ <div class="method-description">
833
+
834
+
835
+
836
+ </div>
837
+ </div>
838
+
839
+ <div id="data-attribute-method" class="method-detail">
840
+ <a name="data"></a>
841
+
842
+ <div class="method-heading attribute-method-heading">
843
+ <span class="method-name">data</span><span
844
+ class="attribute-access-type">[R]</span>
845
+ </div>
846
+
847
+ <div class="method-description">
848
+
849
+
850
+
851
+ </div>
852
+ </div>
853
+
854
+ </div>
855
+
856
+
857
+ <!-- Methods -->
858
+
859
+ <div id="public-class-method-details" class="method-section section">
860
+ <h3 class="section-header">Public Class Methods</h3>
861
+
862
+
863
+ <div id="new-method" class="method-detail ">
864
+ <a name="method-c-new"></a>
865
+
866
+ <div class="method-heading">
867
+
868
+ <span class="method-name">new</span><span
869
+ class="method-args">(propertySet, id, name, parent)</span>
870
+ <span class="method-click-advice">click to toggle source</span>
871
+
872
+ </div>
873
+
874
+ <div class="method-description">
875
+
876
+ <p>
877
+ Create a new <a href="PropertyTreeNode.html">PropertyTreeNode</a> object.
878
+ <em>propertySet</em> is the <a href="PropertySet.html">PropertySet</a> that
879
+ this <a href="PropertyTreeNode.html">PropertyTreeNode</a> object belongs
880
+ to. The <a href="PropertySet.html">PropertySet</a> determines the
881
+ attributes that are common to all Nodes in the set. <em>id</em> is a <a
882
+ href="../String.html">String</a> that is unique in the namespace of the
883
+ set. <em>name</em> is a user readable, short description of the object.
884
+ <em>parent</em> is the <a href="PropertyTreeNode.html">PropertyTreeNode</a>
885
+ that sits above this node in the object hierachy. A root object has a
886
+ <em>parent</em> of nil. For sets with hierachical name spaces, parent can
887
+ be nil and specified by a hierachical <em>id</em> (e. g.
888
+ &#8216;father.son&#8217;).
889
+ </p>
890
+
891
+
892
+
893
+ <div class="method-source-code"
894
+ id="new-source">
895
+ <pre>
896
+ <span class="ruby-comment cmt"># File lib/taskjuggler/PropertyTreeNode.rb, line 43</span>
897
+ 43: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">propertySet</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">parent</span>)
898
+ 44: <span class="ruby-ivar">@propertySet</span> = <span class="ruby-identifier">propertySet</span>
899
+ 45: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">propertySet</span>.<span class="ruby-identifier">project</span>
900
+ 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>
982
+ </div>
983
+
984
+ </div>
985
+
986
+
987
+
988
+
989
+ </div>
990
+
991
+
992
+ </div>
993
+
994
+ <div id="public-instance-method-details" class="method-section section">
995
+ <h3 class="section-header">Public Instance Methods</h3>
996
+
997
+
998
+ <div id="--method" class="method-detail ">
999
+ <a name="method-i-%5B%5D"></a>
1000
+
1001
+ <div class="method-heading">
1002
+
1003
+ <span class="method-name">[]</span><span
1004
+ class="method-args">(attributeId, scenario)</span>
1005
+ <span class="method-click-advice">click to toggle source</span>
1006
+
1007
+ </div>
1008
+
1009
+ <div class="method-description">
1010
+
1011
+ <p>
1012
+ Return the value of the attribute with ID <em>attributeId</em>. For
1013
+ scenario-specific attributes, <em>scenario</em> must indicate the index of
1014
+ the <a href="Scenario.html">Scenario</a>.
1015
+ </p>
1016
+
1017
+
1018
+
1019
+ <div class="method-source-code"
1020
+ id="--source">
1021
+ <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>
1026
+ </div>
1027
+
1028
+ </div>
1029
+
1030
+
1031
+
1032
+
1033
+ </div>
1034
+
1035
+
1036
+ <div id="--method" class="method-detail ">
1037
+ <a name="method-i-%5B%5D%3D"></a>
1038
+
1039
+ <div class="method-heading">
1040
+
1041
+ <span class="method-name">[]=</span><span
1042
+ class="method-args">(attributeId, scenario, value)</span>
1043
+ <span class="method-click-advice">click to toggle source</span>
1044
+
1045
+ </div>
1046
+
1047
+ <div class="method-description">
1048
+
1049
+ <p>
1050
+ Set the scenario specific attribute with ID <em>attributeId</em> for the
1051
+ scenario with index <em>scenario</em> to <em>value</em>. If
1052
+ <em>scenario</em> is nil, the attribute must not be scenario specific. In
1053
+ case the attribute does not exist, an exception is raised.
1054
+ </p>
1055
+
1056
+
1057
+
1058
+ <div class="method-source-code"
1059
+ id="--source">
1060
+ <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>
1074
+ 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>
1095
+ </div>
1096
+
1097
+ </div>
1098
+
1099
+
1100
+
1101
+
1102
+ </div>
1103
+
1104
+
1105
+ <div id="add-hild-method" class="method-detail ">
1106
+ <a name="method-i-addChild"></a>
1107
+
1108
+ <div class="method-heading">
1109
+
1110
+ <span class="method-name">addChild</span><span
1111
+ class="method-args">(child)</span>
1112
+ <span class="method-click-advice">click to toggle source</span>
1113
+
1114
+ </div>
1115
+
1116
+ <div class="method-description">
1117
+
1118
+ <p>
1119
+ Add <em>child</em> node as child to this node.
1120
+ </p>
1121
+
1122
+
1123
+
1124
+ <div class="method-source-code"
1125
+ id="add-hild-source">
1126
+ <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>
1134
+ </div>
1135
+
1136
+ </div>
1137
+
1138
+
1139
+
1140
+
1141
+ </div>
1142
+
1143
+
1144
+ <div id="adopt-method" class="method-detail ">
1145
+ <a name="method-i-adopt"></a>
1146
+
1147
+ <div class="method-heading">
1148
+
1149
+ <span class="method-name">adopt</span><span
1150
+ class="method-args">(property)</span>
1151
+ <span class="method-click-advice">click to toggle source</span>
1152
+
1153
+ </div>
1154
+
1155
+ <div class="method-description">
1156
+
1157
+ <p>
1158
+ Adopt <em>property</em> as a step child. Also register the new relationship
1159
+ with the child.
1160
+ </p>
1161
+
1162
+
1163
+
1164
+ <div class="method-source-code"
1165
+ id="adopt-source">
1166
+ <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>
1200
+ </div>
1201
+
1202
+ </div>
1203
+
1204
+
1205
+
1206
+
1207
+ </div>
1208
+
1209
+
1210
+ <div id="all-method" class="method-detail ">
1211
+ <a name="method-i-all"></a>
1212
+
1213
+ <div class="method-heading">
1214
+
1215
+ <span class="method-name">all</span><span
1216
+ class="method-args">()</span>
1217
+ <span class="method-click-advice">click to toggle source</span>
1218
+
1219
+ </div>
1220
+
1221
+ <div class="method-description">
1222
+
1223
+ <p>
1224
+ Returns a list of this node and all transient sub nodes.
1225
+ </p>
1226
+
1227
+
1228
+
1229
+ <div class="method-source-code"
1230
+ id="all-source">
1231
+ <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>
1240
+ </div>
1241
+
1242
+ </div>
1243
+
1244
+
1245
+
1246
+
1247
+ </div>
1248
+
1249
+
1250
+ <div id="all-eaves-method" class="method-detail ">
1251
+ <a name="method-i-allLeaves"></a>
1252
+
1253
+ <div class="method-heading">
1254
+
1255
+ <span class="method-name">allLeaves</span><span
1256
+ class="method-args">(withoutSelf = false)</span>
1257
+ <span class="method-click-advice">click to toggle source</span>
1258
+
1259
+ </div>
1260
+
1261
+ <div class="method-description">
1262
+
1263
+ <p>
1264
+ Return a list of all leaf nodes of this node.
1265
+ </p>
1266
+
1267
+
1268
+
1269
+ <div class="method-source-code"
1270
+ id="all-eaves-source">
1271
+ <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>
1284
+ </div>
1285
+
1286
+ </div>
1287
+
1288
+
1289
+
1290
+
1291
+ </div>
1292
+
1293
+
1294
+ <div id="ancestors-method" class="method-detail ">
1295
+ <a name="method-i-ancestors"></a>
1296
+
1297
+ <div class="method-heading">
1298
+
1299
+ <span class="method-name">ancestors</span><span
1300
+ class="method-args">()</span>
1301
+ <span class="method-click-advice">click to toggle source</span>
1302
+
1303
+ </div>
1304
+
1305
+ <div class="method-description">
1306
+
1307
+ <p>
1308
+ Return a list with all parent nodes of this node.
1309
+ </p>
1310
+
1311
+
1312
+
1313
+ <div class="method-source-code"
1314
+ id="ancestors-source">
1315
+ <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>
1325
+ </div>
1326
+
1327
+ </div>
1328
+
1329
+
1330
+
1331
+
1332
+ </div>
1333
+
1334
+
1335
+ <div id="attribute-efinition-method" class="method-detail ">
1336
+ <a name="method-i-attributeDefinition"></a>
1337
+
1338
+ <div class="method-heading">
1339
+
1340
+ <span class="method-name">attributeDefinition</span><span
1341
+ class="method-args">(attributeId)</span>
1342
+ <span class="method-click-advice">click to toggle source</span>
1343
+
1344
+ </div>
1345
+
1346
+ <div class="method-description">
1347
+
1348
+ <p>
1349
+ Return the type of the attribute with ID <em>attributeId</em>.
1350
+ </p>
1351
+
1352
+
1353
+
1354
+ <div class="method-source-code"
1355
+ id="attribute-efinition-source">
1356
+ <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>
1361
+ </div>
1362
+
1363
+ </div>
1364
+
1365
+
1366
+
1367
+
1368
+ </div>
1369
+
1370
+
1371
+ <div id="backup-ttributes-method" class="method-detail ">
1372
+ <a name="method-i-backupAttributes"></a>
1373
+
1374
+ <div class="method-heading">
1375
+
1376
+ <span class="method-name">backupAttributes</span><span
1377
+ class="method-args">()</span>
1378
+ <span class="method-click-advice">click to toggle source</span>
1379
+
1380
+ </div>
1381
+
1382
+ <div class="method-description">
1383
+
1384
+ <p>
1385
+ This method creates a shallow copy of all attributes and returns them as an
1386
+ Array that can be used with restoreAttributes().
1387
+ </p>
1388
+
1389
+
1390
+
1391
+ <div class="method-source-code"
1392
+ id="backup-ttributes-source">
1393
+ <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>
1398
+ </div>
1399
+
1400
+ </div>
1401
+
1402
+
1403
+
1404
+
1405
+ </div>
1406
+
1407
+
1408
+ <div id="check-ails-nd-arnings-method" class="method-detail ">
1409
+ <a name="method-i-checkFailsAndWarnings"></a>
1410
+
1411
+ <div class="method-heading">
1412
+
1413
+ <span class="method-name">checkFailsAndWarnings</span><span
1414
+ class="method-args">()</span>
1415
+ <span class="method-click-advice">click to toggle source</span>
1416
+
1417
+ </div>
1418
+
1419
+ <div class="method-description">
1420
+
1421
+
1422
+
1423
+
1424
+
1425
+ <div class="method-source-code"
1426
+ id="check-ails-nd-arnings-source">
1427
+ <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>
1473
+ </div>
1474
+
1475
+ </div>
1476
+
1477
+
1478
+
1479
+
1480
+ </div>
1481
+
1482
+
1483
+ <div id="container--method" class="method-detail ">
1484
+ <a name="method-i-container%3F"></a>
1485
+
1486
+ <div class="method-heading">
1487
+
1488
+ <span class="method-name">container?</span><span
1489
+ class="method-args">()</span>
1490
+ <span class="method-click-advice">click to toggle source</span>
1491
+
1492
+ </div>
1493
+
1494
+ <div class="method-description">
1495
+
1496
+ <p>
1497
+ Return true if the node has children.
1498
+ </p>
1499
+
1500
+
1501
+
1502
+ <div class="method-source-code"
1503
+ id="container--source">
1504
+ <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>
1509
+ </div>
1510
+
1511
+ </div>
1512
+
1513
+
1514
+
1515
+
1516
+ </div>
1517
+
1518
+
1519
+ <div id="deep-clone-method" class="method-detail ">
1520
+ <a name="method-i-deep_clone"></a>
1521
+
1522
+ <div class="method-heading">
1523
+
1524
+ <span class="method-name">deep_clone</span><span
1525
+ class="method-args">()</span>
1526
+ <span class="method-click-advice">click to toggle source</span>
1527
+
1528
+ </div>
1529
+
1530
+ <div class="method-description">
1531
+
1532
+ <p>
1533
+ We only use <a
1534
+ href="PropertyTreeNode.html#method-i-deep_clone">deep_clone</a> for
1535
+ attributes, never for properties. Since attributes may reference properties
1536
+ these references should remain references.
1537
+ </p>
1538
+
1539
+
1540
+
1541
+ <div class="method-source-code"
1542
+ id="deep-clone-source">
1543
+ <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>
1548
+ </div>
1549
+
1550
+ </div>
1551
+
1552
+
1553
+
1554
+
1555
+ </div>
1556
+
1557
+
1558
+ <div id="error-method" class="method-detail ">
1559
+ <a name="method-i-error"></a>
1560
+
1561
+ <div class="method-heading">
1562
+
1563
+ <span class="method-name">error</span><span
1564
+ class="method-args">(id, text)</span>
1565
+ <span class="method-click-advice">click to toggle source</span>
1566
+
1567
+ </div>
1568
+
1569
+ <div class="method-description">
1570
+
1571
+
1572
+
1573
+
1574
+
1575
+ <div class="method-source-code"
1576
+ id="error-source">
1577
+ <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>
1582
+ </div>
1583
+
1584
+ </div>
1585
+
1586
+
1587
+
1588
+
1589
+ </div>
1590
+
1591
+
1592
+ <div id="full-d-method" class="method-detail ">
1593
+ <a name="method-i-fullId"></a>
1594
+
1595
+ <div class="method-heading">
1596
+
1597
+ <span class="method-name">fullId</span><span
1598
+ class="method-args">()</span>
1599
+ <span class="method-click-advice">click to toggle source</span>
1600
+
1601
+ </div>
1602
+
1603
+ <div class="method-description">
1604
+
1605
+ <p>
1606
+ Return the full id of this node. For <a
1607
+ href="PropertySet.html">PropertySet</a> objects with a flat namespace, this
1608
+ is just the ID. Otherwise, the full ID is composed of all IDs from the root
1609
+ node to this node, separating the IDs by a dot.
1610
+ </p>
1611
+
1612
+
1613
+
1614
+ <div class="method-source-code"
1615
+ id="full-d-source">
1616
+ <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>
1628
+ </div>
1629
+
1630
+ </div>
1631
+
1632
+
1633
+
1634
+
1635
+ </div>
1636
+
1637
+
1638
+ <div id="get-method" class="method-detail ">
1639
+ <a name="method-i-get"></a>
1640
+
1641
+ <div class="method-heading">
1642
+
1643
+ <span class="method-name">get</span><span
1644
+ class="method-args">(attributeId)</span>
1645
+ <span class="method-click-advice">click to toggle source</span>
1646
+
1647
+ </div>
1648
+
1649
+ <div class="method-description">
1650
+
1651
+ <p>
1652
+ Return the value of the non-scenario-specific attribute with ID
1653
+ <em>attributeId</em>. This method works for built-in attributes as well. In
1654
+ case the attribute does not exist, an exception is raised.
1655
+ </p>
1656
+
1657
+
1658
+
1659
+ <div class="method-source-code"
1660
+ id="get-source">
1661
+ <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>
1666
+ </div>
1667
+
1668
+ </div>
1669
+
1670
+
1671
+
1672
+
1673
+ </div>
1674
+
1675
+
1676
+ <div id="get-ttribute-method" class="method-detail ">
1677
+ <a name="method-i-getAttribute"></a>
1678
+
1679
+ <div class="method-heading">
1680
+
1681
+ <span class="method-name">getAttribute</span><span
1682
+ class="method-args">(attributeId, scenarioIdx = nil)</span>
1683
+ <span class="method-click-advice">click to toggle source</span>
1684
+
1685
+ </div>
1686
+
1687
+ <div class="method-description">
1688
+
1689
+ <p>
1690
+ Return the value of the attribute with ID <em>attributeId</em>. This method
1691
+ works for built-in attributes as well. In case this is a scenario-specific
1692
+ attribute, the scenario index needs to be provided by <em>scenarioIdx</em>,
1693
+ otherwise it must be nil. In case the attribute does not exist, an
1694
+ exception is raised.
1695
+ </p>
1696
+
1697
+
1698
+
1699
+ <div class="method-source-code"
1700
+ id="get-ttribute-source">
1701
+ <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>
1710
+ </div>
1711
+
1712
+ </div>
1713
+
1714
+
1715
+
1716
+
1717
+ </div>
1718
+
1719
+
1720
+ <div id="get-ndicies-method" class="method-detail ">
1721
+ <a name="method-i-getBSIndicies"></a>
1722
+
1723
+ <div class="method-heading">
1724
+
1725
+ <span class="method-name">getBSIndicies</span><span
1726
+ class="method-args">()</span>
1727
+ <span class="method-click-advice">click to toggle source</span>
1728
+
1729
+ </div>
1730
+
1731
+ <div class="method-description">
1732
+
1733
+ <p>
1734
+ Return the hierarchical index of this node. In project management lingo
1735
+ this is called the Breakdown Structure Index (BSI). The result is an Array
1736
+ with an index for each level from the root to this node.
1737
+ </p>
1738
+
1739
+
1740
+
1741
+ <div class="method-source-code"
1742
+ id="get-ndicies-source">
1743
+ <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>
1756
+ </div>
1757
+
1758
+ </div>
1759
+
1760
+
1761
+
1762
+
1763
+ </div>
1764
+
1765
+
1766
+ <div id="get-ndicies-method" class="method-detail ">
1767
+ <a name="method-i-getIndicies"></a>
1768
+
1769
+ <div class="method-heading">
1770
+
1771
+ <span class="method-name">getIndicies</span><span
1772
+ class="method-args">()</span>
1773
+ <span class="method-click-advice">click to toggle source</span>
1774
+
1775
+ </div>
1776
+
1777
+ <div class="method-description">
1778
+
1779
+ <p>
1780
+ Return the &#8216;index&#8217; attributes of this property, prefixed by the
1781
+ &#8216;index&#8217; attributes of all its parents. The result is an Array
1782
+ of Fixnums.
1783
+ </p>
1784
+
1785
+
1786
+
1787
+ <div class="method-source-code"
1788
+ id="get-ndicies-source">
1789
+ <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>
1801
+ </div>
1802
+
1803
+ </div>
1804
+
1805
+
1806
+
1807
+
1808
+ </div>
1809
+
1810
+
1811
+ <div id="info-method" class="method-detail ">
1812
+ <a name="method-i-info"></a>
1813
+
1814
+ <div class="method-heading">
1815
+
1816
+ <span class="method-name">info</span><span
1817
+ class="method-args">(id, text)</span>
1818
+ <span class="method-click-advice">click to toggle source</span>
1819
+
1820
+ </div>
1821
+
1822
+ <div class="method-description">
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+ <div class="method-source-code"
1829
+ id="info-source">
1830
+ <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>
1835
+ </div>
1836
+
1837
+ </div>
1838
+
1839
+
1840
+
1841
+
1842
+ </div>
1843
+
1844
+
1845
+ <div id="inherit-ttributes-method" class="method-detail ">
1846
+ <a name="method-i-inheritAttributes"></a>
1847
+
1848
+ <div class="method-heading">
1849
+
1850
+ <span class="method-name">inheritAttributes</span><span
1851
+ class="method-args">()</span>
1852
+ <span class="method-click-advice">click to toggle source</span>
1853
+
1854
+ </div>
1855
+
1856
+ <div class="method-description">
1857
+
1858
+ <p>
1859
+ Inherit values for the attributes from the parent node or the <a
1860
+ href="Project.html">Project</a>.
1861
+ </p>
1862
+
1863
+
1864
+
1865
+ <div class="method-source-code"
1866
+ id="inherit-ttributes-source">
1867
+ <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>
1915
+ </div>
1916
+
1917
+ </div>
1918
+
1919
+
1920
+
1921
+
1922
+ </div>
1923
+
1924
+
1925
+ <div id="inherited-method" class="method-detail ">
1926
+ <a name="method-i-inherited"></a>
1927
+
1928
+ <div class="method-heading">
1929
+
1930
+ <span class="method-name">inherited</span><span
1931
+ class="method-args">(attributeId, scenarioIdx = nil)</span>
1932
+ <span class="method-click-advice">click to toggle source</span>
1933
+
1934
+ </div>
1935
+
1936
+ <div class="method-description">
1937
+
1938
+ <p>
1939
+ Returns true if the value of the attribute <em>attributeId</em> (in
1940
+ scenario <em>scenarioIdx</em>) has been inherited from a parent node or
1941
+ scenario.
1942
+ </p>
1943
+
1944
+
1945
+
1946
+ <div class="method-source-code"
1947
+ id="inherited-source">
1948
+ <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>
1961
+ </div>
1962
+
1963
+ </div>
1964
+
1965
+
1966
+
1967
+
1968
+ </div>
1969
+
1970
+
1971
+ <div id="is-hild-f--method" class="method-detail ">
1972
+ <a name="method-i-isChildOf%3F"></a>
1973
+
1974
+ <div class="method-heading">
1975
+
1976
+ <span class="method-name">isChildOf?</span><span
1977
+ class="method-args">(ancestor)</span>
1978
+ <span class="method-click-advice">click to toggle source</span>
1979
+
1980
+ </div>
1981
+
1982
+ <div class="method-description">
1983
+
1984
+ <p>
1985
+ Find out if this property is a direct or indirect child of
1986
+ <em>ancestor</em>.
1987
+ </p>
1988
+
1989
+
1990
+
1991
+ <div class="method-source-code"
1992
+ id="is-hild-f--source">
1993
+ <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>
2002
+ </div>
2003
+
2004
+ </div>
2005
+
2006
+
2007
+
2008
+
2009
+ </div>
2010
+
2011
+
2012
+ <div id="kids-method" class="method-detail ">
2013
+ <a name="method-i-kids"></a>
2014
+
2015
+ <div class="method-heading">
2016
+
2017
+ <span class="method-name">kids</span><span
2018
+ class="method-args">()</span>
2019
+ <span class="method-click-advice">click to toggle source</span>
2020
+
2021
+ </div>
2022
+
2023
+ <div class="method-description">
2024
+
2025
+ <p>
2026
+ Return a list of all children including adopted kids.
2027
+ </p>
2028
+
2029
+
2030
+
2031
+ <div class="method-source-code"
2032
+ id="kids-source">
2033
+ <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>
2038
+ </div>
2039
+
2040
+ </div>
2041
+
2042
+
2043
+
2044
+
2045
+ </div>
2046
+
2047
+
2048
+ <div id="leaf--method" class="method-detail ">
2049
+ <a name="method-i-leaf%3F"></a>
2050
+
2051
+ <div class="method-heading">
2052
+
2053
+ <span class="method-name">leaf?</span><span
2054
+ class="method-args">()</span>
2055
+ <span class="method-click-advice">click to toggle source</span>
2056
+
2057
+ </div>
2058
+
2059
+ <div class="method-description">
2060
+
2061
+ <p>
2062
+ Return true if the node is a leaf node (has no children).
2063
+ </p>
2064
+
2065
+
2066
+
2067
+ <div class="method-source-code"
2068
+ id="leaf--source">
2069
+ <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>
2074
+ </div>
2075
+
2076
+ </div>
2077
+
2078
+
2079
+
2080
+
2081
+ </div>
2082
+
2083
+
2084
+ <div id="level-method" class="method-detail ">
2085
+ <a name="method-i-level"></a>
2086
+
2087
+ <div class="method-heading">
2088
+
2089
+ <span class="method-name">level</span><span
2090
+ class="method-args">()</span>
2091
+ <span class="method-click-advice">click to toggle source</span>
2092
+
2093
+ </div>
2094
+
2095
+ <div class="method-description">
2096
+
2097
+ <p>
2098
+ Returns the level that this property is on. Top-level properties return 0,
2099
+ their children 1 and so on. This value is cached internally, so it does not
2100
+ have to be calculated each time the function is called.
2101
+ </p>
2102
+
2103
+
2104
+
2105
+ <div class="method-source-code"
2106
+ id="level-source">
2107
+ <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>
2119
+ </div>
2120
+
2121
+ </div>
2122
+
2123
+
2124
+
2125
+
2126
+ </div>
2127
+
2128
+
2129
+ <div id="level-eq-o-method" class="method-detail ">
2130
+ <a name="method-i-levelSeqNo"></a>
2131
+
2132
+ <div class="method-heading">
2133
+
2134
+ <span class="method-name">levelSeqNo</span><span
2135
+ class="method-args">(node)</span>
2136
+ <span class="method-click-advice">click to toggle source</span>
2137
+
2138
+ </div>
2139
+
2140
+ <div class="method-description">
2141
+
2142
+ <p>
2143
+ Return the index of the child <em>node</em>.
2144
+ </p>
2145
+
2146
+
2147
+
2148
+ <div class="method-source-code"
2149
+ id="level-eq-o-source">
2150
+ <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>
2155
+ </div>
2156
+
2157
+ </div>
2158
+
2159
+
2160
+
2161
+
2162
+ </div>
2163
+
2164
+
2165
+ <div id="method-missing-method" class="method-detail ">
2166
+ <a name="method-i-method_missing"></a>
2167
+
2168
+ <div class="method-heading">
2169
+
2170
+ <span class="method-name">method_missing</span><span
2171
+ class="method-args">(func, scenarioIdx, *args)</span>
2172
+ <span class="method-click-advice">click to toggle source</span>
2173
+
2174
+ </div>
2175
+
2176
+ <div class="method-description">
2177
+
2178
+ <p>
2179
+ Many <a href="PropertyTreeNode.html">PropertyTreeNode</a> functions are
2180
+ scenario specific. These functions are provided by the class *<a
2181
+ href="Scenario.html">Scenario</a> classes. In case we can&#8217;t find a
2182
+ function called for the base class we try to find it in corresponding *<a
2183
+ href="Scenario.html">Scenario</a> class.
2184
+ </p>
2185
+
2186
+
2187
+
2188
+ <div class="method-source-code"
2189
+ id="method-missing-source">
2190
+ <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>
2195
+ </div>
2196
+
2197
+ </div>
2198
+
2199
+
2200
+
2201
+
2202
+ </div>
2203
+
2204
+
2205
+ <div id="modified--method" class="method-detail ">
2206
+ <a name="method-i-modified%3F"></a>
2207
+
2208
+ <div class="method-heading">
2209
+
2210
+ <span class="method-name">modified?</span><span
2211
+ class="method-args">(attributeId, scenarioIdx = nil)</span>
2212
+ <span class="method-click-advice">click to toggle source</span>
2213
+
2214
+ </div>
2215
+
2216
+ <div class="method-description">
2217
+
2218
+
2219
+
2220
+
2221
+
2222
+ <div class="method-source-code"
2223
+ id="modified--source">
2224
+ <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>
2239
+ </div>
2240
+
2241
+ </div>
2242
+
2243
+
2244
+
2245
+
2246
+ </div>
2247
+
2248
+
2249
+ <div id="parents-method" class="method-detail ">
2250
+ <a name="method-i-parents"></a>
2251
+
2252
+ <div class="method-heading">
2253
+
2254
+ <span class="method-name">parents</span><span
2255
+ class="method-args">()</span>
2256
+ <span class="method-click-advice">click to toggle source</span>
2257
+
2258
+ </div>
2259
+
2260
+ <div class="method-description">
2261
+
2262
+ <p>
2263
+ Return a list of all parents including step parents.
2264
+ </p>
2265
+
2266
+
2267
+
2268
+ <div class="method-source-code"
2269
+ id="parents-source">
2270
+ <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>
2275
+ </div>
2276
+
2277
+ </div>
2278
+
2279
+
2280
+
2281
+
2282
+ </div>
2283
+
2284
+
2285
+ <div id="provided-method" class="method-detail ">
2286
+ <a name="method-i-provided"></a>
2287
+
2288
+ <div class="method-heading">
2289
+
2290
+ <span class="method-name">provided</span><span
2291
+ class="method-args">(attributeId, scenarioIdx = nil)</span>
2292
+ <span class="method-click-advice">click to toggle source</span>
2293
+
2294
+ </div>
2295
+
2296
+ <div class="method-description">
2297
+
2298
+ <p>
2299
+ Returns true if the value of the attribute <em>attributeId</em> (in
2300
+ scenario <em>scenarioIdx</em>) has been provided by the user.
2301
+ </p>
2302
+
2303
+
2304
+
2305
+ <div class="method-source-code"
2306
+ id="provided-source">
2307
+ <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>
2320
+ </div>
2321
+
2322
+ </div>
2323
+
2324
+
2325
+
2326
+
2327
+ </div>
2328
+
2329
+
2330
+ <div id="query-alert-method" class="method-detail ">
2331
+ <a name="method-i-query_alert"></a>
2332
+
2333
+ <div class="method-heading">
2334
+
2335
+ <span class="method-name">query_alert</span><span
2336
+ class="method-args">(query)</span>
2337
+ <span class="method-click-advice">click to toggle source</span>
2338
+
2339
+ </div>
2340
+
2341
+ <div class="method-description">
2342
+
2343
+
2344
+
2345
+
2346
+
2347
+ <div class="method-source-code"
2348
+ id="query-alert-source">
2349
+ <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>
2367
+ </div>
2368
+
2369
+ </div>
2370
+
2371
+
2372
+
2373
+
2374
+ </div>
2375
+
2376
+
2377
+ <div id="query-alertmessages-method" class="method-detail ">
2378
+ <a name="method-i-query_alertmessages"></a>
2379
+
2380
+ <div class="method-heading">
2381
+
2382
+ <span class="method-name">query_alertmessages</span><span
2383
+ class="method-args">(query)</span>
2384
+ <span class="method-click-advice">click to toggle source</span>
2385
+
2386
+ </div>
2387
+
2388
+ <div class="method-description">
2389
+
2390
+
2391
+
2392
+
2393
+
2394
+ <div class="method-source-code"
2395
+ id="query-alertmessages-source">
2396
+ <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>
2404
+ </div>
2405
+
2406
+ </div>
2407
+
2408
+
2409
+
2410
+
2411
+ </div>
2412
+
2413
+
2414
+ <div id="query-alertsummaries-method" class="method-detail ">
2415
+ <a name="method-i-query_alertsummaries"></a>
2416
+
2417
+ <div class="method-heading">
2418
+
2419
+ <span class="method-name">query_alertsummaries</span><span
2420
+ class="method-args">(query)</span>
2421
+ <span class="method-click-advice">click to toggle source</span>
2422
+
2423
+ </div>
2424
+
2425
+ <div class="method-description">
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+ <div class="method-source-code"
2432
+ id="query-alertsummaries-source">
2433
+ <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>
2441
+ </div>
2442
+
2443
+ </div>
2444
+
2445
+
2446
+
2447
+
2448
+ </div>
2449
+
2450
+
2451
+ <div id="query-alerttrend-method" class="method-detail ">
2452
+ <a name="method-i-query_alerttrend"></a>
2453
+
2454
+ <div class="method-heading">
2455
+
2456
+ <span class="method-name">query_alerttrend</span><span
2457
+ class="method-args">(query)</span>
2458
+ <span class="method-click-advice">click to toggle source</span>
2459
+
2460
+ </div>
2461
+
2462
+ <div class="method-description">
2463
+
2464
+
2465
+
2466
+
2467
+
2468
+ <div class="method-source-code"
2469
+ id="query-alerttrend-source">
2470
+ <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>
2487
+ </div>
2488
+
2489
+ </div>
2490
+
2491
+
2492
+
2493
+
2494
+ </div>
2495
+
2496
+
2497
+ <div id="query-journalmessages-method" class="method-detail ">
2498
+ <a name="method-i-query_journalmessages"></a>
2499
+
2500
+ <div class="method-heading">
2501
+
2502
+ <span class="method-name">query_journalmessages</span><span
2503
+ class="method-args">(query)</span>
2504
+ <span class="method-click-advice">click to toggle source</span>
2505
+
2506
+ </div>
2507
+
2508
+ <div class="method-description">
2509
+
2510
+
2511
+
2512
+
2513
+
2514
+ <div class="method-source-code"
2515
+ id="query-journalmessages-source">
2516
+ <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>
2524
+ </div>
2525
+
2526
+ </div>
2527
+
2528
+
2529
+
2530
+
2531
+ </div>
2532
+
2533
+
2534
+ <div id="query-journalsummaries-method" class="method-detail ">
2535
+ <a name="method-i-query_journalsummaries"></a>
2536
+
2537
+ <div class="method-heading">
2538
+
2539
+ <span class="method-name">query_journalsummaries</span><span
2540
+ class="method-args">(query)</span>
2541
+ <span class="method-click-advice">click to toggle source</span>
2542
+
2543
+ </div>
2544
+
2545
+ <div class="method-description">
2546
+
2547
+
2548
+
2549
+
2550
+
2551
+ <div class="method-source-code"
2552
+ id="query-journalsummaries-source">
2553
+ <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>
2561
+ </div>
2562
+
2563
+ </div>
2564
+
2565
+
2566
+
2567
+
2568
+ </div>
2569
+
2570
+
2571
+ <div id="restore-ttributes-method" class="method-detail ">
2572
+ <a name="method-i-restoreAttributes"></a>
2573
+
2574
+ <div class="method-heading">
2575
+
2576
+ <span class="method-name">restoreAttributes</span><span
2577
+ class="method-args">(backup)</span>
2578
+ <span class="method-click-advice">click to toggle source</span>
2579
+
2580
+ </div>
2581
+
2582
+ <div class="method-description">
2583
+
2584
+ <p>
2585
+ Restore the attributes to a previously saved state. <em>backup</em> is an
2586
+ Array generated by backupAttributes().
2587
+ </p>
2588
+
2589
+
2590
+
2591
+ <div class="method-source-code"
2592
+ id="restore-ttributes-source">
2593
+ <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>
2598
+ </div>
2599
+
2600
+ </div>
2601
+
2602
+
2603
+
2604
+
2605
+ </div>
2606
+
2607
+
2608
+ <div id="root-method" class="method-detail ">
2609
+ <a name="method-i-root"></a>
2610
+
2611
+ <div class="method-heading">
2612
+
2613
+ <span class="method-name">root</span><span
2614
+ class="method-args">()</span>
2615
+ <span class="method-click-advice">click to toggle source</span>
2616
+
2617
+ </div>
2618
+
2619
+ <div class="method-description">
2620
+
2621
+ <p>
2622
+ Return the top-level node for this node.
2623
+ </p>
2624
+
2625
+
2626
+
2627
+ <div class="method-source-code"
2628
+ id="root-source">
2629
+ <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>
2638
+ </div>
2639
+
2640
+ </div>
2641
+
2642
+
2643
+
2644
+
2645
+ </div>
2646
+
2647
+
2648
+ <div id="set-method" class="method-detail ">
2649
+ <a name="method-i-set"></a>
2650
+
2651
+ <div class="method-heading">
2652
+
2653
+ <span class="method-name">set</span><span
2654
+ class="method-args">(attributeId, value)</span>
2655
+ <span class="method-click-advice">click to toggle source</span>
2656
+
2657
+ </div>
2658
+
2659
+ <div class="method-description">
2660
+
2661
+ <p>
2662
+ Set the non-scenario-specific attribute with ID <em>attributeId</em> to
2663
+ <em>value</em>. In case the attribute does not exist, an exception is
2664
+ raised.
2665
+ </p>
2666
+
2667
+
2668
+
2669
+ <div class="method-source-code"
2670
+ id="set-source">
2671
+ <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>
2676
+ </div>
2677
+
2678
+ </div>
2679
+
2680
+
2681
+
2682
+
2683
+ </div>
2684
+
2685
+
2686
+ <div id="warning-method" class="method-detail ">
2687
+ <a name="method-i-warning"></a>
2688
+
2689
+ <div class="method-heading">
2690
+
2691
+ <span class="method-name">warning</span><span
2692
+ class="method-args">(id, text)</span>
2693
+ <span class="method-click-advice">click to toggle source</span>
2694
+
2695
+ </div>
2696
+
2697
+ <div class="method-description">
2698
+
2699
+
2700
+
2701
+
2702
+
2703
+ <div class="method-source-code"
2704
+ id="warning-source">
2705
+ <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>
2710
+ </div>
2711
+
2712
+ </div>
2713
+
2714
+
2715
+
2716
+
2717
+ </div>
2718
+
2719
+
2720
+ </div>
2721
+
2722
+ <div id="private-instance-method-details" class="method-section section">
2723
+ <h3 class="section-header">Private Instance Methods</h3>
2724
+
2725
+
2726
+ <div id="indent-method" class="method-detail ">
2727
+ <a name="method-i-indent"></a>
2728
+
2729
+ <div class="method-heading">
2730
+
2731
+ <span class="method-name">indent</span><span
2732
+ class="method-args">(tag, str)</span>
2733
+ <span class="method-click-advice">click to toggle source</span>
2734
+
2735
+ </div>
2736
+
2737
+ <div class="method-description">
2738
+
2739
+
2740
+
2741
+
2742
+
2743
+ <div class="method-source-code"
2744
+ id="indent-source">
2745
+ <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>
2750
+ </div>
2751
+
2752
+ </div>
2753
+
2754
+
2755
+
2756
+
2757
+ </div>
2758
+
2759
+
2760
+ <div id="journal-essages-method" class="method-detail ">
2761
+ <a name="method-i-journalMessages"></a>
2762
+
2763
+ <div class="method-heading">
2764
+
2765
+ <span class="method-name">journalMessages</span><span
2766
+ class="method-args">(entries, query, longVersion)</span>
2767
+ <span class="method-click-advice">click to toggle source</span>
2768
+
2769
+ </div>
2770
+
2771
+ <div class="method-description">
2772
+
2773
+ <p>
2774
+ Create a blog-style list of all alert messages that match the <a
2775
+ href="Query.html">Query</a>.
2776
+ </p>
2777
+
2778
+
2779
+
2780
+ <div class="method-source-code"
2781
+ id="journal-essages-source">
2782
+ <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>
2821
+ </div>
2822
+
2823
+ </div>
2824
+
2825
+
2826
+
2827
+
2828
+ </div>
2829
+
2830
+
2831
+ </div>
2832
+
2833
+
2834
+ </div>
2835
+
2836
+
2837
+ <div id="rdoc-debugging-section-dump" class="debugging-section">
2838
+
2839
+ <p>Disabled; run with --debug to generate this.</p>
2840
+
2841
+ </div>
2842
+
2843
+ <div id="validator-badges">
2844
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
2845
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
2846
+ Rdoc Generator</a> 1.1.6</small>.</p>
2847
+ </div>
2848
+
2849
+ </body>
2850
+ </html>
2851
+