taskjuggler 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. data/CHANGELOG +37 -5
  2. data/README.rdoc +4 -2
  3. data/benchmarks/UTF-8-Strings.rb +58 -0
  4. data/benchmarks/css/tjmanual.css +0 -1
  5. data/benchmarks/htmltaskreport-1.html +47702 -0
  6. data/benchmarks/htmltaskreport-2.html +23345 -0
  7. data/benchmarks/htmltaskreport-3.html +23265 -0
  8. data/benchmarks/htmltaskreport-4.html +22135 -0
  9. data/benchmarks/profile.clt +36082 -0
  10. data/benchmarks/tj3.profile +0 -0
  11. data/benchmarks/tj3.profile.grind +6185 -0
  12. data/benchmarks/tj3.profile.symbols +432 -0
  13. data/benchmarks/tj3.profile.txt +448 -0
  14. data/data/tjp.vim +689 -0
  15. data/doc/AppConfig.html +26 -2
  16. data/doc/CHANGELOG.html +60 -8
  17. data/doc/COPYING.html +26 -2
  18. data/doc/Diff/Hunk.html +26 -2
  19. data/doc/Diff.html +26 -2
  20. data/doc/Diffable.html +26 -2
  21. data/doc/DiffableString.html +26 -2
  22. data/doc/Object.html +26 -104
  23. data/doc/README_rdoc.html +39 -7
  24. data/doc/RuntimeConfig.html +26 -2
  25. data/doc/String.html +26 -2
  26. data/doc/TaskJuggler/Account.html +27 -3
  27. data/doc/TaskJuggler/AccountAttribute.html +30 -6
  28. data/doc/TaskJuggler/AccountScenario.html +28 -4
  29. data/doc/TaskJuggler/Allocation.html +33 -9
  30. data/doc/TaskJuggler/AllocationAttribute.html +31 -7
  31. data/doc/TaskJuggler/AttributeBase.html +162 -111
  32. data/doc/TaskJuggler/AttributeDefinition.html +26 -2
  33. data/doc/TaskJuggler/AttributeOverwrite.html +26 -2
  34. data/doc/TaskJuggler/BatchProcessor.html +26 -2
  35. data/doc/TaskJuggler/Booking.html +29 -5
  36. data/doc/TaskJuggler/BookingListAttribute.html +29 -5
  37. data/doc/TaskJuggler/BooleanAttribute.html +30 -6
  38. data/doc/TaskJuggler/CSVFile.html +26 -2
  39. data/doc/TaskJuggler/CellSettingPattern.html +26 -2
  40. data/doc/TaskJuggler/CellSettingPatternList.html +26 -2
  41. data/doc/TaskJuggler/Charge.html +30 -6
  42. data/doc/TaskJuggler/ChargeListAttribute.html +29 -5
  43. data/doc/TaskJuggler/ChargeSet.html +26 -2
  44. data/doc/TaskJuggler/ChargeSetListAttribute.html +30 -6
  45. data/doc/TaskJuggler/CollisionDetector.html +26 -2
  46. data/doc/TaskJuggler/ColumnListAttribute.html +28 -4
  47. data/doc/TaskJuggler/ColumnTable.html +26 -2
  48. data/doc/TaskJuggler/Daemon.html +26 -2
  49. data/doc/TaskJuggler/DataCache.html +26 -2
  50. data/doc/TaskJuggler/DataCacheEntry.html +26 -2
  51. data/doc/TaskJuggler/DateAttribute.html +30 -6
  52. data/doc/TaskJuggler/DefinitionListAttribute.html +28 -4
  53. data/doc/TaskJuggler/DependencyListAttribute.html +30 -6
  54. data/doc/TaskJuggler/DurationAttribute.html +31 -7
  55. data/doc/TaskJuggler/FileList.html +26 -2
  56. data/doc/TaskJuggler/FileRecord.html +26 -2
  57. data/doc/TaskJuggler/FixnumAttribute.html +28 -4
  58. data/doc/TaskJuggler/FlagListAttribute.html +30 -6
  59. data/doc/TaskJuggler/FloatAttribute.html +29 -5
  60. data/doc/TaskJuggler/FormatListAttribute.html +29 -5
  61. data/doc/TaskJuggler/GanttChart.html +26 -2
  62. data/doc/TaskJuggler/GanttContainer.html +26 -2
  63. data/doc/TaskJuggler/GanttHeader.html +26 -2
  64. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -2
  65. data/doc/TaskJuggler/GanttLine.html +27 -3
  66. data/doc/TaskJuggler/GanttLoadStack.html +26 -2
  67. data/doc/TaskJuggler/GanttMilestone.html +26 -2
  68. data/doc/TaskJuggler/GanttRouter.html +26 -2
  69. data/doc/TaskJuggler/GanttTaskBar.html +26 -2
  70. data/doc/TaskJuggler/HTMLDocument.html +26 -2
  71. data/doc/TaskJuggler/HTMLElements.html +623 -0
  72. data/doc/TaskJuggler/HTMLGraphics.html +26 -2
  73. data/doc/TaskJuggler/ICalReport.html +864 -0
  74. data/doc/TaskJuggler/ICalendar/Component.html +969 -0
  75. data/doc/TaskJuggler/ICalendar/Event.html +742 -0
  76. data/doc/TaskJuggler/ICalendar/Journal.html +722 -0
  77. data/doc/TaskJuggler/ICalendar/Person.html +633 -0
  78. data/doc/TaskJuggler/ICalendar/Todo.html +789 -0
  79. data/doc/TaskJuggler/ICalendar.html +1035 -0
  80. data/doc/TaskJuggler/Interval.html +99 -172
  81. data/doc/TaskJuggler/IntervalList.html +31 -7
  82. data/doc/TaskJuggler/JobInfo.html +26 -2
  83. data/doc/TaskJuggler/Journal.html +26 -2
  84. data/doc/TaskJuggler/JournalEntry.html +26 -2
  85. data/doc/TaskJuggler/JournalEntryList.html +26 -2
  86. data/doc/TaskJuggler/KeywordArray.html +26 -2
  87. data/doc/TaskJuggler/KeywordDocumentation.html +26 -2
  88. data/doc/TaskJuggler/Limits/Limit.html +124 -49
  89. data/doc/TaskJuggler/Limits.html +139 -156
  90. data/doc/TaskJuggler/LimitsAttribute.html +39 -14
  91. data/doc/TaskJuggler/ListAttributeBase.html +35 -11
  92. data/doc/TaskJuggler/Log.html +26 -2
  93. data/doc/TaskJuggler/LogFile.html +26 -2
  94. data/doc/TaskJuggler/LogicalAttribute.html +26 -2
  95. data/doc/TaskJuggler/LogicalExpression.html +26 -2
  96. data/doc/TaskJuggler/LogicalExpressionAttribute.html +35 -11
  97. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +35 -11
  98. data/doc/TaskJuggler/LogicalFlag.html +26 -2
  99. data/doc/TaskJuggler/LogicalFunction.html +28 -4
  100. data/doc/TaskJuggler/LogicalOperation.html +26 -2
  101. data/doc/TaskJuggler/ManagerResponsibilities.html +26 -2
  102. data/doc/TaskJuggler/ManagerStatusRecord.html +26 -2
  103. data/doc/TaskJuggler/Message.html +26 -2
  104. data/doc/TaskJuggler/MessageHandler.html +108 -62
  105. data/doc/TaskJuggler/Navigator.html +26 -2
  106. data/doc/TaskJuggler/NavigatorElement.html +26 -2
  107. data/doc/TaskJuggler/NikuProject.html +26 -2
  108. data/doc/TaskJuggler/NikuReport.html +27 -3
  109. data/doc/TaskJuggler/NikuResource.html +26 -2
  110. data/doc/TaskJuggler/NodeListAttribute.html +31 -7
  111. data/doc/TaskJuggler/PlaceHolderCell.html +26 -2
  112. data/doc/TaskJuggler/ProcessIntercom.html +26 -2
  113. data/doc/TaskJuggler/ProcessIntercomIface.html +26 -2
  114. data/doc/TaskJuggler/Project.html +1236 -973
  115. data/doc/TaskJuggler/ProjectBroker.html +26 -2
  116. data/doc/TaskJuggler/ProjectBrokerIface.html +26 -2
  117. data/doc/TaskJuggler/ProjectFileParser.html +29 -4
  118. data/doc/TaskJuggler/ProjectFileScanner.html +56 -31
  119. data/doc/TaskJuggler/ProjectRecord.html +26 -2
  120. data/doc/TaskJuggler/ProjectServer.html +26 -2
  121. data/doc/TaskJuggler/ProjectServerIface.html +26 -2
  122. data/doc/TaskJuggler/PropertyAttribute.html +35 -11
  123. data/doc/TaskJuggler/PropertyList.html +26 -2
  124. data/doc/TaskJuggler/PropertySet.html +126 -106
  125. data/doc/TaskJuggler/PropertyTreeNode.html +595 -551
  126. data/doc/TaskJuggler/Query.html +127 -100
  127. data/doc/TaskJuggler/RTFHandlers.html +26 -2
  128. data/doc/TaskJuggler/RTFNavigator.html +26 -2
  129. data/doc/TaskJuggler/RTFQuery.html +28 -4
  130. data/doc/TaskJuggler/RTFReport.html +26 -2
  131. data/doc/TaskJuggler/RTFReportLink.html +26 -2
  132. data/doc/TaskJuggler/RTFWithQuerySupport.html +26 -2
  133. data/doc/TaskJuggler/RealFormat.html +26 -2
  134. data/doc/TaskJuggler/RealFormatAttribute.html +31 -7
  135. data/doc/TaskJuggler/ReferenceAttribute.html +58 -34
  136. data/doc/TaskJuggler/Report.html +427 -284
  137. data/doc/TaskJuggler/ReportBase.html +28 -102
  138. data/doc/TaskJuggler/ReportContext.html +26 -2
  139. data/doc/TaskJuggler/ReportScenario.html +633 -0
  140. data/doc/TaskJuggler/ReportServer.html +26 -2
  141. data/doc/TaskJuggler/ReportServerIface.html +26 -2
  142. data/doc/TaskJuggler/ReportServerRecord.html +26 -2
  143. data/doc/TaskJuggler/ReportServlet.html +26 -2
  144. data/doc/TaskJuggler/ReportTable.html +26 -2
  145. data/doc/TaskJuggler/ReportTableCell.html +26 -2
  146. data/doc/TaskJuggler/ReportTableColumn.html +26 -2
  147. data/doc/TaskJuggler/ReportTableLegend.html +26 -2
  148. data/doc/TaskJuggler/ReportTableLine.html +26 -2
  149. data/doc/TaskJuggler/Resource.html +225 -163
  150. data/doc/TaskJuggler/ResourceListAttribute.html +71 -47
  151. data/doc/TaskJuggler/ResourceListRE.html +26 -2
  152. data/doc/TaskJuggler/ResourceScenario.html +645 -603
  153. data/doc/TaskJuggler/RichText.html +26 -2
  154. data/doc/TaskJuggler/RichTextAttribute.html +53 -29
  155. data/doc/TaskJuggler/RichTextDocument.html +26 -2
  156. data/doc/TaskJuggler/RichTextElement.html +26 -2
  157. data/doc/TaskJuggler/RichTextFunctionExample.html +26 -2
  158. data/doc/TaskJuggler/RichTextFunctionHandler.html +26 -2
  159. data/doc/TaskJuggler/RichTextImage.html +26 -2
  160. data/doc/TaskJuggler/RichTextIntermediate.html +29 -5
  161. data/doc/TaskJuggler/RichTextParser.html +26 -2
  162. data/doc/TaskJuggler/RichTextScanner.html +26 -2
  163. data/doc/TaskJuggler/RichTextSnip.html +26 -2
  164. data/doc/TaskJuggler/RichTextSyntaxRules.html +26 -2
  165. data/doc/TaskJuggler/Scenario.html +26 -2
  166. data/doc/TaskJuggler/ScenarioData.html +95 -28
  167. data/doc/TaskJuggler/ScenarioListAttribute.html +39 -15
  168. data/doc/TaskJuggler/Scoreboard.html +137 -73
  169. data/doc/TaskJuggler/ScoreboardInterval.html +1116 -0
  170. data/doc/TaskJuggler/SheetHandlerBase.html +26 -2
  171. data/doc/TaskJuggler/SheetReceiver.html +26 -2
  172. data/doc/TaskJuggler/SheetSender.html +26 -2
  173. data/doc/TaskJuggler/Shift.html +27 -3
  174. data/doc/TaskJuggler/ShiftAssignment.html +27 -3
  175. data/doc/TaskJuggler/ShiftAssignments.html +174 -149
  176. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +41 -16
  177. data/doc/TaskJuggler/ShiftScenario.html +26 -2
  178. data/doc/TaskJuggler/SimpleQueryExpander.html +26 -2
  179. data/doc/TaskJuggler/SortListAttribute.html +35 -11
  180. data/doc/TaskJuggler/StatusSheetReceiver.html +26 -2
  181. data/doc/TaskJuggler/StatusSheetReport.html +26 -2
  182. data/doc/TaskJuggler/StatusSheetSender.html +26 -2
  183. data/doc/TaskJuggler/StdIoWrapper.html +26 -2
  184. data/doc/TaskJuggler/StringAttribute.html +39 -15
  185. data/doc/TaskJuggler/SymbolAttribute.html +35 -11
  186. data/doc/TaskJuggler/SyntaxReference.html +26 -2
  187. data/doc/TaskJuggler/TOCEntry.html +26 -2
  188. data/doc/TaskJuggler/TSResourceRecord.html +26 -2
  189. data/doc/TaskJuggler/TSTaskRecord.html +26 -2
  190. data/doc/TaskJuggler/TableColumnDefinition.html +26 -2
  191. data/doc/TaskJuggler/TableOfContents.html +26 -2
  192. data/doc/TaskJuggler/TableReport.html +239 -214
  193. data/doc/TaskJuggler/TagFile/TagFileEntry.html +841 -0
  194. data/doc/TaskJuggler/TagFile.html +817 -0
  195. data/doc/TaskJuggler/Task.html +27 -3
  196. data/doc/TaskJuggler/TaskDepListAttribute.html +47 -23
  197. data/doc/TaskJuggler/TaskDependency.html +26 -2
  198. data/doc/TaskJuggler/TaskListAttribute.html +47 -23
  199. data/doc/TaskJuggler/TaskListRE.html +26 -2
  200. data/doc/TaskJuggler/TaskScenario.html +2235 -2178
  201. data/doc/TaskJuggler/TernarySearchTree.html +26 -2
  202. data/doc/TaskJuggler/TextFormatter.html +26 -2
  203. data/doc/TaskJuggler/TextParser/Macro.html +26 -2
  204. data/doc/TaskJuggler/TextParser/MacroTable.html +26 -2
  205. data/doc/TaskJuggler/TextParser/Pattern.html +26 -2
  206. data/doc/TaskJuggler/TextParser/Rule.html +26 -2
  207. data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +32 -8
  208. data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +39 -15
  209. data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +26 -2
  210. data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +119 -86
  211. data/doc/TaskJuggler/TextParser/Scanner.html +317 -291
  212. data/doc/TaskJuggler/TextParser/SourceFileInfo.html +26 -2
  213. data/doc/TaskJuggler/TextParser/StackElement.html +26 -2
  214. data/doc/TaskJuggler/TextParser/State.html +26 -2
  215. data/doc/TaskJuggler/TextParser/StateTransition.html +26 -2
  216. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +26 -2
  217. data/doc/TaskJuggler/TextParser/TokenDoc.html +26 -2
  218. data/doc/TaskJuggler/TextParser.html +85 -61
  219. data/doc/TaskJuggler/TextReport.html +26 -2
  220. data/doc/TaskJuggler/TimeInterval.html +841 -0
  221. data/doc/TaskJuggler/{IntervalListAttribute.html → TimeIntervalListAttribute.html} +33 -9
  222. data/doc/TaskJuggler/TimeSheet.html +26 -2
  223. data/doc/TaskJuggler/TimeSheetReceiver.html +26 -2
  224. data/doc/TaskJuggler/TimeSheetRecord.html +27 -3
  225. data/doc/TaskJuggler/TimeSheetReport.html +29 -5
  226. data/doc/TaskJuggler/TimeSheetSender.html +26 -2
  227. data/doc/TaskJuggler/TimeSheetSummary.html +26 -2
  228. data/doc/TaskJuggler/TimeSheets.html +26 -2
  229. data/doc/TaskJuggler/Tj3.html +150 -111
  230. data/doc/TaskJuggler/Tj3AppBase.html +26 -2
  231. data/doc/TaskJuggler/Tj3Client.html +26 -2
  232. data/doc/TaskJuggler/Tj3Daemon.html +26 -2
  233. data/doc/TaskJuggler/Tj3Man.html +26 -2
  234. data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -2
  235. data/doc/TaskJuggler/Tj3SsReceiver.html +26 -2
  236. data/doc/TaskJuggler/Tj3SsSender.html +26 -2
  237. data/doc/TaskJuggler/Tj3TsReceiver.html +26 -2
  238. data/doc/TaskJuggler/Tj3TsSender.html +26 -2
  239. data/doc/TaskJuggler/Tj3TsSummary.html +26 -2
  240. data/doc/TaskJuggler/TjException.html +26 -2
  241. data/doc/TaskJuggler/TjRuntimeError.html +26 -2
  242. data/doc/TaskJuggler/TjTime.html +539 -477
  243. data/doc/TaskJuggler/TjpExample.html +26 -2
  244. data/doc/TaskJuggler/TjpExportRE.html +240 -161
  245. data/doc/TaskJuggler/TjpSyntaxRules.html +4236 -3844
  246. data/doc/TaskJuggler/URLParameter.html +26 -2
  247. data/doc/TaskJuggler/UserManual.html +26 -2
  248. data/doc/TaskJuggler/VimSyntax.html +31 -7
  249. data/doc/TaskJuggler/WebServer.html +26 -2
  250. data/doc/TaskJuggler/WelcomePage.html +26 -2
  251. data/doc/TaskJuggler/WorkingHours.html +227 -152
  252. data/doc/TaskJuggler/WorkingHoursAttribute.html +62 -38
  253. data/doc/TaskJuggler/XMLBlob.html +26 -2
  254. data/doc/TaskJuggler/XMLComment.html +26 -2
  255. data/doc/TaskJuggler/XMLDocument.html +26 -2
  256. data/doc/TaskJuggler/XMLElement.html +26 -2
  257. data/doc/TaskJuggler/XMLNamedText.html +26 -2
  258. data/doc/TaskJuggler/XMLText.html +26 -2
  259. data/doc/TaskJuggler.html +486 -427
  260. data/doc/index.html +801 -659
  261. data/doc/lib/taskjuggler/AccountScenario_rb.html +1 -1
  262. data/doc/lib/taskjuggler/Account_rb.html +1 -1
  263. data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +1 -1
  264. data/doc/lib/taskjuggler/Allocation_rb.html +1 -1
  265. data/doc/lib/taskjuggler/AppConfig_rb.html +1 -1
  266. data/doc/lib/taskjuggler/AttributeBase_rb.html +1 -1
  267. data/doc/lib/taskjuggler/AttributeDefinition_rb.html +1 -1
  268. data/doc/lib/taskjuggler/Attributes_rb.html +1 -1
  269. data/doc/lib/taskjuggler/BatchProcessor_rb.html +1 -1
  270. data/doc/lib/taskjuggler/Booking_rb.html +1 -1
  271. data/doc/lib/taskjuggler/ChargeSet_rb.html +1 -1
  272. data/doc/lib/taskjuggler/Charge_rb.html +1 -1
  273. data/doc/lib/taskjuggler/DataCache_rb.html +1 -1
  274. data/doc/lib/taskjuggler/FileList_rb.html +1 -1
  275. data/doc/lib/taskjuggler/HTMLDocument_rb.html +1 -1
  276. data/doc/lib/{ruby-signal-bug_rb.html → taskjuggler/HTMLElements_rb.html} +9 -9
  277. data/doc/lib/{exchangebug_rb.html → taskjuggler/ICalendar_rb.html} +9 -9
  278. data/doc/lib/taskjuggler/IntervalList_rb.html +1 -1
  279. data/doc/lib/taskjuggler/Interval_rb.html +1 -1
  280. data/doc/lib/taskjuggler/Journal_rb.html +1 -1
  281. data/doc/lib/taskjuggler/KeywordArray_rb.html +1 -1
  282. data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +1 -1
  283. data/doc/lib/taskjuggler/Limits_rb.html +1 -1
  284. data/doc/lib/taskjuggler/LogFile_rb.html +1 -1
  285. data/doc/lib/taskjuggler/Log_rb.html +1 -1
  286. data/doc/lib/taskjuggler/LogicalExpression_rb.html +1 -1
  287. data/doc/lib/taskjuggler/LogicalFunction_rb.html +1 -1
  288. data/doc/lib/taskjuggler/LogicalOperation_rb.html +1 -1
  289. data/doc/lib/taskjuggler/MessageHandler_rb.html +1 -1
  290. data/doc/lib/taskjuggler/ProjectFileParser_rb.html +1 -1
  291. data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +1 -1
  292. data/doc/lib/taskjuggler/Project_rb.html +1 -1
  293. data/doc/lib/taskjuggler/PropertyList_rb.html +1 -1
  294. data/doc/lib/taskjuggler/PropertySet_rb.html +1 -1
  295. data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +1 -1
  296. data/doc/lib/taskjuggler/Query_rb.html +1 -1
  297. data/doc/lib/taskjuggler/RealFormat_rb.html +1 -1
  298. data/doc/lib/taskjuggler/ResourceScenario_rb.html +1 -1
  299. data/doc/lib/taskjuggler/Resource_rb.html +1 -1
  300. data/doc/lib/taskjuggler/RichText/Document_rb.html +1 -1
  301. data/doc/lib/taskjuggler/RichText/Element_rb.html +1 -1
  302. data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +1 -1
  303. data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +1 -1
  304. data/doc/lib/taskjuggler/RichText/Parser_rb.html +1 -1
  305. data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +1 -1
  306. data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +1 -1
  307. data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +1 -1
  308. data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +1 -1
  309. data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +1 -1
  310. data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +1 -1
  311. data/doc/lib/taskjuggler/RichText/Scanner_rb.html +1 -1
  312. data/doc/lib/taskjuggler/RichText/Snip_rb.html +1 -1
  313. data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +1 -1
  314. data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +1 -1
  315. data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +1 -1
  316. data/doc/lib/taskjuggler/RichText_rb.html +1 -1
  317. data/doc/lib/taskjuggler/RuntimeConfig_rb.html +1 -1
  318. data/doc/lib/taskjuggler/ScenarioData_rb.html +1 -1
  319. data/doc/lib/taskjuggler/Scenario_rb.html +1 -1
  320. data/doc/lib/taskjuggler/Scoreboard_rb.html +1 -1
  321. data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +1 -1
  322. data/doc/lib/taskjuggler/SheetReceiver_rb.html +1 -1
  323. data/doc/lib/taskjuggler/SheetSender_rb.html +1 -1
  324. data/doc/lib/taskjuggler/ShiftAssignments_rb.html +1 -1
  325. data/doc/lib/taskjuggler/ShiftScenario_rb.html +1 -1
  326. data/doc/lib/taskjuggler/Shift_rb.html +1 -1
  327. data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +1 -1
  328. data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +1 -1
  329. data/doc/lib/taskjuggler/StatusSheetSender_rb.html +1 -1
  330. data/doc/lib/taskjuggler/StdIoWrapper_rb.html +1 -1
  331. data/doc/lib/taskjuggler/SyntaxReference_rb.html +1 -1
  332. data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +1 -1
  333. data/doc/lib/taskjuggler/TaskDependency_rb.html +1 -1
  334. data/doc/lib/taskjuggler/TaskJuggler_rb.html +1 -1
  335. data/doc/lib/taskjuggler/TaskScenario_rb.html +1 -1
  336. data/doc/lib/taskjuggler/Task_rb.html +1 -1
  337. data/doc/lib/taskjuggler/TernarySearchTree_rb.html +1 -1
  338. data/doc/lib/taskjuggler/TextFormatter_rb.html +1 -1
  339. data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +1 -1
  340. data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +1 -1
  341. data/doc/lib/taskjuggler/TextParser/Rule_rb.html +1 -1
  342. data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +1 -1
  343. data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +1 -1
  344. data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +1 -1
  345. data/doc/lib/taskjuggler/TextParser/State_rb.html +1 -1
  346. data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +1 -1
  347. data/doc/lib/taskjuggler/TextParser_rb.html +1 -1
  348. data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +1 -1
  349. data/doc/lib/taskjuggler/TimeSheetSender_rb.html +1 -1
  350. data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +1 -1
  351. data/doc/lib/taskjuggler/TimeSheets_rb.html +1 -1
  352. data/doc/lib/taskjuggler/Tj3AppBase_rb.html +1 -1
  353. data/doc/lib/taskjuggler/Tj3Config_rb.html +1 -1
  354. data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +1 -1
  355. data/doc/lib/taskjuggler/TjException_rb.html +1 -1
  356. data/doc/lib/taskjuggler/TjTime_rb.html +1 -1
  357. data/doc/lib/taskjuggler/TjpExample_rb.html +1 -1
  358. data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +1 -1
  359. data/doc/lib/taskjuggler/URLParameter_rb.html +1 -1
  360. data/doc/lib/taskjuggler/UTF8String_rb.html +1 -1
  361. data/doc/lib/taskjuggler/UserManual_rb.html +1 -1
  362. data/doc/lib/taskjuggler/VimSyntax_rb.html +1 -1
  363. data/doc/lib/taskjuggler/WorkingHours_rb.html +1 -1
  364. data/doc/lib/taskjuggler/XMLDocument_rb.html +1 -1
  365. data/doc/lib/taskjuggler/XMLElement_rb.html +1 -1
  366. data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +1 -1
  367. data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +1 -1
  368. data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +1 -1
  369. data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +1 -1
  370. data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +1 -1
  371. data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +1 -1
  372. data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +1 -1
  373. data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +1 -1
  374. data/doc/lib/taskjuggler/apps/Tj3_rb.html +1 -1
  375. data/doc/lib/taskjuggler/daemon/Daemon_rb.html +1 -1
  376. data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +1 -1
  377. data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +1 -1
  378. data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +1 -1
  379. data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +1 -1
  380. data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +1 -1
  381. data/doc/lib/taskjuggler/daemon/WebServer_rb.html +1 -1
  382. data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +1 -1
  383. data/doc/lib/taskjuggler/deep_copy_rb.html +1 -1
  384. data/doc/lib/taskjuggler/reports/CSVFile_rb.html +1 -1
  385. data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +1 -1
  386. data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +1 -1
  387. data/doc/lib/taskjuggler/reports/GanttChart_rb.html +1 -1
  388. data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +1 -1
  389. data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +1 -1
  390. data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +1 -1
  391. data/doc/lib/taskjuggler/reports/GanttLine_rb.html +1 -1
  392. data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +1 -1
  393. data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +1 -1
  394. data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +1 -1
  395. data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +1 -1
  396. data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +1 -1
  397. data/doc/lib/taskjuggler/reports/ICalReport_rb.html +71 -0
  398. data/doc/lib/taskjuggler/reports/Navigator_rb.html +1 -1
  399. data/doc/lib/taskjuggler/reports/NikuReport_rb.html +1 -1
  400. data/doc/lib/taskjuggler/reports/ReportBase_rb.html +1 -1
  401. data/doc/lib/taskjuggler/reports/ReportContext_rb.html +1 -1
  402. data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +1 -1
  403. data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +1 -1
  404. data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +1 -1
  405. data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +1 -1
  406. data/doc/lib/taskjuggler/reports/ReportTable_rb.html +1 -1
  407. data/doc/lib/taskjuggler/reports/Report_rb.html +5 -1
  408. data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +1 -1
  409. data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +1 -1
  410. data/doc/lib/taskjuggler/reports/TableReport_rb.html +1 -1
  411. data/doc/lib/taskjuggler/reports/TagFile_rb.html +71 -0
  412. data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +1 -1
  413. data/doc/lib/taskjuggler/reports/TextReport_rb.html +1 -1
  414. data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +1 -1
  415. data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +1 -1
  416. data/doc/lib/tj3_rb.html +1 -1
  417. data/doc/lib/tj3client_rb.html +1 -1
  418. data/doc/lib/tj3d_rb.html +1 -1
  419. data/doc/lib/tj3man_rb.html +1 -1
  420. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  421. data/doc/lib/tj3ss_sender_rb.html +1 -1
  422. data/doc/lib/tj3ts_receiver_rb.html +1 -1
  423. data/doc/lib/tj3ts_sender_rb.html +1 -1
  424. data/doc/lib/tj3ts_summary_rb.html +1 -1
  425. data/lib/taskjuggler/Account.rb +1 -1
  426. data/lib/taskjuggler/AccountScenario.rb +1 -1
  427. data/lib/taskjuggler/Allocation.rb +5 -5
  428. data/lib/taskjuggler/AttributeBase.rb +30 -22
  429. data/lib/taskjuggler/Attributes.rb +80 -78
  430. data/lib/taskjuggler/Booking.rb +2 -2
  431. data/lib/taskjuggler/Charge.rb +3 -3
  432. data/lib/taskjuggler/ICalendar.rb +251 -0
  433. data/lib/taskjuggler/Interval.rb +215 -53
  434. data/lib/taskjuggler/IntervalList.rb +5 -5
  435. data/lib/taskjuggler/Limits.rb +79 -69
  436. data/lib/taskjuggler/LogicalFunction.rb +2 -2
  437. data/lib/taskjuggler/MessageHandler.rb +11 -6
  438. data/lib/taskjuggler/Project.rb +208 -95
  439. data/lib/taskjuggler/ProjectFileParser.rb +2 -2
  440. data/lib/taskjuggler/ProjectFileScanner.rb +7 -6
  441. data/lib/taskjuggler/PropertySet.rb +1 -5
  442. data/lib/taskjuggler/PropertyTreeNode.rb +21 -16
  443. data/lib/taskjuggler/Query.rb +10 -7
  444. data/lib/taskjuggler/Resource.rb +6 -1
  445. data/lib/taskjuggler/ResourceScenario.rb +85 -69
  446. data/lib/taskjuggler/RichText/RTFQuery.rb +2 -2
  447. data/lib/taskjuggler/ScenarioData.rb +11 -1
  448. data/lib/taskjuggler/Scoreboard.rb +8 -1
  449. data/lib/taskjuggler/Shift.rb +1 -1
  450. data/lib/taskjuggler/ShiftAssignments.rb +22 -20
  451. data/lib/taskjuggler/Task.rb +1 -1
  452. data/lib/taskjuggler/TaskJuggler.rb +65 -51
  453. data/lib/taskjuggler/TaskScenario.rb +486 -419
  454. data/lib/taskjuggler/TextParser/Scanner.rb +22 -11
  455. data/lib/taskjuggler/TimeSheets.rb +1 -1
  456. data/lib/taskjuggler/Tj3Config.rb +1 -1
  457. data/lib/taskjuggler/TjTime.rb +7 -3
  458. data/lib/taskjuggler/TjpSyntaxRules.rb +157 -23
  459. data/lib/taskjuggler/VimSyntax.rb +18 -0
  460. data/lib/taskjuggler/WorkingHours.rb +20 -4
  461. data/lib/taskjuggler/apps/Tj3.rb +16 -1
  462. data/lib/taskjuggler/reports/GanttLine.rb +1 -1
  463. data/lib/taskjuggler/reports/ICalReport.rb +136 -0
  464. data/lib/taskjuggler/reports/NikuReport.rb +1 -1
  465. data/lib/taskjuggler/reports/Report.rb +59 -0
  466. data/lib/taskjuggler/reports/ReportBase.rb +2 -67
  467. data/lib/taskjuggler/reports/TableReport.rb +9 -8
  468. data/lib/taskjuggler/reports/TagFile.rb +120 -0
  469. data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -3
  470. data/lib/taskjuggler/reports/TjpExportRE.rb +33 -9
  471. data/manual/Installation +126 -0
  472. data/spec/ICalendar_spec.rb +45 -0
  473. data/spec/IntervalList_spec.rb +11 -11
  474. data/tasks/changelog.rake +150 -60
  475. data/tasks/gem.rake +1 -0
  476. data/tasks/vim.rake +2 -2
  477. data/test/TestSuite/Export-Reports/refs/Booking.tjp +1 -1
  478. data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
  479. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +10 -1
  480. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +1 -1
  481. data/test/TestSuite/HTML-Reports/Alerts.html +160 -412
  482. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  483. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  484. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  485. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  486. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  487. data/test/TestSuite/HTML-Reports/css/tjmanual.css +0 -20
  488. data/test/TestSuite/HTML-Reports/css/tjreport.css +6 -7
  489. data/test/TestSuite/HTML-Reports/depArrows.html +851 -0
  490. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  491. data/test/TestSuite/{Scheduler/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
  492. data/test/TestSuite/Scheduler/Correct/Booking.tjp +3 -3
  493. data/test/TestSuite/Scheduler/Correct/Duration.tjp +3 -3
  494. data/test/TestSuite/Scheduler/Errors/R.html +113 -0
  495. data/test/TestSuite/Scheduler/Errors/allocate_no_assigned.tjp +15 -0
  496. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjmanual.css +0 -1
  497. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjreport.css +0 -0
  498. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/details.png +0 -0
  499. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-green.png +0 -0
  500. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-red.png +0 -0
  501. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-yellow.png +0 -0
  502. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resource.png +0 -0
  503. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resourcegroup.png +0 -0
  504. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/task.png +0 -0
  505. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/taskgroup.png +0 -0
  506. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-down.png +0 -0
  507. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-flat.png +0 -0
  508. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-up.png +0 -0
  509. data/test/TestSuite/Scheduler/Errors/overbooked_duration.tjp +11 -0
  510. data/test/TestSuite/Scheduler/Errors/overbooked_effort.tjp +11 -0
  511. data/test/TestSuite/Scheduler/Errors/overbooked_length.tjp +13 -0
  512. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/scripts/wz_tooltip.js +0 -0
  513. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  514. data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
  515. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +5 -2
  516. data/test/TestSuite/Syntax/Errors/scenario_after_tracking.tjp +8 -0
  517. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  518. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  519. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  520. data/test/test_Limits.rb +38 -30
  521. data/test/test_Scheduler.rb +2 -2
  522. data/test/test_ShiftAssignments.rb +8 -8
  523. data/test/test_WorkingHours.rb +4 -4
  524. metadata +1015 -1005
  525. data/lib/exchangebug.rb +0 -42
  526. data/lib/ruby-signal-bug.rb +0 -55
  527. data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -60
  528. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -80
  529. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  530. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  531. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.csv +0 -412
  532. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -680
  533. data/test/TestSuite/ReportGenerator/Correct/DependencyList.csv +0 -4
  534. data/test/TestSuite/ReportGenerator/Correct/DependencyList.tjp +0 -25
  535. data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -8
  536. data/test/TestSuite/ReportGenerator/Correct/Journal-2.csv +0 -8
  537. data/test/TestSuite/ReportGenerator/Correct/Journal-3.html +0 -28
  538. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  539. data/test/TestSuite/ReportGenerator/Correct/opennodes-1.csv +0 -2
  540. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  541. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  542. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  543. data/test/TestSuite/Scheduler/' +0 -23
  544. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -86
  545. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +0 -413
  546. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  547. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  548. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  549. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  550. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  551. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  552. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  553. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  554. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  555. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  556. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  557. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  558. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  559. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
  560. data/test/TestSuite/Syntax/Correct/DST.tjp +0 -11
  561. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
  562. data/test/TestSuite/TimeSheets/receiver.log.mod +0 -1056
  563. data/test/TestSuite/TimeSheets/uu.txt +0 -29
@@ -87,6 +87,8 @@
87
87
 
88
88
  <li><a href="#method-i-alertLevelName">#alertLevelName</a></li>
89
89
 
90
+ <li><a href="#method-i-anyResourceAvailable%3F">#anyResourceAvailable?</a></li>
91
+
90
92
  <li><a href="#method-i-attributeName">#attributeName</a></li>
91
93
 
92
94
  <li><a href="#method-i-checkReports">#checkReports</a></li>
@@ -95,6 +97,8 @@
95
97
 
96
98
  <li><a href="#method-i-collectTimeOffIntervals">#collectTimeOffIntervals</a></li>
97
99
 
100
+ <li><a href="#method-i-computeResourceAvailabilities">#computeResourceAvailabilities</a></li>
101
+
98
102
  <li><a href="#method-i-convertToDailyLoad">#convertToDailyLoad</a></li>
99
103
 
100
104
  <li><a href="#method-i-dailyWorkingHours">#dailyWorkingHours</a></li>
@@ -111,6 +115,8 @@
111
115
 
112
116
  <li><a href="#method-i-generateReports">#generateReports</a></li>
113
117
 
118
+ <li><a href="#method-i-hasWorkingTime">#hasWorkingTime</a></li>
119
+
114
120
  <li><a href="#method-i-idxToDate">#idxToDate</a></li>
115
121
 
116
122
  <li><a href="#method-i-initScoreboards">#initScoreboards</a></li>
@@ -155,6 +161,8 @@
155
161
 
156
162
  <li><a href="#method-i-to_s">#to_s</a></li>
157
163
 
164
+ <li><a href="#method-i-warning">#warning</a></li>
165
+
158
166
  <li><a href="#method-i-weeklyWorkingDays">#weeklyWorkingDays</a></li>
159
167
 
160
168
  <li><a href="#method-i-workingDays">#workingDays</a></li>
@@ -297,12 +305,24 @@
297
305
 
298
306
  <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
299
307
 
308
+ <li><a href="../TaskJuggler/ICalReport.html">TaskJuggler::ICalReport</a></li>
309
+
310
+ <li><a href="../TaskJuggler/ICalendar.html">TaskJuggler::ICalendar</a></li>
311
+
312
+ <li><a href="../TaskJuggler/ICalendar/Component.html">TaskJuggler::ICalendar::Component</a></li>
313
+
314
+ <li><a href="../TaskJuggler/ICalendar/Event.html">TaskJuggler::ICalendar::Event</a></li>
315
+
316
+ <li><a href="../TaskJuggler/ICalendar/Journal.html">TaskJuggler::ICalendar::Journal</a></li>
317
+
318
+ <li><a href="../TaskJuggler/ICalendar/Person.html">TaskJuggler::ICalendar::Person</a></li>
319
+
320
+ <li><a href="../TaskJuggler/ICalendar/Todo.html">TaskJuggler::ICalendar::Todo</a></li>
321
+
300
322
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
301
323
 
302
324
  <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
303
325
 
304
- <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
305
-
306
326
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
307
327
 
308
328
  <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
@@ -417,6 +437,8 @@
417
437
 
418
438
  <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
419
439
 
440
+ <li><a href="../TaskJuggler/ReportScenario.html">TaskJuggler::ReportScenario</a></li>
441
+
420
442
  <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
421
443
 
422
444
  <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
@@ -475,6 +497,8 @@
475
497
 
476
498
  <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
477
499
 
500
+ <li><a href="../TaskJuggler/ScoreboardInterval.html">TaskJuggler::ScoreboardInterval</a></li>
501
+
478
502
  <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
479
503
 
480
504
  <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
@@ -521,6 +545,10 @@
521
545
 
522
546
  <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
523
547
 
548
+ <li><a href="../TaskJuggler/TagFile.html">TaskJuggler::TagFile</a></li>
549
+
550
+ <li><a href="../TaskJuggler/TagFile/TagFileEntry.html">TaskJuggler::TagFile::TagFileEntry</a></li>
551
+
524
552
  <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
525
553
 
526
554
  <li><a href="../TaskJuggler/TaskDepListAttribute.html">TaskJuggler::TaskDepListAttribute</a></li>
@@ -571,6 +599,10 @@
571
599
 
572
600
  <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
573
601
 
602
+ <li><a href="../TaskJuggler/TimeInterval.html">TaskJuggler::TimeInterval</a></li>
603
+
604
+ <li><a href="../TaskJuggler/TimeIntervalListAttribute.html">TaskJuggler::TimeIntervalListAttribute</a></li>
605
+
574
606
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
575
607
 
576
608
  <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
@@ -923,24 +955,24 @@ granularity is reduced.
923
955
  <div class="method-source-code"
924
956
  id="max-chedule-ranularity-source">
925
957
  <pre>
926
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 888</span>
927
- 888: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
928
- 889: <span class="ruby-identifier">refTime</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>)
929
- 890: <span class="ruby-keyword kw">case</span> (<span class="ruby-identifier">min</span> = <span class="ruby-identifier">refTime</span>.<span class="ruby-identifier">getlocal</span>.<span class="ruby-identifier">min</span>)
930
- 891: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
931
- 892: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
932
- 893: <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
933
- 894: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
934
- 895: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
935
- 896: <span class="ruby-value">30</span> * <span class="ruby-value">60</span>
936
- 897: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
937
- 898: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
938
- 899: <span class="ruby-comment cmt"># minutes</span>
939
- 900: <span class="ruby-value">15</span> * <span class="ruby-value">60</span>
940
- 901: <span class="ruby-keyword kw">else</span>
941
- 902: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
942
- 903: <span class="ruby-keyword kw">end</span>
943
- 904: <span class="ruby-keyword kw">end</span></pre>
958
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 962</span>
959
+ 962: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
960
+ 963: <span class="ruby-identifier">refTime</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>)
961
+ 964: <span class="ruby-keyword kw">case</span> (<span class="ruby-identifier">min</span> = <span class="ruby-identifier">refTime</span>.<span class="ruby-identifier">getlocal</span>.<span class="ruby-identifier">min</span>)
962
+ 965: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
963
+ 966: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
964
+ 967: <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
965
+ 968: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
966
+ 969: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
967
+ 970: <span class="ruby-value">30</span> * <span class="ruby-value">60</span>
968
+ 971: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
969
+ 972: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
970
+ 973: <span class="ruby-comment cmt"># minutes</span>
971
+ 974: <span class="ruby-value">15</span> * <span class="ruby-value">60</span>
972
+ 975: <span class="ruby-keyword kw">else</span>
973
+ 976: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
974
+ 977: <span class="ruby-keyword kw">end</span>
975
+ 978: <span class="ruby-keyword kw">end</span></pre>
944
976
  </div>
945
977
 
946
978
  </div>
@@ -1037,307 +1069,339 @@ The constructor will set default values for all project attributes.
1037
1069
  117: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1038
1070
  118: [ <span class="ruby-value str">'active'</span>, <span class="ruby-value str">'Enabled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1039
1071
  119: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
1040
- 120: [ <span class="ruby-value str">'ownbookings'</span>, <span class="ruby-value str">'Own Bookings'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1041
- 121: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
1042
- 122: [ <span class="ruby-value str">'projection'</span>, <span class="ruby-value str">'Projection Mode'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1043
- 123: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1044
- 124: ]
1045
- 125: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1046
- 126:
1047
- 127: <span class="ruby-ivar">@shifts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1048
- 128: <span class="ruby-identifier">attrs</span> = [
1049
- 129: <span class="ruby-comment cmt"># ID Name Type</span>
1050
- 130: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1051
- 131: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1052
- 132: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1053
- 133: [ <span class="ruby-value str">'replace'</span>, <span class="ruby-value str">'Replace'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1054
- 134: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1055
- 135: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1056
- 136: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">timeZone</span> ],
1057
- 137: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1072
+ 120: [ <span class="ruby-value str">'id'</span>, <span class="ruby-value str">'ID'</span>, <span class="ruby-constant">StringAttribute</span>,
1073
+ 121: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1074
+ 122: [ <span class="ruby-value str">'name'</span>, <span class="ruby-value str">'Name'</span>, <span class="ruby-constant">StringAttribute</span>,
1075
+ 123: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1076
+ 124: [ <span class="ruby-value str">'ownbookings'</span>, <span class="ruby-value str">'Own Bookings'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1077
+ 125: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
1078
+ 126: [ <span class="ruby-value str">'projection'</span>, <span class="ruby-value str">'Projection Mode'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1079
+ 127: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1080
+ 128: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-value str">'No'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1081
+ 129: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1082
+ 130: ]
1083
+ 131: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1084
+ 132:
1085
+ 133: <span class="ruby-ivar">@shifts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1086
+ 134: <span class="ruby-identifier">attrs</span> = [
1087
+ 135: <span class="ruby-comment cmt"># ID Name Type</span>
1088
+ 136: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1089
+ 137: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1058
1090
  138: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1059
- 139: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
1060
- 140: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
1061
- 141: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1062
- 142: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1063
- 143: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
1064
- 144: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
1065
- 145: ]
1066
- 146: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1067
- 147:
1068
- 148: <span class="ruby-ivar">@accounts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1069
- 149: <span class="ruby-identifier">attrs</span> = [
1070
- 150: <span class="ruby-comment cmt"># ID Name Type</span>
1071
- 151: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1072
- 152: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1073
- 153: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1074
- 154: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1075
- 155: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1076
- 156: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1077
- 157: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1078
- 158: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1079
- 159: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ]
1080
- 160: ]
1081
- 161: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@accounts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1082
- 162:
1083
- 163: <span class="ruby-ivar">@resources</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1084
- 164: <span class="ruby-identifier">attrs</span> = [
1085
- 165: <span class="ruby-comment cmt"># ID Name Type</span>
1086
- 166: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1087
- 167: [ <span class="ruby-value str">'alloctdeffort'</span>, <span class="ruby-value str">'Alloctd. Effort'</span>, <span class="ruby-constant">FloatAttribute</span>,
1088
- 168: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1089
- 169: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1090
- 170: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1091
- 171: [ <span class="ruby-value str">'duties'</span>, <span class="ruby-value str">'Duties'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1092
- 172: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1093
- 173: [ <span class="ruby-value str">'directreports'</span>, <span class="ruby-value str">'Direct Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1094
- 174: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1095
- 175: [ <span class="ruby-value str">'efficiency'</span>,<span class="ruby-value str">'Efficiency'</span>, <span class="ruby-constant">FloatAttribute</span>,
1096
- 176: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
1097
- 177: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Total Effort'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1098
- 178: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1099
- 179: [ <span class="ruby-value str">'email'</span>, <span class="ruby-value str">'Email'</span>, <span class="ruby-constant">StringAttribute</span>,
1100
- 180: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1101
- 181: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Conditions'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1102
- 182: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1103
- 183: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1104
- 184: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1105
- 185: [ <span class="ruby-value str">'fte'</span>, <span class="ruby-value str">'FTE'</span>, <span class="ruby-constant">FloatAttribute</span>,
1106
- 186: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
1107
- 187: [ <span class="ruby-value str">'headcount'</span>, <span class="ruby-value str">'Headcount'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1108
- 188: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ],
1109
- 189: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1110
- 190: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1111
- 191: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1112
- 192: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1113
- 193: [ <span class="ruby-value str">'managers'</span>, <span class="ruby-value str">'Managers'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1114
- 194: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1115
- 195: [ <span class="ruby-value str">'rate'</span>, <span class="ruby-value str">'Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
1116
- 196: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1117
- 197: [ <span class="ruby-value str">'reports'</span>, <span class="ruby-value str">'Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1118
- 198: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1119
- 199: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1120
- 200: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1121
- 201: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1122
- 202: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1123
- 203: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
1124
- 204: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
1125
- 205: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1126
- 206: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1127
- 207: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1128
- 208: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1129
- 209: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
1130
- 210: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
1131
- 211: ]
1132
- 212: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1133
- 213:
1134
- 214: <span class="ruby-ivar">@tasks</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
1135
- 215: <span class="ruby-identifier">attrs</span> = [
1136
- 216: <span class="ruby-comment cmt"># ID Name Type</span>
1137
- 217: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1138
- 218: [ <span class="ruby-value str">'allocate'</span>, <span class="ruby-value str">'Allocations'</span>, <span class="ruby-constant">AllocationAttribute</span>,
1139
- 219: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1140
- 220: [ <span class="ruby-value str">'assignedresources'</span>, <span class="ruby-value str">'Assigned Resources'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1141
- 221: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1142
- 222: [ <span class="ruby-value str">'booking'</span>, <span class="ruby-value str">'Bookings'</span>, <span class="ruby-constant">BookingListAttribute</span>,
1143
- 223: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1144
- 224: [ <span class="ruby-value str">'charge'</span>, <span class="ruby-value str">'Charges'</span>, <span class="ruby-constant">ChargeListAttribute</span>,
1145
- 225: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1146
- 226: [ <span class="ruby-value str">'chargeset'</span>, <span class="ruby-value str">'Charge Sets'</span>, <span class="ruby-constant">ChargeSetListAttribute</span>,
1147
- 227: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1148
- 228: [ <span class="ruby-value str">'complete'</span>, <span class="ruby-value str">'Completion'</span>, <span class="ruby-constant">FloatAttribute</span>,
1149
- 229: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1150
- 230: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1151
- 231: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1152
- 232: [ <span class="ruby-value str">'depends'</span>, <span class="ruby-value str">'Preceding tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1153
- 233: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1154
- 234: [ <span class="ruby-value str">'duration'</span>, <span class="ruby-value str">'Duration'</span>, <span class="ruby-constant">DurationAttribute</span>,
1155
- 235: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1156
- 236: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Effort'</span>, <span class="ruby-constant">DurationAttribute</span>,
1157
- 237: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1158
- 238: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1159
- 239: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1160
- 240: [ <span class="ruby-value str">'endpreds'</span>, <span class="ruby-value str">'End Preds.'</span>, <span class="ruby-constant">TaskDepListAttribute</span>,
1091
+ 139: [ <span class="ruby-value str">'id'</span>, <span class="ruby-value str">'ID'</span>, <span class="ruby-constant">StringAttribute</span>,
1092
+ 140: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1093
+ 141: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1094
+ 142: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1095
+ 143: [ <span class="ruby-value str">'name'</span>, <span class="ruby-value str">'Name'</span>, <span class="ruby-constant">StringAttribute</span>,
1096
+ 144: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1097
+ 145: [ <span class="ruby-value str">'replace'</span>, <span class="ruby-value str">'Replace'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1098
+ 146: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1099
+ 147: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-value str">'No'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1100
+ 148: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1101
+ 149: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1102
+ 150: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">timeZone</span> ],
1103
+ 151: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1104
+ 152: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1105
+ 153: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">TimeIntervalListAttribute</span>,
1106
+ 154: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
1107
+ 155: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
1108
+ 156: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
1109
+ 157: ]
1110
+ 158: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1111
+ 159:
1112
+ 160: <span class="ruby-ivar">@accounts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1113
+ 161: <span class="ruby-identifier">attrs</span> = [
1114
+ 162: <span class="ruby-comment cmt"># ID Name Type</span>
1115
+ 163: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1116
+ 164: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1117
+ 165: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1118
+ 166: [ <span class="ruby-value str">'id'</span>, <span class="ruby-value str">'ID'</span>, <span class="ruby-constant">StringAttribute</span>,
1119
+ 167: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1120
+ 168: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1121
+ 169: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1122
+ 170: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1123
+ 171: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1124
+ 172: [ <span class="ruby-value str">'name'</span>, <span class="ruby-value str">'Name'</span>, <span class="ruby-constant">StringAttribute</span>,
1125
+ 173: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1126
+ 174: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-value str">'No'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1127
+ 175: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1128
+ 176: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1129
+ 177: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ]
1130
+ 178: ]
1131
+ 179: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@accounts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1132
+ 180:
1133
+ 181: <span class="ruby-ivar">@resources</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1134
+ 182: <span class="ruby-identifier">attrs</span> = [
1135
+ 183: <span class="ruby-comment cmt"># ID Name Type</span>
1136
+ 184: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1137
+ 185: [ <span class="ruby-value str">'alloctdeffort'</span>, <span class="ruby-value str">'Alloctd. Effort'</span>, <span class="ruby-constant">FloatAttribute</span>,
1138
+ 186: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1139
+ 187: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1140
+ 188: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1141
+ 189: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1142
+ 190: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1143
+ 191: [ <span class="ruby-value str">'duties'</span>, <span class="ruby-value str">'Duties'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1144
+ 192: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1145
+ 193: [ <span class="ruby-value str">'directreports'</span>, <span class="ruby-value str">'Direct Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1146
+ 194: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1147
+ 195: [ <span class="ruby-value str">'efficiency'</span>,<span class="ruby-value str">'Efficiency'</span>, <span class="ruby-constant">FloatAttribute</span>,
1148
+ 196: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
1149
+ 197: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Total Effort'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1150
+ 198: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1151
+ 199: [ <span class="ruby-value str">'email'</span>, <span class="ruby-value str">'Email'</span>, <span class="ruby-constant">StringAttribute</span>,
1152
+ 200: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1153
+ 201: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Conditions'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1154
+ 202: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1155
+ 203: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1156
+ 204: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1157
+ 205: [ <span class="ruby-value str">'fte'</span>, <span class="ruby-value str">'FTE'</span>, <span class="ruby-constant">FloatAttribute</span>,
1158
+ 206: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
1159
+ 207: [ <span class="ruby-value str">'headcount'</span>, <span class="ruby-value str">'Headcount'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1160
+ 208: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ],
1161
+ 209: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1162
+ 210: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1163
+ 211: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1164
+ 212: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1165
+ 213: [ <span class="ruby-value str">'managers'</span>, <span class="ruby-value str">'Managers'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1166
+ 214: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1167
+ 215: [ <span class="ruby-value str">'rate'</span>, <span class="ruby-value str">'Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
1168
+ 216: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1169
+ 217: [ <span class="ruby-value str">'reports'</span>, <span class="ruby-value str">'Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1170
+ 218: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1171
+ 219: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-value str">'No'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1172
+ 220: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1173
+ 221: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1174
+ 222: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1175
+ 223: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1176
+ 224: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1177
+ 225: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">TimeIntervalListAttribute</span>,
1178
+ 226: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
1179
+ 227: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1180
+ 228: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1181
+ 229: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
1182
+ 230: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
1183
+ 231: ]
1184
+ 232: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1185
+ 233:
1186
+ 234: <span class="ruby-ivar">@tasks</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
1187
+ 235: <span class="ruby-identifier">attrs</span> = [
1188
+ 236: <span class="ruby-comment cmt"># ID Name Type</span>
1189
+ 237: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1190
+ 238: [ <span class="ruby-value str">'allocate'</span>, <span class="ruby-value str">'Allocations'</span>, <span class="ruby-constant">AllocationAttribute</span>,
1191
+ 239: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1192
+ 240: [ <span class="ruby-value str">'assignedresources'</span>, <span class="ruby-value str">'Assigned Resources'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1161
1193
  241: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1162
- 242: [ <span class="ruby-value str">'endsuccs'</span>, <span class="ruby-value str">'End Succs.'</span>, <span class="ruby-constant">TaskDepListAttribute</span>,
1194
+ 242: [ <span class="ruby-value str">'booking'</span>, <span class="ruby-value str">'Bookings'</span>, <span class="ruby-constant">BookingListAttribute</span>,
1163
1195
  243: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1164
- 244: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Conditions'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1165
- 245: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1166
- 246: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1167
- 247: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1168
- 248: [ <span class="ruby-value str">'forward'</span>, <span class="ruby-value str">'Scheduling'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1169
- 249: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span> ],
1170
- 250: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1171
- 251: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1172
- 252: [ <span class="ruby-value str">'length'</span>, <span class="ruby-value str">'Length'</span>, <span class="ruby-constant">DurationAttribute</span>,
1173
- 253: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1174
- 254: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1175
- 255: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1176
- 256: [ <span class="ruby-value str">'maxend'</span>, <span class="ruby-value str">'Max. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1177
- 257: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1178
- 258: [ <span class="ruby-value str">'maxstart'</span>, <span class="ruby-value str">'Max. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1179
- 259: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1180
- 260: [ <span class="ruby-value str">'milestone'</span>, <span class="ruby-value str">'Milestone'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1181
- 261: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1182
- 262: [ <span class="ruby-value str">'minend'</span>, <span class="ruby-value str">'Min. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1183
- 263: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1184
- 264: [ <span class="ruby-value str">'minstart'</span>, <span class="ruby-value str">'Min. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1185
- 265: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1186
- 266: [ <span class="ruby-value str">'note'</span>, <span class="ruby-value str">'Note'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1187
- 267: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1188
- 268: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-value str">'Path Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1189
- 269: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1190
- 270: [ <span class="ruby-value str">'precedes'</span>, <span class="ruby-value str">'Following tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1191
- 271: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1192
- 272: [ <span class="ruby-value str">'priority'</span>, <span class="ruby-value str">'Priority'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1193
- 273: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">500</span> ],
1194
- 274: [ <span class="ruby-value str">'projectid'</span>, <span class="ruby-value str">'Project ID'</span>, <span class="ruby-constant">SymbolAttribute</span>,
1195
- 275: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1196
- 276: [ <span class="ruby-value str">'responsible'</span>, <span class="ruby-value str">'Responsible'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1197
- 277: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1198
- 278: [ <span class="ruby-value str">'scheduled'</span>, <span class="ruby-value str">'Scheduled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1199
- 279: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1200
- 280: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1201
- 281: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1202
- 282: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1196
+ 244: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1197
+ 245: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1198
+ 246: [ <span class="ruby-value str">'charge'</span>, <span class="ruby-value str">'Charges'</span>, <span class="ruby-constant">ChargeListAttribute</span>,
1199
+ 247: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1200
+ 248: [ <span class="ruby-value str">'chargeset'</span>, <span class="ruby-value str">'Charge Sets'</span>, <span class="ruby-constant">ChargeSetListAttribute</span>,
1201
+ 249: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1202
+ 250: [ <span class="ruby-value str">'complete'</span>, <span class="ruby-value str">'Completion'</span>, <span class="ruby-constant">FloatAttribute</span>,
1203
+ 251: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1204
+ 252: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1205
+ 253: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1206
+ 254: [ <span class="ruby-value str">'depends'</span>, <span class="ruby-value str">'Preceding tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1207
+ 255: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1208
+ 256: [ <span class="ruby-value str">'duration'</span>, <span class="ruby-value str">'Duration'</span>, <span class="ruby-constant">DurationAttribute</span>,
1209
+ 257: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1210
+ 258: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Effort'</span>, <span class="ruby-constant">DurationAttribute</span>,
1211
+ 259: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1212
+ 260: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1213
+ 261: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1214
+ 262: [ <span class="ruby-value str">'endpreds'</span>, <span class="ruby-value str">'End Preds.'</span>, <span class="ruby-constant">TaskDepListAttribute</span>,
1215
+ 263: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1216
+ 264: [ <span class="ruby-value str">'endsuccs'</span>, <span class="ruby-value str">'End Succs.'</span>, <span class="ruby-constant">TaskDepListAttribute</span>,
1217
+ 265: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1218
+ 266: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Conditions'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1219
+ 267: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1220
+ 268: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1221
+ 269: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1222
+ 270: [ <span class="ruby-value str">'forward'</span>, <span class="ruby-value str">'Scheduling'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1223
+ 271: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span> ],
1224
+ 272: [ <span class="ruby-value str">'id'</span>, <span class="ruby-value str">'ID'</span>, <span class="ruby-constant">StringAttribute</span>,
1225
+ 273: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1226
+ 274: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1227
+ 275: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1228
+ 276: [ <span class="ruby-value str">'length'</span>, <span class="ruby-value str">'Length'</span>, <span class="ruby-constant">DurationAttribute</span>,
1229
+ 277: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1230
+ 278: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1231
+ 279: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1232
+ 280: [ <span class="ruby-value str">'maxend'</span>, <span class="ruby-value str">'Max. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1233
+ 281: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1234
+ 282: [ <span class="ruby-value str">'maxstart'</span>, <span class="ruby-value str">'Max. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1203
1235
  283: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1204
- 284: [ <span class="ruby-value str">'startpreds'</span>, <span class="ruby-value str">'Start Preds.'</span>, <span class="ruby-constant">TaskDepListAttribute</span>,
1205
- 285: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1206
- 286: [ <span class="ruby-value str">'startsuccs'</span>, <span class="ruby-value str">'Start Succs.'</span>, <span class="ruby-constant">TaskDepListAttribute</span>,
1207
- 287: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1208
- 288: [ <span class="ruby-value str">'status'</span>, <span class="ruby-value str">'Task Status'</span>, <span class="ruby-constant">StringAttribute</span>,
1209
- 289: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1210
- 290: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1211
- 291: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1212
- 292: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1213
- 293: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1214
- 294: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1215
- 295: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ]
1216
- 296: ]
1217
- 297: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1218
- 298:
1219
- 299: <span class="ruby-ivar">@reports</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
1220
- 300: <span class="ruby-identifier">attrs</span> = [
1221
- 301: <span class="ruby-comment cmt"># ID Name Type</span>
1222
- 302: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1223
- 303: [ <span class="ruby-value str">'caption'</span>, <span class="ruby-value str">'Caption'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1224
- 304: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1225
- 305: [ <span class="ruby-value str">'center'</span>, <span class="ruby-value str">'Center'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1226
- 306: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1227
- 307: [ <span class="ruby-value str">'columns'</span>, <span class="ruby-value str">'Columns'</span>, <span class="ruby-constant">ColumnListAttribute</span>,
1228
- 308: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1229
- 309: [ <span class="ruby-value str">'costAccount'</span>, <span class="ruby-value str">'Cost Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1230
- 310: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1231
- 311: [ <span class="ruby-value str">'currencyFormat'</span>, <span class="ruby-value str">'Currency Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1232
- 312: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1233
- 313: [ <span class="ruby-value str">'definitions'</span>, <span class="ruby-value str">'Definitions'</span>, <span class="ruby-constant">DefinitionListAttribute</span>,
1234
- 314: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1235
- 315: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1236
- 316: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1237
- 317: [ <span class="ruby-value str">'epilog'</span>, <span class="ruby-value str">'Epilog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1238
- 318: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1239
- 319: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1240
- 320: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1241
- 321: [ <span class="ruby-value str">'footer'</span>, <span class="ruby-value str">'Footer'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1242
- 322: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1243
- 323: [ <span class="ruby-value str">'formats'</span>, <span class="ruby-value str">'Formats'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1244
- 324: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1245
- 325: [ <span class="ruby-value str">'ganttBars'</span>, <span class="ruby-value str">'Gantt Bars'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1246
- 326: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
1247
- 327: [ <span class="ruby-value str">'header'</span>, <span class="ruby-value str">'Header'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1248
- 328: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1249
- 329: [ <span class="ruby-value str">'headline'</span>, <span class="ruby-value str">'Headline'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1250
- 330: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1251
- 331: [ <span class="ruby-value str">'hideJournalEntry'</span>, <span class="ruby-value str">'Hide JournalEntry'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1236
+ 284: [ <span class="ruby-value str">'milestone'</span>, <span class="ruby-value str">'Milestone'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1237
+ 285: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1238
+ 286: [ <span class="ruby-value str">'minend'</span>, <span class="ruby-value str">'Min. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1239
+ 287: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1240
+ 288: [ <span class="ruby-value str">'minstart'</span>, <span class="ruby-value str">'Min. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1241
+ 289: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1242
+ 290: [ <span class="ruby-value str">'name'</span>, <span class="ruby-value str">'Name'</span>, <span class="ruby-constant">StringAttribute</span>,
1243
+ 291: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1244
+ 292: [ <span class="ruby-value str">'note'</span>, <span class="ruby-value str">'Note'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1245
+ 293: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1246
+ 294: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-value str">'Path Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1247
+ 295: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1248
+ 296: [ <span class="ruby-value str">'precedes'</span>, <span class="ruby-value str">'Following tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1249
+ 297: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1250
+ 298: [ <span class="ruby-value str">'priority'</span>, <span class="ruby-value str">'Priority'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1251
+ 299: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">500</span> ],
1252
+ 300: [ <span class="ruby-value str">'projectid'</span>, <span class="ruby-value str">'Project ID'</span>, <span class="ruby-constant">SymbolAttribute</span>,
1253
+ 301: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1254
+ 302: [ <span class="ruby-value str">'responsible'</span>, <span class="ruby-value str">'Responsible'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1255
+ 303: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1256
+ 304: [ <span class="ruby-value str">'scheduled'</span>, <span class="ruby-value str">'Scheduled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1257
+ 305: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1258
+ 306: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-value str">'No'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1259
+ 307: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1260
+ 308: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1261
+ 309: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1262
+ 310: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1263
+ 311: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1264
+ 312: [ <span class="ruby-value str">'startpreds'</span>, <span class="ruby-value str">'Start Preds.'</span>, <span class="ruby-constant">TaskDepListAttribute</span>,
1265
+ 313: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1266
+ 314: [ <span class="ruby-value str">'startsuccs'</span>, <span class="ruby-value str">'Start Succs.'</span>, <span class="ruby-constant">TaskDepListAttribute</span>,
1267
+ 315: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1268
+ 316: [ <span class="ruby-value str">'status'</span>, <span class="ruby-value str">'Task Status'</span>, <span class="ruby-constant">StringAttribute</span>,
1269
+ 317: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1270
+ 318: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1271
+ 319: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1272
+ 320: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1273
+ 321: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ]
1274
+ 322: ]
1275
+ 323: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1276
+ 324:
1277
+ 325: <span class="ruby-ivar">@reports</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
1278
+ 326: <span class="ruby-identifier">attrs</span> = [
1279
+ 327: <span class="ruby-comment cmt"># ID Name Type</span>
1280
+ 328: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1281
+ 329: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1282
+ 330: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1283
+ 331: [ <span class="ruby-value str">'caption'</span>, <span class="ruby-value str">'Caption'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1252
1284
  332: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1253
- 333: [ <span class="ruby-value str">'hideResource'</span>, <span class="ruby-value str">'Hide Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1285
+ 333: [ <span class="ruby-value str">'center'</span>, <span class="ruby-value str">'Center'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1254
1286
  334: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1255
- 335: [ <span class="ruby-value str">'hideTask'</span>, <span class="ruby-value str">'Hide Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1256
- 336: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1257
- 337: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1258
- 338: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1259
- 339: [ <span class="ruby-value str">'interactive'</span>, <span class="ruby-value str">'Interactive'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1260
- 340: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1261
- 341: [ <span class="ruby-value str">'left'</span>, <span class="ruby-value str">'Left'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1262
- 342: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1263
- 343: [ <span class="ruby-value str">'loadUnit'</span>, <span class="ruby-value str">'Load Unit'</span>, <span class="ruby-constant">StringAttribute</span>,
1287
+ 335: [ <span class="ruby-value str">'columns'</span>, <span class="ruby-value str">'Columns'</span>, <span class="ruby-constant">ColumnListAttribute</span>,
1288
+ 336: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1289
+ 337: [ <span class="ruby-value str">'costAccount'</span>, <span class="ruby-value str">'Cost Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1290
+ 338: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1291
+ 339: [ <span class="ruby-value str">'currencyFormat'</span>, <span class="ruby-value str">'Currency Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1292
+ 340: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1293
+ 341: [ <span class="ruby-value str">'definitions'</span>, <span class="ruby-value str">'Definitions'</span>, <span class="ruby-constant">DefinitionListAttribute</span>,
1294
+ 342: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1295
+ 343: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1264
1296
  344: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1265
- 345: [ <span class="ruby-value str">'now'</span>, <span class="ruby-value str">'Now'</span>, <span class="ruby-constant">DateAttribute</span>,
1266
- 346: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1267
- 347: [ <span class="ruby-value str">'numberFormat'</span>, <span class="ruby-value str">'Number Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1268
- 348: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1269
- 349: [ <span class="ruby-value str">'openNodes'</span>, <span class="ruby-value str">'Open Nodes'</span>, <span class="ruby-constant">NodeListAttribute</span>,
1270
- 350: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1271
- 351: [ <span class="ruby-value str">'prolog'</span>, <span class="ruby-value str">'Prolog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1272
- 352: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span>],
1273
- 353: [ <span class="ruby-value str">'resourceAttributes'</span>, <span class="ruby-value str">'Resource Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1274
- 354: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1275
- 355: [ <span class="ruby-value str">'resourceRoot'</span>, <span class="ruby-value str">'resource Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1297
+ 345: [ <span class="ruby-value str">'epilog'</span>, <span class="ruby-value str">'Epilog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1298
+ 346: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1299
+ 347: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1300
+ 348: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1301
+ 349: [ <span class="ruby-value str">'footer'</span>, <span class="ruby-value str">'Footer'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1302
+ 350: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1303
+ 351: [ <span class="ruby-value str">'formats'</span>, <span class="ruby-value str">'Formats'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1304
+ 352: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1305
+ 353: [ <span class="ruby-value str">'ganttBars'</span>, <span class="ruby-value str">'Gantt Bars'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1306
+ 354: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
1307
+ 355: [ <span class="ruby-value str">'header'</span>, <span class="ruby-value str">'Header'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1276
1308
  356: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1277
- 357: [ <span class="ruby-value str">'revenueAccount'</span>, <span class="ruby-value str">'Revenue Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1278
- 358: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1279
- 359: [ <span class="ruby-value str">'right'</span>, <span class="ruby-value str">'Right'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1309
+ 357: [ <span class="ruby-value str">'headline'</span>, <span class="ruby-value str">'Headline'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1310
+ 358: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1311
+ 359: [ <span class="ruby-value str">'hideJournalEntry'</span>, <span class="ruby-value str">'Hide JournalEntry'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1280
1312
  360: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1281
- 361: [ <span class="ruby-value str">'rollupResource'</span>, <span class="ruby-value str">'Rollup Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1313
+ 361: [ <span class="ruby-value str">'hideResource'</span>, <span class="ruby-value str">'Hide Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1282
1314
  362: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1283
- 363: [ <span class="ruby-value str">'rollupTask'</span>, <span class="ruby-value str">'Rollup Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1284
- 364: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1285
- 365: [ <span class="ruby-value str">'scenarios'</span>, <span class="ruby-value str">'Scenarios'</span>, <span class="ruby-constant">ScenarioListAttribute</span>,
1286
- 366: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [ <span class="ruby-value">0</span> ] ],
1287
- 367: [ <span class="ruby-value str">'selfcontained'</span>, <span class="ruby-value str">'Selfcontained'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1288
- 368: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1289
- 369: [ <span class="ruby-value str">'shortTimeFormat'</span>, <span class="ruby-value str">'Short Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1290
- 370: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1291
- 371: [ <span class="ruby-value str">'sortResources'</span>, <span class="ruby-value str">'Sort Resources'</span>, <span class="ruby-constant">SortListAttribute</span>,
1292
- 372: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1293
- 373: [ <span class="ruby-value str">'sortTasks'</span>, <span class="ruby-value str">'Sort Tasks'</span>, <span class="ruby-constant">SortListAttribute</span>,
1294
- 374: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1295
- 375: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1296
- 376: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1297
- 377: [ <span class="ruby-value str">'taskAttributes'</span>, <span class="ruby-value str">'Task Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1298
- 378: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1299
- 379: [ <span class="ruby-value str">'taskRoot'</span>, <span class="ruby-value str">'Task Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1300
- 380: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1301
- 381: [ <span class="ruby-value str">'timeFormat'</span>, <span class="ruby-value str">'Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1302
- 382: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1303
- 383: [ <span class="ruby-value str">'timeOffId'</span>, <span class="ruby-value str">'Time Off ID'</span>, <span class="ruby-constant">StringAttribute</span>,
1304
- 384: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1305
- 385: [ <span class="ruby-value str">'timeOffName'</span>, <span class="ruby-value str">'Time Off Name'</span>, <span class="ruby-constant">StringAttribute</span>,
1306
- 386: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1307
- 387: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1308
- 388: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">timeZone</span> ],
1309
- 389: [ <span class="ruby-value str">'title'</span>, <span class="ruby-value str">'Title'</span>, <span class="ruby-constant">StringAttribute</span>,
1310
- 390: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1311
- 391: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1312
- 392: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1313
- 393: [ <span class="ruby-value str">'bsi'</span>, <span class="ruby-value str">'BSI'</span>, <span class="ruby-constant">StringAttribute</span>,
1314
- 394: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1315
- 395: [ <span class="ruby-value str">'weekStartsMonday'</span>, <span class="ruby-value str">'Week Starts Monday'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1316
- 396: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
1317
- 397: ]
1318
- 398: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1319
- 399:
1320
- 400: <span class="ruby-constant">Scenario</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'plan'</span>, <span class="ruby-value str">'Plan Scenario'</span>, <span class="ruby-keyword kw">nil</span>)
1321
- 401:
1322
- 402: <span class="ruby-comment cmt"># A list of files that contained the project data.</span>
1323
- 403: <span class="ruby-ivar">@inputFiles</span> = <span class="ruby-constant">FileList</span>.<span class="ruby-identifier">new</span>
1324
- 404:
1325
- 405: <span class="ruby-ivar">@timeSheets</span> = <span class="ruby-constant">TimeSheets</span>.<span class="ruby-identifier">new</span>
1326
- 406:
1327
- 407: <span class="ruby-comment cmt"># A scoreboard that reflects the global working hours and vacations.</span>
1328
- 408: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
1329
- 409: <span class="ruby-comment cmt"># A scoreboard that reflects the global working hours but no vacations.</span>
1330
- 410: <span class="ruby-ivar">@scoreboardNoVacations</span> = <span class="ruby-keyword kw">nil</span>
1331
- 411:
1332
- 412: <span class="ruby-comment cmt"># The ReportContext provides additional settings to the report that can</span>
1333
- 413: <span class="ruby-comment cmt"># complement or replace the report attributes. Reports can include other</span>
1334
- 414: <span class="ruby-comment cmt"># reports. During report generation, only one context is active, but the</span>
1335
- 415: <span class="ruby-comment cmt"># context of enclosing reports needs to be preserved. Therefor we use a</span>
1336
- 416: <span class="ruby-comment cmt"># stack to implement this.</span>
1337
- 417: <span class="ruby-ivar">@reportContexts</span> = []
1338
- 418: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
1339
- 419: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
1340
- 420: <span class="ruby-keyword kw">end</span></pre>
1315
+ 363: [ <span class="ruby-value str">'hideTask'</span>, <span class="ruby-value str">'Hide Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1316
+ 364: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1317
+ 365: [ <span class="ruby-value str">'id'</span>, <span class="ruby-value str">'ID'</span>, <span class="ruby-constant">StringAttribute</span>,
1318
+ 366: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1319
+ 367: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1320
+ 368: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1321
+ 369: [ <span class="ruby-value str">'interactive'</span>, <span class="ruby-value str">'Interactive'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1322
+ 370: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1323
+ 371: [ <span class="ruby-value str">'left'</span>, <span class="ruby-value str">'Left'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1324
+ 372: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1325
+ 373: [ <span class="ruby-value str">'loadUnit'</span>, <span class="ruby-value str">'Load Unit'</span>, <span class="ruby-constant">StringAttribute</span>,
1326
+ 374: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1327
+ 375: [ <span class="ruby-value str">'name'</span>, <span class="ruby-value str">'Name'</span>, <span class="ruby-constant">StringAttribute</span>,
1328
+ 376: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1329
+ 377: [ <span class="ruby-value str">'now'</span>, <span class="ruby-value str">'Now'</span>, <span class="ruby-constant">DateAttribute</span>,
1330
+ 378: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1331
+ 379: [ <span class="ruby-value str">'numberFormat'</span>, <span class="ruby-value str">'Number Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1332
+ 380: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1333
+ 381: [ <span class="ruby-value str">'openNodes'</span>, <span class="ruby-value str">'Open Nodes'</span>, <span class="ruby-constant">NodeListAttribute</span>,
1334
+ 382: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1335
+ 383: [ <span class="ruby-value str">'prolog'</span>, <span class="ruby-value str">'Prolog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1336
+ 384: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span>],
1337
+ 385: [ <span class="ruby-value str">'resourceAttributes'</span>, <span class="ruby-value str">'Resource Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1338
+ 386: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1339
+ 387: [ <span class="ruby-value str">'resourceRoot'</span>, <span class="ruby-value str">'resource Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1340
+ 388: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1341
+ 389: [ <span class="ruby-value str">'revenueAccount'</span>, <span class="ruby-value str">'Revenue Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1342
+ 390: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1343
+ 391: [ <span class="ruby-value str">'right'</span>, <span class="ruby-value str">'Right'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1344
+ 392: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1345
+ 393: [ <span class="ruby-value str">'rollupResource'</span>, <span class="ruby-value str">'Rollup Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1346
+ 394: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1347
+ 395: [ <span class="ruby-value str">'rollupTask'</span>, <span class="ruby-value str">'Rollup Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1348
+ 396: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1349
+ 397: [ <span class="ruby-value str">'scenarios'</span>, <span class="ruby-value str">'Scenarios'</span>, <span class="ruby-constant">ScenarioListAttribute</span>,
1350
+ 398: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [ <span class="ruby-value">0</span> ] ],
1351
+ 399: [ <span class="ruby-value str">'selfcontained'</span>, <span class="ruby-value str">'Selfcontained'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1352
+ 400: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1353
+ 401: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-value str">'No'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1354
+ 402: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1355
+ 403: [ <span class="ruby-value str">'shortTimeFormat'</span>, <span class="ruby-value str">'Short Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1356
+ 404: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1357
+ 405: [ <span class="ruby-value str">'sortResources'</span>, <span class="ruby-value str">'Sort Resources'</span>, <span class="ruby-constant">SortListAttribute</span>,
1358
+ 406: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1359
+ 407: [ <span class="ruby-value str">'sortTasks'</span>, <span class="ruby-value str">'Sort Tasks'</span>, <span class="ruby-constant">SortListAttribute</span>,
1360
+ 408: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1361
+ 409: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1362
+ 410: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1363
+ 411: [ <span class="ruby-value str">'taskAttributes'</span>, <span class="ruby-value str">'Task Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1364
+ 412: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1365
+ 413: [ <span class="ruby-value str">'taskRoot'</span>, <span class="ruby-value str">'Task Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1366
+ 414: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1367
+ 415: [ <span class="ruby-value str">'timeFormat'</span>, <span class="ruby-value str">'Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1368
+ 416: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1369
+ 417: [ <span class="ruby-value str">'timeOffId'</span>, <span class="ruby-value str">'Time Off ID'</span>, <span class="ruby-constant">StringAttribute</span>,
1370
+ 418: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1371
+ 419: [ <span class="ruby-value str">'timeOffName'</span>, <span class="ruby-value str">'Time Off Name'</span>, <span class="ruby-constant">StringAttribute</span>,
1372
+ 420: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1373
+ 421: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1374
+ 422: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">timeZone</span> ],
1375
+ 423: [ <span class="ruby-value str">'title'</span>, <span class="ruby-value str">'Title'</span>, <span class="ruby-constant">StringAttribute</span>,
1376
+ 424: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1377
+ 425: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1378
+ 426: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1379
+ 427: [ <span class="ruby-value str">'weekStartsMonday'</span>, <span class="ruby-value str">'Week Starts Monday'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1380
+ 428: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
1381
+ 429: ]
1382
+ 430: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1383
+ 431:
1384
+ 432: <span class="ruby-constant">Scenario</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'plan'</span>, <span class="ruby-value str">'Plan Scenario'</span>, <span class="ruby-keyword kw">nil</span>)
1385
+ 433:
1386
+ 434: <span class="ruby-comment cmt"># A list of files that contained the project data.</span>
1387
+ 435: <span class="ruby-ivar">@inputFiles</span> = <span class="ruby-constant">FileList</span>.<span class="ruby-identifier">new</span>
1388
+ 436:
1389
+ 437: <span class="ruby-ivar">@timeSheets</span> = <span class="ruby-constant">TimeSheets</span>.<span class="ruby-identifier">new</span>
1390
+ 438:
1391
+ 439: <span class="ruby-comment cmt"># A scoreboard that reflects the global working hours and vacations.</span>
1392
+ 440: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
1393
+ 441: <span class="ruby-comment cmt"># A scoreboard that reflects the global working hours but no vacations.</span>
1394
+ 442: <span class="ruby-ivar">@scoreboardNoVacations</span> = <span class="ruby-keyword kw">nil</span>
1395
+ 443:
1396
+ 444: <span class="ruby-comment cmt"># The ReportContext provides additional settings to the report that can</span>
1397
+ 445: <span class="ruby-comment cmt"># complement or replace the report attributes. Reports can include other</span>
1398
+ 446: <span class="ruby-comment cmt"># reports. During report generation, only one context is active, but the</span>
1399
+ 447: <span class="ruby-comment cmt"># context of enclosing reports needs to be preserved. Therefor we use a</span>
1400
+ 448: <span class="ruby-comment cmt"># stack to implement this.</span>
1401
+ 449: <span class="ruby-ivar">@reportContexts</span> = []
1402
+ 450: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
1403
+ 451: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
1404
+ 452: <span class="ruby-keyword kw">end</span></pre>
1341
1405
  </div>
1342
1406
 
1343
1407
  </div>
@@ -1378,13 +1442,13 @@ attribute.
1378
1442
  <div class="method-source-code"
1379
1443
  id="--source">
1380
1444
  <pre>
1381
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 429</span>
1382
- 429: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
1383
- 430: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1384
- 431: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1385
- 432: <span class="ruby-keyword kw">end</span>
1386
- 433: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>]
1387
- 434: <span class="ruby-keyword kw">end</span></pre>
1445
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 461</span>
1446
+ 461: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
1447
+ 462: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1448
+ 463: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1449
+ 464: <span class="ruby-keyword kw">end</span>
1450
+ 465: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>]
1451
+ 466: <span class="ruby-keyword kw">end</span></pre>
1388
1452
  </div>
1389
1453
 
1390
1454
  </div>
@@ -1418,32 +1482,26 @@ to <em>value</em>.
1418
1482
  <div class="method-source-code"
1419
1483
  id="--source">
1420
1484
  <pre>
1421
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 437</span>
1422
- 437: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
1423
- 438: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1424
- 439: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1425
- 440: <span class="ruby-keyword kw">end</span>
1426
- 441: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
1427
- 442:
1428
- 443: <span class="ruby-comment cmt"># If the start, end or schedule granularity have been changed, we have</span>
1429
- 444: <span class="ruby-comment cmt"># to reset the working hours.</span>
1430
- 445: <span class="ruby-keyword kw">if</span> <span class="ruby-node">%(start end scheduleGranularity timezone timingresolution)</span>.
1431
- 446: <span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>)
1432
- 447: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>]
1433
- 448: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>] =
1434
- 449: <span class="ruby-constant">WorkingHours</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>],
1435
- 450: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>],
1436
- 451: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'timezone'</span>])
1437
- 452: <span class="ruby-comment cmt"># WorkingHours is using a copy-on-write scheme to prevent multiple</span>
1438
- 453: <span class="ruby-comment cmt"># copies of the same Scoreboard. All other WorkingHours objects are</span>
1439
- 454: <span class="ruby-comment cmt"># created as copies of this object. By calling</span>
1440
- 455: <span class="ruby-comment cmt"># WorkingHours::onShift? we make sure this instance has got a</span>
1441
- 456: <span class="ruby-comment cmt"># Scoreboard that gets reused by the other instances.</span>
1442
- 457: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>].<span class="ruby-identifier">onShift?</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>])
1443
- 458: <span class="ruby-keyword kw">end</span>
1444
- 459: <span class="ruby-keyword kw">end</span>
1445
- 460: <span class="ruby-identifier">value</span>
1446
- 461: <span class="ruby-keyword kw">end</span></pre>
1485
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 469</span>
1486
+ 469: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
1487
+ 470: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1488
+ 471: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1489
+ 472: <span class="ruby-keyword kw">end</span>
1490
+ 473: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
1491
+ 474:
1492
+ 475: <span class="ruby-comment cmt"># If the start, end or schedule granularity have been changed, we have</span>
1493
+ 476: <span class="ruby-comment cmt"># to reset the working hours.</span>
1494
+ 477: <span class="ruby-keyword kw">if</span> <span class="ruby-node">%(start end scheduleGranularity timezone timingresolution)</span>.
1495
+ 478: <span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>)
1496
+ 479: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>]
1497
+ 480: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>] =
1498
+ 481: <span class="ruby-constant">WorkingHours</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>],
1499
+ 482: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>],
1500
+ 483: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'timezone'</span>])
1501
+ 484: <span class="ruby-keyword kw">end</span>
1502
+ 485: <span class="ruby-keyword kw">end</span>
1503
+ 486: <span class="ruby-identifier">value</span>
1504
+ 487: <span class="ruby-keyword kw">end</span></pre>
1447
1505
  </div>
1448
1506
 
1449
1507
  </div>
@@ -1477,10 +1535,10 @@ return nil if it does not exist.
1477
1535
  <div class="method-source-code"
1478
1536
  id="account-source">
1479
1537
  <pre>
1480
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 564</span>
1481
- 564: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
1482
- 565: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
1483
- 566: <span class="ruby-keyword kw">end</span></pre>
1538
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 590</span>
1539
+ 590: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
1540
+ 591: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
1541
+ 592: <span class="ruby-keyword kw">end</span></pre>
1484
1542
  </div>
1485
1543
 
1486
1544
  </div>
@@ -1516,11 +1574,11 @@ pound sign.
1516
1574
  <div class="method-source-code"
1517
1575
  id="alert-evel-olor-source">
1518
1576
  <pre>
1519
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 496</span>
1520
- 496: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
1521
- 497: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1522
- 498: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">2</span>]
1523
- 499: <span class="ruby-keyword kw">end</span></pre>
1577
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 522</span>
1578
+ 522: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
1579
+ 523: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1580
+ 524: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">2</span>]
1581
+ 525: <span class="ruby-keyword kw">end</span></pre>
1524
1582
  </div>
1525
1583
 
1526
1584
  </div>
@@ -1554,11 +1612,11 @@ Return the ID or keyword of the alert level with the given
1554
1612
  <div class="method-source-code"
1555
1613
  id="alert-evel-d-source">
1556
1614
  <pre>
1557
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 481</span>
1558
- 481: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
1559
- 482: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1560
- 483: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">0</span>]
1561
- 484: <span class="ruby-keyword kw">end</span></pre>
1615
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 507</span>
1616
+ 507: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
1617
+ 508: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1618
+ 509: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">0</span>]
1619
+ 510: <span class="ruby-keyword kw">end</span></pre>
1562
1620
  </div>
1563
1621
 
1564
1622
  </div>
@@ -1592,15 +1650,15 @@ the index of it. If no level is found, nil is returned.
1592
1650
  <div class="method-source-code"
1593
1651
  id="alert-evel-ndex-source">
1594
1652
  <pre>
1595
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 470</span>
1596
- 470: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
1597
- 471: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>].<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1598
- 472: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">levelName</span>
1599
- 473: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
1600
- 474: <span class="ruby-keyword kw">end</span>
1601
- 475: <span class="ruby-keyword kw">end</span>
1602
- 476: <span class="ruby-keyword kw">nil</span>
1603
- 477: <span class="ruby-keyword kw">end</span></pre>
1653
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 496</span>
1654
+ 496: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
1655
+ 497: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>].<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1656
+ 498: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">levelName</span>
1657
+ 499: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
1658
+ 500: <span class="ruby-keyword kw">end</span>
1659
+ 501: <span class="ruby-keyword kw">end</span>
1660
+ 502: <span class="ruby-keyword kw">nil</span>
1661
+ 503: <span class="ruby-keyword kw">end</span></pre>
1604
1662
  </div>
1605
1663
 
1606
1664
  </div>
@@ -1634,11 +1692,48 @@ Return the user readable name of the alert level with the given
1634
1692
  <div class="method-source-code"
1635
1693
  id="alert-evel-ame-source">
1636
1694
  <pre>
1637
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 488</span>
1638
- 488: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
1639
- 489: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1640
- 490: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">1</span>]
1641
- 491: <span class="ruby-keyword kw">end</span></pre>
1695
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 514</span>
1696
+ 514: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
1697
+ 515: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1698
+ 516: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">1</span>]
1699
+ 517: <span class="ruby-keyword kw">end</span></pre>
1700
+ </div>
1701
+
1702
+ </div>
1703
+
1704
+
1705
+
1706
+
1707
+ </div>
1708
+
1709
+
1710
+ <div id="any-esource-vailable--method" class="method-detail ">
1711
+ <a name="method-i-anyResourceAvailable%3F"></a>
1712
+
1713
+ <div class="method-heading">
1714
+
1715
+ <span class="method-name">anyResourceAvailable?</span><span
1716
+ class="method-args">(sbIdx)</span>
1717
+ <span class="method-click-advice">click to toggle source</span>
1718
+
1719
+ </div>
1720
+
1721
+ <div class="method-description">
1722
+
1723
+ <p>
1724
+ Return true if for the date specified by the global scoreboard index
1725
+ <em>sbIdx</em> there is any resource that is available.
1726
+ </p>
1727
+
1728
+
1729
+
1730
+ <div class="method-source-code"
1731
+ id="any-esource-vailable--source">
1732
+ <pre>
1733
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 954</span>
1734
+ 954: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">anyResourceAvailable?</span>(<span class="ruby-identifier">sbIdx</span>)
1735
+ 955: <span class="ruby-ivar">@resourceAvailability</span>[<span class="ruby-identifier">sbIdx</span>]
1736
+ 956: <span class="ruby-keyword kw">end</span></pre>
1642
1737
  </div>
1643
1738
 
1644
1739
  </div>
@@ -1673,14 +1768,14 @@ tasks over resources here.
1673
1768
  <div class="method-source-code"
1674
1769
  id="attribute-ame-source">
1675
1770
  <pre>
1676
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 909</span>
1677
- 909: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
1678
- 910: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
1679
- 911: <span class="ruby-comment cmt"># return it's name.</span>
1680
- 912: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span>
1681
- 913: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span>
1682
- 914: <span class="ruby-identifier">name</span>
1683
- 915: <span class="ruby-keyword kw">end</span></pre>
1771
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 983</span>
1772
+ 983: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
1773
+ 984: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
1774
+ 985: <span class="ruby-comment cmt"># return it's name.</span>
1775
+ 986: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span>
1776
+ 987: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span>
1777
+ 988: <span class="ruby-identifier">name</span>
1778
+ 989: <span class="ruby-keyword kw">end</span></pre>
1684
1779
  </div>
1685
1780
 
1686
1781
  </div>
@@ -1714,22 +1809,33 @@ format.
1714
1809
  <div class="method-source-code"
1715
1810
  id="check-eports-source">
1716
1811
  <pre>
1717
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 644</span>
1718
- 644: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkReports</span>
1719
- 645: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">empty?</span>
1720
- 646: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'no_report_defined'</span>,
1721
- 647: <span class="ruby-value str">&quot;This project has no reports defined. &quot;</span> <span class="ruby-operator">+</span>
1722
- 648: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
1723
- 649: <span class="ruby-keyword kw">end</span>
1724
- 650:
1725
- 651: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1726
- 652: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
1727
- 653: <span class="ruby-keyword kw">end</span>
1728
- 654:
1729
- 655: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'all_formats_empty'</span>,
1730
- 656: <span class="ruby-value str">&quot;None of the reports has a 'formats' attribute. &quot;</span> <span class="ruby-operator">+</span>
1731
- 657: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
1732
- 658: <span class="ruby-keyword kw">end</span></pre>
1812
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 670</span>
1813
+ 670: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkReports</span>
1814
+ 671: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">empty?</span>
1815
+ 672: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'no_report_defined'</span>,
1816
+ 673: <span class="ruby-value str">&quot;This project has no reports defined. &quot;</span> <span class="ruby-operator">+</span>
1817
+ 674: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
1818
+ 675: <span class="ruby-keyword kw">end</span>
1819
+ 676:
1820
+ 677: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@accounts</span>.<span class="ruby-identifier">empty?</span>
1821
+ 678: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1822
+ 679: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'costAccount'</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'revenueAccount'</span>).<span class="ruby-identifier">nil?</span>
1823
+ 680: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'report_without_balance'</span>,
1824
+ 681: <span class="ruby-node">&quot;The report #{report.fullId} has no 'balance' defined. &quot;</span> <span class="ruby-operator">+</span>
1825
+ 682: <span class="ruby-value str">&quot;No cost or revenue computation will be possible.&quot;</span>,
1826
+ 683: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">sourceFileInfo</span>)
1827
+ 684: <span class="ruby-keyword kw">end</span>
1828
+ 685: <span class="ruby-keyword kw">end</span>
1829
+ 686: <span class="ruby-keyword kw">end</span>
1830
+ 687:
1831
+ 688: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1832
+ 689: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
1833
+ 690: <span class="ruby-keyword kw">end</span>
1834
+ 691:
1835
+ 692: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'all_formats_empty'</span>,
1836
+ 693: <span class="ruby-value str">&quot;None of the reports has a 'formats' attribute. &quot;</span> <span class="ruby-operator">+</span>
1837
+ 694: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
1838
+ 695: <span class="ruby-keyword kw">end</span></pre>
1733
1839
  </div>
1734
1840
 
1735
1841
  </div>
@@ -1760,10 +1866,10 @@ format.
1760
1866
  <div class="method-source-code"
1761
1867
  id="check-ime-heets-source">
1762
1868
  <pre>
1763
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 755</span>
1764
- 755: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheets</span>
1765
- 756: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
1766
- 757: <span class="ruby-keyword kw">end</span></pre>
1869
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 792</span>
1870
+ 792: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheets</span>
1871
+ 793: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
1872
+ 794: <span class="ruby-keyword kw">end</span></pre>
1767
1873
  </div>
1768
1874
 
1769
1875
  </div>
@@ -1794,12 +1900,12 @@ format.
1794
1900
  <div class="method-source-code"
1795
1901
  id="collect-ime-ff-ntervals-source">
1796
1902
  <pre>
1797
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 866</span>
1798
- 866: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collectTimeOffIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>)
1799
- 867: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">collectIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
1800
- 868: <span class="ruby-identifier">val</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x3E</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1801
- 869: <span class="ruby-keyword kw">end</span>
1802
- 870: <span class="ruby-keyword kw">end</span></pre>
1903
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 934</span>
1904
+ 934: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collectTimeOffIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>)
1905
+ 935: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">collectIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
1906
+ 936: <span class="ruby-identifier">val</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x3E</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1907
+ 937: <span class="ruby-keyword kw">end</span>
1908
+ 938: <span class="ruby-keyword kw">end</span></pre>
1803
1909
  </div>
1804
1910
 
1805
1911
  </div>
@@ -1833,10 +1939,10 @@ setting of the global &#8216;dailyworkinghours&#8217; attribute.
1833
1939
  <div class="method-source-code"
1834
1940
  id="convert-o-aily-oad-source">
1835
1941
  <pre>
1836
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 825</span>
1837
- 825: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1838
- 826: <span class="ruby-identifier">seconds</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>] * <span class="ruby-value">3600.0</span>)
1839
- 827: <span class="ruby-keyword kw">end</span></pre>
1942
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 893</span>
1943
+ 893: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1944
+ 894: <span class="ruby-identifier">seconds</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>] * <span class="ruby-value">3600.0</span>)
1945
+ 895: <span class="ruby-keyword kw">end</span></pre>
1840
1946
  </div>
1841
1947
 
1842
1948
  </div>
@@ -1870,10 +1976,10 @@ can be set to other values by the user.
1870
1976
  <div class="method-source-code"
1871
1977
  id="daily-orking-ours-source">
1872
1978
  <pre>
1873
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 503</span>
1874
- 503: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1875
- 504: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1876
- 505: <span class="ruby-keyword kw">end</span></pre>
1979
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 529</span>
1980
+ 529: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1981
+ 530: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1982
+ 531: <span class="ruby-keyword kw">end</span></pre>
1877
1983
  </div>
1878
1984
 
1879
1985
  </div>
@@ -1909,21 +2015,21 @@ time frame.
1909
2015
  <div class="method-source-code"
1910
2016
  id="date-o-dx-source">
1911
2017
  <pre>
1912
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 851</span>
1913
- 851: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">forceIntoProject</span> = <span class="ruby-keyword kw">true</span>)
1914
- 852: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>])
1915
- 853: <span class="ruby-comment cmt"># Date is out of range.</span>
1916
- 854: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
1917
- 855: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]
1918
- 856: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">scoreboardSize</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>]
1919
- 857: <span class="ruby-keyword kw">else</span>
1920
- 858: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Date #{date} is out of project time range &quot;</span> <span class="ruby-operator">+</span>
1921
- 859: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
1922
- 860: <span class="ruby-keyword kw">end</span>
1923
- 861: <span class="ruby-keyword kw">end</span>
1924
- 862: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
1925
- 863: ((<span class="ruby-identifier">date</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
1926
- 864: <span class="ruby-keyword kw">end</span></pre>
2018
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 919</span>
2019
+ 919: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">forceIntoProject</span> = <span class="ruby-keyword kw">true</span>)
2020
+ 920: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>])
2021
+ 921: <span class="ruby-comment cmt"># Date is out of range.</span>
2022
+ 922: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
2023
+ 923: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]
2024
+ 924: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">scoreboardSize</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>]
2025
+ 925: <span class="ruby-keyword kw">else</span>
2026
+ 926: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Date #{date} is out of project time range &quot;</span> <span class="ruby-operator">+</span>
2027
+ 927: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
2028
+ 928: <span class="ruby-keyword kw">end</span>
2029
+ 929: <span class="ruby-keyword kw">end</span>
2030
+ 930: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
2031
+ 931: ((<span class="ruby-identifier">date</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2032
+ 932: <span class="ruby-keyword kw">end</span></pre>
1927
2033
  </div>
1928
2034
 
1929
2035
  </div>
@@ -1958,10 +2064,10 @@ of the whole project.
1958
2064
  <div class="method-source-code"
1959
2065
  id="deep-clone-source">
1960
2066
  <pre>
1961
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 424</span>
1962
- 424: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
1963
- 425: <span class="ruby-keyword kw">self</span>
1964
- 426: <span class="ruby-keyword kw">end</span></pre>
2067
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 456</span>
2068
+ 456: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
2069
+ 457: <span class="ruby-keyword kw">self</span>
2070
+ 458: <span class="ruby-keyword kw">end</span></pre>
1965
2071
  </div>
1966
2072
 
1967
2073
  </div>
@@ -1978,7 +2084,7 @@ of the whole project.
1978
2084
  <div class="method-heading">
1979
2085
 
1980
2086
  <span class="method-name">error</span><span
1981
- class="method-args">(id, text)</span>
2087
+ class="method-args">(id, text, sourceFileInfo = nil)</span>
1982
2088
  <span class="method-click-advice">click to toggle source</span>
1983
2089
 
1984
2090
  </div>
@@ -1986,7 +2092,7 @@ of the whole project.
1986
2092
  <div class="method-description">
1987
2093
 
1988
2094
  <p>
1989
- This function sends an error message to the message handler.
2095
+ Generate an error message via the message handler.
1990
2096
  </p>
1991
2097
 
1992
2098
 
@@ -1994,10 +2100,10 @@ This function sends an error message to the message handler.
1994
2100
  <div class="method-source-code"
1995
2101
  id="error-source">
1996
2102
  <pre>
1997
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 988</span>
1998
- 988: <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>)
1999
- 989: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
2000
- 990: <span class="ruby-keyword kw">end</span></pre>
2103
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1061</span>
2104
+ 1061: <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>, <span class="ruby-identifier">sourceFileInfo</span> = <span class="ruby-keyword kw">nil</span>)
2105
+ 1062: <span class="ruby-ivar">@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>)
2106
+ 1063: <span class="ruby-keyword kw">end</span></pre>
2001
2107
  </div>
2002
2108
 
2003
2109
  </div>
@@ -2028,46 +2134,46 @@ This function sends an error message to the message handler.
2028
2134
  <div class="method-source-code"
2029
2135
  id="generate-eport-source">
2030
2136
  <pre>
2031
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 702</span>
2032
- 702: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>, <span class="ruby-identifier">formats</span> = <span class="ruby-keyword kw">nil</span>,
2033
- 703: <span class="ruby-identifier">dynamicAttributes</span> = <span class="ruby-keyword kw">nil</span>)
2034
- 704: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
2035
- 705: [ <span class="ruby-identifier">reportId</span> ]
2036
- 706: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
2037
- 707: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>])
2038
- 708: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
2039
- 709: <span class="ruby-node">&quot;Request to generate unknown report #{id}&quot;</span>)
2040
- 710: <span class="ruby-keyword kw">end</span>
2041
- 711: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
2042
- 712: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'formats_empty'</span>,
2043
- 713: <span class="ruby-node">&quot;The report #{report.fullId} has no 'formats' attribute. &quot;</span> <span class="ruby-operator">+</span>
2044
- 714: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
2045
- 715: <span class="ruby-keyword kw">end</span>
2046
- 716:
2047
- 717: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
2048
- 718: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">context</span> = <span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
2049
- 719:
2050
- 720: <span class="ruby-comment cmt"># If we have dynamic attributes we need to backup the old attributes</span>
2051
- 721: <span class="ruby-comment cmt"># first, then parse the dynamicAttributes String replacing the</span>
2052
- 722: <span class="ruby-comment cmt"># original values.</span>
2053
- 723: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
2054
- 724: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">dynamicAttributes</span>.<span class="ruby-identifier">empty?</span>
2055
- 725: <span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">backupAttributes</span>
2056
- 726: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
2057
- 727: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parseReportAttributes</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">dynamicAttributes</span>)
2058
- 728: <span class="ruby-keyword kw">end</span>
2059
- 729: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'interactive'</span>, <span class="ruby-keyword kw">true</span>)
2060
- 730: <span class="ruby-keyword kw">end</span>
2061
- 731:
2062
- 732: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>(<span class="ruby-identifier">formats</span>)
2063
- 733:
2064
- 734: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">dynamicAttributes</span>.<span class="ruby-identifier">empty?</span>
2065
- 735: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span>)
2066
- 736: <span class="ruby-keyword kw">end</span>
2067
- 737: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2068
- 738: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2069
- 739: <span class="ruby-keyword kw">end</span>
2070
- 740: <span class="ruby-keyword kw">end</span></pre>
2137
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 739</span>
2138
+ 739: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>, <span class="ruby-identifier">formats</span> = <span class="ruby-keyword kw">nil</span>,
2139
+ 740: <span class="ruby-identifier">dynamicAttributes</span> = <span class="ruby-keyword kw">nil</span>)
2140
+ 741: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
2141
+ 742: [ <span class="ruby-identifier">reportId</span> ]
2142
+ 743: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
2143
+ 744: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>])
2144
+ 745: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
2145
+ 746: <span class="ruby-node">&quot;Request to generate unknown report #{id}&quot;</span>)
2146
+ 747: <span class="ruby-keyword kw">end</span>
2147
+ 748: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
2148
+ 749: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'formats_empty'</span>,
2149
+ 750: <span class="ruby-node">&quot;The report #{report.fullId} has no 'formats' attribute. &quot;</span> <span class="ruby-operator">+</span>
2150
+ 751: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>, <span class="ruby-identifier">report</span>.<span class="ruby-identifier">sourceFileInfo</span>)
2151
+ 752: <span class="ruby-keyword kw">end</span>
2152
+ 753:
2153
+ 754: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
2154
+ 755: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">context</span> = <span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
2155
+ 756:
2156
+ 757: <span class="ruby-comment cmt"># If we have dynamic attributes we need to backup the old attributes</span>
2157
+ 758: <span class="ruby-comment cmt"># first, then parse the dynamicAttributes String replacing the</span>
2158
+ 759: <span class="ruby-comment cmt"># original values.</span>
2159
+ 760: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
2160
+ 761: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">dynamicAttributes</span>.<span class="ruby-identifier">empty?</span>
2161
+ 762: <span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">backupAttributes</span>
2162
+ 763: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
2163
+ 764: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parseReportAttributes</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">dynamicAttributes</span>)
2164
+ 765: <span class="ruby-keyword kw">end</span>
2165
+ 766: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'interactive'</span>, <span class="ruby-keyword kw">true</span>)
2166
+ 767: <span class="ruby-keyword kw">end</span>
2167
+ 768:
2168
+ 769: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>(<span class="ruby-identifier">formats</span>)
2169
+ 770:
2170
+ 771: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">dynamicAttributes</span>.<span class="ruby-identifier">empty?</span>
2171
+ 772: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span>)
2172
+ 773: <span class="ruby-keyword kw">end</span>
2173
+ 774: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2174
+ 775: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2175
+ 776: <span class="ruby-keyword kw">end</span>
2176
+ 777: <span class="ruby-keyword kw">end</span></pre>
2071
2177
  </div>
2072
2178
 
2073
2179
  </div>
@@ -2102,46 +2208,101 @@ href="Project.html#method-i-schedule">Project#schedule</a> has been called.
2102
2208
  <div class="method-source-code"
2103
2209
  id="generate-eports-source">
2104
2210
  <pre>
2105
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 662</span>
2106
- 662: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
2107
- 663: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
2108
- 664: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2109
- 665: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2110
- 666: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
2111
- 667: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
2112
- 668: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
2113
- 669: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
2114
- 670: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2115
- 671: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2116
- 672: <span class="ruby-keyword kw">end</span>
2117
- 673: <span class="ruby-keyword kw">else</span>
2118
- 674: <span class="ruby-comment cmt"># Kickoff the generation of all reports by pushing the jobs into the</span>
2119
- 675: <span class="ruby-comment cmt"># BatchProcessor queue.</span>
2120
- 676: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
2121
- 677: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2122
- 678: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
2123
- 679: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
2124
- 680: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
2125
- 681: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
2126
- 682: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2127
- 683: <span class="ruby-identifier">res</span>
2128
- 684: }
2129
- 685: <span class="ruby-keyword kw">end</span>
2130
- 686: <span class="ruby-comment cmt"># Now wait for all the jobs to finish.</span>
2131
- 687: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">wait</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2132
- 688: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
2133
- 689: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
2134
- 690: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
2135
- 691: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">signaled?</span>
2136
- 692: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'rg_signal'</span>, <span class="ruby-value str">&quot;Signal raised&quot;</span>)
2137
- 693: <span class="ruby-keyword kw">end</span>
2138
- 694: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">success?</span>
2139
- 695: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'rg_abort'</span>, <span class="ruby-value str">&quot;Process aborted&quot;</span>)
2140
- 696: <span class="ruby-keyword kw">end</span>
2141
- 697: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2142
- 698: <span class="ruby-keyword kw">end</span>
2143
- 699: <span class="ruby-keyword kw">end</span>
2144
- 700: <span class="ruby-keyword kw">end</span></pre>
2211
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 699</span>
2212
+ 699: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
2213
+ 700: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
2214
+ 701: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2215
+ 702: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2216
+ 703: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
2217
+ 704: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
2218
+ 705: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
2219
+ 706: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
2220
+ 707: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2221
+ 708: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2222
+ 709: <span class="ruby-keyword kw">end</span>
2223
+ 710: <span class="ruby-keyword kw">else</span>
2224
+ 711: <span class="ruby-comment cmt"># Kickoff the generation of all reports by pushing the jobs into the</span>
2225
+ 712: <span class="ruby-comment cmt"># BatchProcessor queue.</span>
2226
+ 713: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
2227
+ 714: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2228
+ 715: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
2229
+ 716: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
2230
+ 717: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
2231
+ 718: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
2232
+ 719: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2233
+ 720: <span class="ruby-identifier">res</span>
2234
+ 721: }
2235
+ 722: <span class="ruby-keyword kw">end</span>
2236
+ 723: <span class="ruby-comment cmt"># Now wait for all the jobs to finish.</span>
2237
+ 724: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">wait</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2238
+ 725: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
2239
+ 726: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
2240
+ 727: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
2241
+ 728: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">signaled?</span>
2242
+ 729: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'rg_signal'</span>, <span class="ruby-value str">&quot;Signal raised&quot;</span>)
2243
+ 730: <span class="ruby-keyword kw">end</span>
2244
+ 731: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">success?</span>
2245
+ 732: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'rg_abort'</span>, <span class="ruby-value str">&quot;Process aborted&quot;</span>)
2246
+ 733: <span class="ruby-keyword kw">end</span>
2247
+ 734: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2248
+ 735: <span class="ruby-keyword kw">end</span>
2249
+ 736: <span class="ruby-keyword kw">end</span>
2250
+ 737: <span class="ruby-keyword kw">end</span></pre>
2251
+ </div>
2252
+
2253
+ </div>
2254
+
2255
+
2256
+
2257
+
2258
+ </div>
2259
+
2260
+
2261
+ <div id="has-orking-ime-method" class="method-detail ">
2262
+ <a name="method-i-hasWorkingTime"></a>
2263
+
2264
+ <div class="method-heading">
2265
+
2266
+ <span class="method-callseq">hasWorkingTime(startTime, endTime) &rarr; true or false
2267
+ hasWorkingTime(interval) &rarr; true or false</span>
2268
+ <span class="method-click-advice">click to toggle source</span>
2269
+
2270
+ </div>
2271
+
2272
+ <div class="method-description">
2273
+
2274
+ <p>
2275
+ Return true if the interval overlaps with a globally defined working time
2276
+ or false if not. Global work time means, no global vacation defined and the
2277
+ slot lies within a defined global working time period.
2278
+ </p>
2279
+
2280
+
2281
+
2282
+ <div class="method-source-code"
2283
+ id="has-orking-ime-source">
2284
+ <pre>
2285
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 870</span>
2286
+ 870: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hasWorkingTime</span>(*<span class="ruby-identifier">args</span>)
2287
+ 871: <span class="ruby-comment cmt"># Normalize argument(s) to TimeInterval</span>
2288
+ 872: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2289
+ 873: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TimeInterval</span>)
2290
+ 874: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">start</span>)
2291
+ 875: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">end</span>)
2292
+ 876: <span class="ruby-keyword kw">else</span>
2293
+ 877: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Unsupported argument type #{args[0].class}&quot;</span>
2294
+ 878: <span class="ruby-keyword kw">end</span>
2295
+ 879: <span class="ruby-keyword kw">else</span>
2296
+ 880: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>])
2297
+ 881: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>])
2298
+ 882: <span class="ruby-keyword kw">end</span>
2299
+ 883:
2300
+ 884: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
2301
+ 885: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>]
2302
+ 886: <span class="ruby-keyword kw">end</span>
2303
+ 887:
2304
+ 888: <span class="ruby-keyword kw">false</span>
2305
+ 889: <span class="ruby-keyword kw">end</span></pre>
2145
2306
  </div>
2146
2307
 
2147
2308
  </div>
@@ -2177,13 +2338,13 @@ raised.
2177
2338
  <div class="method-source-code"
2178
2339
  id="idx-o-ate-source">
2179
2340
  <pre>
2180
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 841</span>
2181
- 841: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
2182
- 842: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">idx</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">idx</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">scoreboardSize</span>)
2183
- 843: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
2184
- 844: <span class="ruby-keyword kw">end</span>
2185
- 845: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">idx</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
2186
- 846: <span class="ruby-keyword kw">end</span></pre>
2341
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 909</span>
2342
+ 909: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
2343
+ 910: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">idx</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">idx</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">scoreboardSize</span>)
2344
+ 911: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
2345
+ 912: <span class="ruby-keyword kw">end</span>
2346
+ 913: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">idx</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
2347
+ 914: <span class="ruby-keyword kw">end</span></pre>
2187
2348
  </div>
2188
2349
 
2189
2350
  </div>
@@ -2199,7 +2360,8 @@ raised.
2199
2360
 
2200
2361
  <div class="method-heading">
2201
2362
 
2202
- <span class="method-callseq">isWorkingTime(slot) &rarr; true or false
2363
+ <span class="method-callseq">isWorkingTime(slotIdx) &rarr; true or false
2364
+ isWorkingTime(slot) &rarr; true or false
2203
2365
  isWorkingTime(startTime, endTime) &rarr; true or false
2204
2366
  isWorkingTime(interval) &rarr; true or false</span>
2205
2367
  <span class="method-click-advice">click to toggle source</span>
@@ -2209,11 +2371,12 @@ isWorkingTime(interval) &rarr; true or false</span>
2209
2371
  <div class="method-description">
2210
2372
 
2211
2373
  <p>
2212
- Return true if the <em>slot</em> (<a href="TjTime.html">TjTime</a>) is
2213
- withing globally defined working time or false if not. If the argument is
2214
- an <a href="Interval.html">Interval</a>, all slots of the interval must be
2215
- working time to return true as result. Global work time means, no vacation
2216
- defined and the slot lies within a defined working time period.
2374
+ Return true if the slot or interval is withing globally defined working
2375
+ time or false if not. If the argument is a <a
2376
+ href="TimeInterval.html">TimeInterval</a>, all slots of the interval must
2377
+ be working time to return true as result. Global work time means, no global
2378
+ vacation defined and the slot lies within a defined global working time
2379
+ period.
2217
2380
  </p>
2218
2381
 
2219
2382
 
@@ -2221,29 +2384,31 @@ defined and the slot lies within a defined working time period.
2221
2384
  <div class="method-source-code"
2222
2385
  id="is-orking-ime-source">
2223
2386
  <pre>
2224
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 800</span>
2225
- 800: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(*<span class="ruby-identifier">args</span>)
2226
- 801: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
2227
- 802: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2228
- 803: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Interval</span>)
2229
- 804: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
2230
- 805: <span class="ruby-keyword kw">else</span>
2231
- 806: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">+</span>
2232
- 807: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
2233
- 808: <span class="ruby-keyword kw">end</span>
2234
- 809: <span class="ruby-keyword kw">else</span>
2235
- 810: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>])
2236
- 811: <span class="ruby-keyword kw">end</span>
2237
- 812:
2238
- 813: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
2239
- 814: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'vacations'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vacation</span><span class="ruby-operator">|</span>
2240
- 815: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
2241
- 816: <span class="ruby-keyword kw">end</span>
2242
- 817:
2243
- 818: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>].<span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">iv</span>)
2244
- 819:
2245
- 820: <span class="ruby-keyword kw">true</span>
2246
- 821: <span class="ruby-keyword kw">end</span></pre>
2387
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 838</span>
2388
+ 838: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(*<span class="ruby-identifier">args</span>)
2389
+ 839: <span class="ruby-comment cmt"># Normalize argument(s) to TimeInterval</span>
2390
+ 840: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2391
+ 841: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Bignum</span>)
2392
+ 842: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]].<span class="ruby-identifier">nil?</span>
2393
+ 843: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
2394
+ 844: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>])].<span class="ruby-identifier">nil?</span>
2395
+ 845: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TimeInterval</span>)
2396
+ 846: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">start</span>)
2397
+ 847: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">end</span>)
2398
+ 848: <span class="ruby-keyword kw">else</span>
2399
+ 849: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Unsupported argument type #{args[0].class}&quot;</span>
2400
+ 850: <span class="ruby-keyword kw">end</span>
2401
+ 851: <span class="ruby-keyword kw">else</span>
2402
+ 852: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>])
2403
+ 853: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>])
2404
+ 854: <span class="ruby-keyword kw">end</span>
2405
+ 855:
2406
+ 856: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
2407
+ 857: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>]
2408
+ 858: <span class="ruby-keyword kw">end</span>
2409
+ 859:
2410
+ 860: <span class="ruby-keyword kw">true</span>
2411
+ 861: <span class="ruby-keyword kw">end</span></pre>
2247
2412
  </div>
2248
2413
 
2249
2414
  </div>
@@ -2274,23 +2439,23 @@ defined and the slot lies within a defined working time period.
2274
2439
  <div class="method-source-code"
2275
2440
  id="journal-source">
2276
2441
  <pre>
2277
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 917</span>
2278
- 917: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">journal</span>(<span class="ruby-identifier">query</span>)
2279
- 918: <span class="ruby-identifier">entries</span> = <span class="ruby-constant">JournalEntryList</span>.<span class="ruby-identifier">new</span>
2280
- 919: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2281
- 920: <span class="ruby-comment cmt"># We only care about top-level tasks.</span>
2282
- 921: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>
2283
- 922:
2284
- 923: <span class="ruby-identifier">entries</span> <span class="ruby-operator">+=</span> (<span class="ruby-identifier">e</span> = <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'journal'</span>].
2285
- 924: <span class="ruby-identifier">currentEntriesR</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-identifier">task</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2286
- 925: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>))
2287
- 926: <span class="ruby-keyword kw">end</span>
2288
- 927:
2289
- 928: <span class="ruby-comment cmt"># Eliminate duplicates due to entries from adopted tasks</span>
2290
- 929: <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">uniq!</span>
2291
- 930:
2292
- 931: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-identifier">entries</span>, <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">true</span>)
2293
- 932: <span class="ruby-keyword kw">end</span></pre>
2442
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 991</span>
2443
+ 991: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">journal</span>(<span class="ruby-identifier">query</span>)
2444
+ 992: <span class="ruby-identifier">entries</span> = <span class="ruby-constant">JournalEntryList</span>.<span class="ruby-identifier">new</span>
2445
+ 993: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2446
+ 994: <span class="ruby-comment cmt"># We only care about top-level tasks.</span>
2447
+ 995: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>
2448
+ 996:
2449
+ 997: <span class="ruby-identifier">entries</span> <span class="ruby-operator">+=</span> (<span class="ruby-identifier">e</span> = <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'journal'</span>].
2450
+ 998: <span class="ruby-identifier">currentEntriesR</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span>, <span class="ruby-identifier">task</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span>,
2451
+ 999: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">hideJournalEntry</span>))
2452
+ 1000: <span class="ruby-keyword kw">end</span>
2453
+ 1001:
2454
+ 1002: <span class="ruby-comment cmt"># Eliminate duplicates due to entries from adopted tasks</span>
2455
+ 1003: <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">uniq!</span>
2456
+ 1004:
2457
+ 1005: <span class="ruby-identifier">journalMessages</span>(<span class="ruby-identifier">entries</span>, <span class="ruby-identifier">query</span>, <span class="ruby-keyword kw">true</span>)
2458
+ 1006: <span class="ruby-keyword kw">end</span></pre>
2294
2459
  </div>
2295
2460
 
2296
2461
  </div>
@@ -2324,44 +2489,43 @@ href="Query.html">Query</a>.
2324
2489
  <div class="method-source-code"
2325
2490
  id="journal-essages-source">
2326
2491
  <pre>
2327
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 935</span>
2328
- 935: <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>)
2329
- 936: <span class="ruby-comment cmt"># The components of the message are either UTF-8 text or RichText. For</span>
2330
- 937: <span class="ruby-comment cmt"># the RichText components, we use the originally provided markup since</span>
2331
- 938: <span class="ruby-comment cmt"># we compose the result as RichText markup first.</span>
2332
- 939: <span class="ruby-identifier">rText</span> = <span class="ruby-value str">''</span>
2333
- 940: <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>
2334
- 941: <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>
2335
- 942: <span class="ruby-comment cmt">#rText += &quot;''Reported on #{entry.date.to_s(query.timeFormat)}'' &quot;</span>
2336
- 943: <span class="ruby-comment cmt">#if entry.author</span>
2337
- 944: <span class="ruby-comment cmt"># rText += &quot;''by &lt;nowiki&gt;#{entry.author.name}&lt;/nowiki&gt;''&quot;</span>
2338
- 945: <span class="ruby-comment cmt">#end</span>
2339
- 946: <span class="ruby-comment cmt">#rText += &quot;\n\n&quot;</span>
2340
- 947: <span class="ruby-comment cmt">#unless entry.flags.empty?</span>
2341
- 948: <span class="ruby-comment cmt"># rText += &quot;''Flags:'' #{entry.flags.join(', ')}\n\n&quot;</span>
2342
- 949: <span class="ruby-comment cmt">#end</span>
2343
- 950: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>
2344
- 951: <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>
2345
- 952: <span class="ruby-keyword kw">end</span>
2346
- 953: <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>
2347
- 954: <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>
2348
- 955: <span class="ruby-keyword kw">end</span>
2349
- 956: <span class="ruby-keyword kw">end</span>
2350
- 957: <span class="ruby-comment cmt"># Now convert the RichText markup String into RichTextIntermediate</span>
2351
- 958: <span class="ruby-comment cmt"># format.</span>
2352
- 959: <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-keyword kw">self</span>),
2353
- 960: <span class="ruby-ivar">@messageHandler</span>).
2354
- 961: <span class="ruby-identifier">generateIntermediateFormat</span>)
2355
- 962: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ptn_journal'</span>,
2356
- 963: <span class="ruby-value str">&quot;Syntax error in journal message&quot;</span>)
2357
- 964: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2358
- 965: <span class="ruby-keyword kw">end</span>
2359
- 966: <span class="ruby-comment cmt"># No section numbers, please!</span>
2360
- 967: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">sectionNumbers</span> = <span class="ruby-keyword kw">false</span>
2361
- 968: <span class="ruby-comment cmt"># We use a special class to allow CSS formating.</span>
2362
- 969: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">cssClass</span> = <span class="ruby-value str">'tj_journal'</span>
2363
- 970: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rti</span>
2364
- 971: <span class="ruby-keyword kw">end</span></pre>
2492
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1009</span>
2493
+ 1009: <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>)
2494
+ 1010: <span class="ruby-comment cmt"># The components of the message are either UTF-8 text or RichText. For</span>
2495
+ 1011: <span class="ruby-comment cmt"># the RichText components, we use the originally provided markup since</span>
2496
+ 1012: <span class="ruby-comment cmt"># we compose the result as RichText markup first.</span>
2497
+ 1013: <span class="ruby-identifier">rText</span> = <span class="ruby-value str">''</span>
2498
+ 1014: <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>
2499
+ 1015: <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>
2500
+ 1016: <span class="ruby-comment cmt">#rText += &quot;''Reported on #{entry.date.to_s(query.timeFormat)}'' &quot;</span>
2501
+ 1017: <span class="ruby-comment cmt">#if entry.author</span>
2502
+ 1018: <span class="ruby-comment cmt"># rText += &quot;''by &lt;nowiki&gt;#{entry.author.name}&lt;/nowiki&gt;''&quot;</span>
2503
+ 1019: <span class="ruby-comment cmt">#end</span>
2504
+ 1020: <span class="ruby-comment cmt">#rText += &quot;\n\n&quot;</span>
2505
+ 1021: <span class="ruby-comment cmt">#unless entry.flags.empty?</span>
2506
+ 1022: <span class="ruby-comment cmt"># rText += &quot;''Flags:'' #{entry.flags.join(', ')}\n\n&quot;</span>
2507
+ 1023: <span class="ruby-comment cmt">#end</span>
2508
+ 1024: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>
2509
+ 1025: <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>
2510
+ 1026: <span class="ruby-keyword kw">end</span>
2511
+ 1027: <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>
2512
+ 1028: <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>
2513
+ 1029: <span class="ruby-keyword kw">end</span>
2514
+ 1030: <span class="ruby-keyword kw">end</span>
2515
+ 1031: <span class="ruby-comment cmt"># Now convert the RichText markup String into RichTextIntermediate</span>
2516
+ 1032: <span class="ruby-comment cmt"># format.</span>
2517
+ 1033: <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-keyword kw">self</span>),
2518
+ 1034: <span class="ruby-ivar">@messageHandler</span>).
2519
+ 1035: <span class="ruby-identifier">generateIntermediateFormat</span>)
2520
+ 1036: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'ptn_journal'</span>, <span class="ruby-node">&quot;Syntax error in journal message: #{rText}&quot;</span>)
2521
+ 1037: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2522
+ 1038: <span class="ruby-keyword kw">end</span>
2523
+ 1039: <span class="ruby-comment cmt"># No section numbers, please!</span>
2524
+ 1040: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">sectionNumbers</span> = <span class="ruby-keyword kw">false</span>
2525
+ 1041: <span class="ruby-comment cmt"># We use a special class to allow CSS formating.</span>
2526
+ 1042: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">cssClass</span> = <span class="ruby-value str">'tj_journal'</span>
2527
+ 1043: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rti</span>
2528
+ 1044: <span class="ruby-keyword kw">end</span></pre>
2365
2529
  </div>
2366
2530
 
2367
2531
  </div>
@@ -2392,19 +2556,19 @@ href="Query.html">Query</a>.
2392
2556
  <div class="method-source-code"
2393
2557
  id="list-eports-source">
2394
2558
  <pre>
2395
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 742</span>
2396
- 742: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">listReports</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>)
2397
- 743: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
2398
- 744: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">reportId</span>] <span class="ruby-operator">?</span> [ <span class="ruby-identifier">reportId</span> ] <span class="ruby-operator">:</span> []
2399
- 745: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;No match for #{reportId}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">empty?</span>
2400
- 746: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
2401
- 747: <span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2402
- 748: <span class="ruby-identifier">formats</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>)
2403
- 749: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">empty?</span>
2404
- 750:
2405
- 751: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%s\t%s\t%s&quot;</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">', '</span>), <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span>)
2406
- 752: <span class="ruby-keyword kw">end</span>
2407
- 753: <span class="ruby-keyword kw">end</span></pre>
2559
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 779</span>
2560
+ 779: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">listReports</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>)
2561
+ 780: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
2562
+ 781: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">reportId</span>] <span class="ruby-operator">?</span> [ <span class="ruby-identifier">reportId</span> ] <span class="ruby-operator">:</span> []
2563
+ 782: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;No match for #{reportId}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">empty?</span>
2564
+ 783: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
2565
+ 784: <span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2566
+ 785: <span class="ruby-identifier">formats</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>)
2567
+ 786: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">empty?</span>
2568
+ 787:
2569
+ 788: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%s\t%s\t%s&quot;</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">', '</span>), <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span>)
2570
+ 789: <span class="ruby-keyword kw">end</span>
2571
+ 790: <span class="ruby-keyword kw">end</span></pre>
2408
2572
  </div>
2409
2573
 
2410
2574
  </div>
@@ -2437,10 +2601,10 @@ Return the average number of working days per month.
2437
2601
  <div class="method-source-code"
2438
2602
  id="monthly-orking-ays-source">
2439
2603
  <pre>
2440
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 513</span>
2441
- 513: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
2442
- 514: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">12.0</span>
2443
- 515: <span class="ruby-keyword kw">end</span></pre>
2604
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 539</span>
2605
+ 539: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
2606
+ 540: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">12.0</span>
2607
+ 541: <span class="ruby-keyword kw">end</span></pre>
2444
2608
  </div>
2445
2609
 
2446
2610
  </div>
@@ -2474,10 +2638,10 @@ return nil if it does not exist.
2474
2638
  <div class="method-source-code"
2475
2639
  id="report-source">
2476
2640
  <pre>
2477
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 579</span>
2478
- 579: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
2479
- 580: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2480
- 581: <span class="ruby-keyword kw">end</span></pre>
2641
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 605</span>
2642
+ 605: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
2643
+ 606: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2644
+ 607: <span class="ruby-keyword kw">end</span></pre>
2481
2645
  </div>
2482
2646
 
2483
2647
  </div>
@@ -2511,13 +2675,13 @@ return nil if it does not exist.
2511
2675
  <div class="method-source-code"
2512
2676
  id="report-y-ame-source">
2513
2677
  <pre>
2514
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 585</span>
2515
- 585: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
2516
- 586: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2517
- 587: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">report</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span>
2518
- 588: <span class="ruby-keyword kw">end</span>
2519
- 589: <span class="ruby-keyword kw">nil</span>
2520
- 590: <span class="ruby-keyword kw">end</span></pre>
2678
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 611</span>
2679
+ 611: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
2680
+ 612: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2681
+ 613: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">report</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span>
2682
+ 614: <span class="ruby-keyword kw">end</span>
2683
+ 615: <span class="ruby-keyword kw">nil</span>
2684
+ 616: <span class="ruby-keyword kw">end</span></pre>
2521
2685
  </div>
2522
2686
 
2523
2687
  </div>
@@ -2551,10 +2715,10 @@ return nil if it does not exist.
2551
2715
  <div class="method-source-code"
2552
2716
  id="resource-source">
2553
2717
  <pre>
2554
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 574</span>
2555
- 574: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
2556
- 575: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
2557
- 576: <span class="ruby-keyword kw">end</span></pre>
2718
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 600</span>
2719
+ 600: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
2720
+ 601: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
2721
+ 602: <span class="ruby-keyword kw">end</span></pre>
2558
2722
  </div>
2559
2723
 
2560
2724
  </div>
@@ -2588,17 +2752,17 @@ or <em>index</em>.
2588
2752
  <div class="method-source-code"
2589
2753
  id="scenario-source">
2590
2754
  <pre>
2591
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 532</span>
2592
- 532: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
2593
- 533: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
2594
- 534: <span class="ruby-ivar">@scenarios</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>
2595
- 535: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">arg</span>
2596
- 536: <span class="ruby-keyword kw">end</span>
2597
- 537: <span class="ruby-keyword kw">else</span>
2598
- 538: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
2599
- 539: <span class="ruby-keyword kw">end</span>
2600
- 540: <span class="ruby-keyword kw">nil</span>
2601
- 541: <span class="ruby-keyword kw">end</span></pre>
2755
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 558</span>
2756
+ 558: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
2757
+ 559: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
2758
+ 560: <span class="ruby-ivar">@scenarios</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>
2759
+ 561: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">arg</span>
2760
+ 562: <span class="ruby-keyword kw">end</span>
2761
+ 563: <span class="ruby-keyword kw">else</span>
2762
+ 564: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
2763
+ 565: <span class="ruby-keyword kw">end</span>
2764
+ 566: <span class="ruby-keyword kw">nil</span>
2765
+ 567: <span class="ruby-keyword kw">end</span></pre>
2602
2766
  </div>
2603
2767
 
2604
2768
  </div>
@@ -2631,10 +2795,10 @@ Return the number of defined scenarios for the project.
2631
2795
  <div class="method-source-code"
2632
2796
  id="scenario-ount-source">
2633
2797
  <pre>
2634
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 464</span>
2635
- 464: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
2636
- 465: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
2637
- 466: <span class="ruby-keyword kw">end</span></pre>
2798
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 490</span>
2799
+ 490: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
2800
+ 491: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
2801
+ 492: <span class="ruby-keyword kw">end</span></pre>
2638
2802
  </div>
2639
2803
 
2640
2804
  </div>
@@ -2668,16 +2832,16 @@ specified by <em>scenario</em> or <em>id</em>.
2668
2832
  <div class="method-source-code"
2669
2833
  id="scenario-dx-source">
2670
2834
  <pre>
2671
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 548</span>
2672
- 548: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2673
- 549: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Scenario</span>)
2674
- 550: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2675
- 551: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">nil?</span>
2676
- 552: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2677
- 553: <span class="ruby-keyword kw">else</span>
2678
- 554: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2679
- 555: <span class="ruby-keyword kw">end</span>
2680
- 556: <span class="ruby-keyword kw">end</span></pre>
2835
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 574</span>
2836
+ 574: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2837
+ 575: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Scenario</span>)
2838
+ 576: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2839
+ 577: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">nil?</span>
2840
+ 578: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2841
+ 579: <span class="ruby-keyword kw">else</span>
2842
+ 580: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2843
+ 581: <span class="ruby-keyword kw">end</span>
2844
+ 582: <span class="ruby-keyword kw">end</span></pre>
2681
2845
  </div>
2682
2846
 
2683
2847
  </div>
@@ -2712,53 +2876,53 @@ stores the result in the data structures again.
2712
2876
  <div class="method-source-code"
2713
2877
  id="schedule-source">
2714
2878
  <pre>
2715
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 595</span>
2716
- 595: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
2717
- 596: <span class="ruby-identifier">initScoreboards</span>
2718
- 597:
2719
- 598: [ <span class="ruby-ivar">@shifts</span>, <span class="ruby-ivar">@resources</span>, <span class="ruby-ivar">@tasks</span> ].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
2720
- 599: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
2721
- 600: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
2722
- 601: <span class="ruby-keyword kw">end</span>
2723
- 602:
2724
- 603: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
2725
- 604: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'no_tasks'</span>, <span class="ruby-value str">&quot;No tasks defined&quot;</span>)
2726
- 605: <span class="ruby-keyword kw">end</span>
2727
- 606:
2728
- 607: <span class="ruby-ivar">@scenarios</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>
2729
- 608: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
2730
- 609: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'active'</span>)
2731
- 610:
2732
- 611: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2733
- 612:
2734
- 613: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
2735
- 614: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
2736
- 615: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
2737
- 616: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
2738
- 617: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
2739
- 618: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2740
- 619:
2741
- 620: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
2742
- 621: <span class="ruby-comment cmt"># as computed.</span>
2743
- 622: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
2744
- 623: <span class="ruby-comment cmt"># Schedule the scenario.</span>
2745
- 624: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2746
- 625:
2747
- 626: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
2748
- 627: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2749
- 628: <span class="ruby-keyword kw">end</span>
2750
- 629:
2751
- 630: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2752
- 631: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">checkFailsAndWarnings</span>
2753
- 632: <span class="ruby-keyword kw">end</span>
2754
- 633:
2755
- 634: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2756
- 635: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkFailsAndWarnings</span>
2757
- 636: <span class="ruby-keyword kw">end</span>
2758
- 637:
2759
- 638: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">warnOnDelta</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@warnTsDeltas</span>
2760
- 639: <span class="ruby-keyword kw">true</span>
2761
- 640: <span class="ruby-keyword kw">end</span></pre>
2879
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 621</span>
2880
+ 621: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
2881
+ 622: <span class="ruby-identifier">initScoreboards</span>
2882
+ 623:
2883
+ 624: [ <span class="ruby-ivar">@shifts</span>, <span class="ruby-ivar">@resources</span>, <span class="ruby-ivar">@tasks</span> ].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
2884
+ 625: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
2885
+ 626: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
2886
+ 627: <span class="ruby-keyword kw">end</span>
2887
+ 628:
2888
+ 629: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
2889
+ 630: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'no_tasks'</span>, <span class="ruby-value str">&quot;No tasks defined&quot;</span>)
2890
+ 631: <span class="ruby-keyword kw">end</span>
2891
+ 632:
2892
+ 633: <span class="ruby-ivar">@scenarios</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>
2893
+ 634: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
2894
+ 635: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'active'</span>)
2895
+ 636:
2896
+ 637: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2897
+ 638:
2898
+ 639: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
2899
+ 640: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
2900
+ 641: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
2901
+ 642: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
2902
+ 643: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
2903
+ 644: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2904
+ 645:
2905
+ 646: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
2906
+ 647: <span class="ruby-comment cmt"># as computed.</span>
2907
+ 648: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
2908
+ 649: <span class="ruby-comment cmt"># Schedule the scenario.</span>
2909
+ 650: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2910
+ 651:
2911
+ 652: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
2912
+ 653: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2913
+ 654: <span class="ruby-keyword kw">end</span>
2914
+ 655:
2915
+ 656: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2916
+ 657: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">checkFailsAndWarnings</span>
2917
+ 658: <span class="ruby-keyword kw">end</span>
2918
+ 659:
2919
+ 660: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2920
+ 661: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkFailsAndWarnings</span>
2921
+ 662: <span class="ruby-keyword kw">end</span>
2922
+ 663:
2923
+ 664: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">warnOnDelta</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@warnTsDeltas</span>
2924
+ 665: <span class="ruby-keyword kw">true</span>
2925
+ 666: <span class="ruby-keyword kw">end</span></pre>
2762
2926
  </div>
2763
2927
 
2764
2928
  </div>
@@ -2794,11 +2958,11 @@ number of entries in the scoreboards.
2794
2958
  <div class="method-source-code"
2795
2959
  id="scoreboard-ize-source">
2796
2960
  <pre>
2797
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 833</span>
2798
- 833: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
2799
- 834: ((<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span>
2800
- 835: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2801
- 836: <span class="ruby-keyword kw">end</span></pre>
2961
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 901</span>
2962
+ 901: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
2963
+ 902: ((<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span>
2964
+ 903: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2965
+ 904: <span class="ruby-keyword kw">end</span></pre>
2802
2966
  </div>
2803
2967
 
2804
2968
  </div>
@@ -2832,10 +2996,10 @@ nil if it does not exist.
2832
2996
  <div class="method-source-code"
2833
2997
  id="shift-source">
2834
2998
  <pre>
2835
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 559</span>
2836
- 559: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
2837
- 560: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
2838
- 561: <span class="ruby-keyword kw">end</span></pre>
2999
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 585</span>
3000
+ 585: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
3001
+ 586: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
3002
+ 587: <span class="ruby-keyword kw">end</span></pre>
2839
3003
  </div>
2840
3004
 
2841
3005
  </div>
@@ -2868,10 +3032,10 @@ Convert timeSlots to working days.
2868
3032
  <div class="method-source-code"
2869
3033
  id="slots-o-ays-source">
2870
3034
  <pre>
2871
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 523</span>
2872
- 523: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
2873
- 524: <span class="ruby-identifier">slots</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>] <span class="ruby-operator">/</span> (<span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-identifier">dailyWorkingHours</span>)
2874
- 525: <span class="ruby-keyword kw">end</span></pre>
3035
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 549</span>
3036
+ 549: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
3037
+ 550: <span class="ruby-identifier">slots</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>] <span class="ruby-operator">/</span> (<span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-identifier">dailyWorkingHours</span>)
3038
+ 551: <span class="ruby-keyword kw">end</span></pre>
2875
3039
  </div>
2876
3040
 
2877
3041
  </div>
@@ -2905,10 +3069,10 @@ nil if it does not exist.
2905
3069
  <div class="method-source-code"
2906
3070
  id="task-source">
2907
3071
  <pre>
2908
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 569</span>
2909
- 569: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
2910
- 570: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
2911
- 571: <span class="ruby-keyword kw">end</span></pre>
3072
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 595</span>
3073
+ 595: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
3074
+ 596: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
3075
+ 597: <span class="ruby-keyword kw">end</span></pre>
2912
3076
  </div>
2913
3077
 
2914
3078
  </div>
@@ -2941,18 +3105,54 @@ Print the attribute values. It&#8217;s used for debugging only.
2941
3105
  <div class="method-source-code"
2942
3106
  id="to-s-source">
2943
3107
  <pre>
2944
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 975</span>
2945
- 975: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
2946
- 976: <span class="ruby-comment cmt">#raise &quot;STOP!&quot;</span>
2947
- 977: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
2948
- 978: <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
2949
- 979: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
2950
- 980: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
2951
- 981: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
2952
- 982: <span class="ruby-keyword kw">end</span>
2953
- 983: <span class="ruby-keyword kw">end</span>
2954
- 984: <span class="ruby-identifier">str</span>
2955
- 985: <span class="ruby-keyword kw">end</span></pre>
3108
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1048</span>
3109
+ 1048: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
3110
+ 1049: <span class="ruby-comment cmt">#raise &quot;STOP!&quot;</span>
3111
+ 1050: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
3112
+ 1051: <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
3113
+ 1052: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
3114
+ 1053: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
3115
+ 1054: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
3116
+ 1055: <span class="ruby-keyword kw">end</span>
3117
+ 1056: <span class="ruby-keyword kw">end</span>
3118
+ 1057: <span class="ruby-identifier">str</span>
3119
+ 1058: <span class="ruby-keyword kw">end</span></pre>
3120
+ </div>
3121
+
3122
+ </div>
3123
+
3124
+
3125
+
3126
+
3127
+ </div>
3128
+
3129
+
3130
+ <div id="warning-method" class="method-detail ">
3131
+ <a name="method-i-warning"></a>
3132
+
3133
+ <div class="method-heading">
3134
+
3135
+ <span class="method-name">warning</span><span
3136
+ class="method-args">(id, text, sourceFileInfo = nil)</span>
3137
+ <span class="method-click-advice">click to toggle source</span>
3138
+
3139
+ </div>
3140
+
3141
+ <div class="method-description">
3142
+
3143
+ <p>
3144
+ Generate a warning message via the message handle.
3145
+ </p>
3146
+
3147
+
3148
+
3149
+ <div class="method-source-code"
3150
+ id="warning-source">
3151
+ <pre>
3152
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1066</span>
3153
+ 1066: <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>, <span class="ruby-identifier">sourceFileInfo</span> = <span class="ruby-keyword kw">nil</span>)
3154
+ 1067: <span class="ruby-ivar">@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>)
3155
+ 1068: <span class="ruby-keyword kw">end</span></pre>
2956
3156
  </div>
2957
3157
 
2958
3158
  </div>
@@ -2985,10 +3185,10 @@ Return the average number of working days per week.
2985
3185
  <div class="method-source-code"
2986
3186
  id="weekly-orking-ays-source">
2987
3187
  <pre>
2988
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 508</span>
2989
- 508: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
2990
- 509: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">52.1429</span>
2991
- 510: <span class="ruby-keyword kw">end</span></pre>
3188
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 534</span>
3189
+ 534: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
3190
+ 535: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">52.1429</span>
3191
+ 536: <span class="ruby-keyword kw">end</span></pre>
2992
3192
  </div>
2993
3193
 
2994
3194
  </div>
@@ -3022,16 +3222,16 @@ given <em>interval</em>.
3022
3222
  <div class="method-source-code"
3023
3223
  id="working-ays-source">
3024
3224
  <pre>
3025
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 874</span>
3026
- 874: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">workingDays</span>(<span class="ruby-identifier">interval</span>)
3027
- 875: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>)
3028
- 876: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>)
3029
- 877: <span class="ruby-identifier">slots</span> = <span class="ruby-value">0</span>
3030
- 878: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
3031
- 879: <span class="ruby-identifier">slots</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboardNoVacations</span>[<span class="ruby-identifier">idx</span>]
3032
- 880: <span class="ruby-keyword kw">end</span>
3033
- 881: <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
3034
- 882: <span class="ruby-keyword kw">end</span></pre>
3225
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 942</span>
3226
+ 942: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">workingDays</span>(<span class="ruby-identifier">interval</span>)
3227
+ 943: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>)
3228
+ 944: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>)
3229
+ 945: <span class="ruby-identifier">slots</span> = <span class="ruby-value">0</span>
3230
+ 946: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
3231
+ 947: <span class="ruby-identifier">slots</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboardNoVacations</span>[<span class="ruby-identifier">idx</span>]
3232
+ 948: <span class="ruby-keyword kw">end</span>
3233
+ 949: <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
3234
+ 950: <span class="ruby-keyword kw">end</span></pre>
3035
3235
  </div>
3036
3236
 
3037
3237
  </div>
@@ -3064,10 +3264,10 @@ Return the average number of working days per year.
3064
3264
  <div class="method-source-code"
3065
3265
  id="yearly-orking-ays-source">
3066
3266
  <pre>
3067
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 518</span>
3068
- 518: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
3069
- 519: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
3070
- 520: <span class="ruby-keyword kw">end</span></pre>
3267
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 544</span>
3268
+ 544: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
3269
+ 545: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
3270
+ 546: <span class="ruby-keyword kw">end</span></pre>
3071
3271
  </div>
3072
3272
 
3073
3273
  </div>
@@ -3104,29 +3304,29 @@ Return the average number of working days per year.
3104
3304
  <div class="method-source-code"
3105
3305
  id="finish-cenario-source">
3106
3306
  <pre>
3107
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1061</span>
3108
- 1061: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
3109
- 1062: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Checking scenario #{scenario(scIdx).get('name')}&quot;</span>)
3110
- 1063: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3111
- 1064: <span class="ruby-comment cmt"># Recursively traverse the top-level tasks to finish all tasks.</span>
3112
- 1065: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>
3113
- 1066: <span class="ruby-keyword kw">end</span>
3114
- 1067:
3115
- 1068: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3116
- 1069: <span class="ruby-comment cmt"># Recursively traverse the top-level resources to finish them all.</span>
3117
- 1070: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">parent</span>
3118
- 1071: <span class="ruby-keyword kw">end</span>
3119
- 1072:
3120
- 1073: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3121
- 1074: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
3122
- 1075: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3123
- 1076: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
3124
- 1077: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3125
- 1078: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>)
3126
- 1079: <span class="ruby-keyword kw">end</span>
3127
- 1080:
3128
- 1081: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3129
- 1082: <span class="ruby-keyword kw">end</span></pre>
3307
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1146</span>
3308
+ 1146: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
3309
+ 1147: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Checking scenario #{scenario(scIdx).get('name')}&quot;</span>)
3310
+ 1148: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3311
+ 1149: <span class="ruby-comment cmt"># Recursively traverse the top-level tasks to finish all tasks.</span>
3312
+ 1150: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>
3313
+ 1151: <span class="ruby-keyword kw">end</span>
3314
+ 1152:
3315
+ 1153: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3316
+ 1154: <span class="ruby-comment cmt"># Recursively traverse the top-level resources to finish them all.</span>
3317
+ 1155: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">parent</span>
3318
+ 1156: <span class="ruby-keyword kw">end</span>
3319
+ 1157:
3320
+ 1158: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3321
+ 1159: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
3322
+ 1160: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3323
+ 1161: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
3324
+ 1162: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3325
+ 1163: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>)
3326
+ 1164: <span class="ruby-keyword kw">end</span>
3327
+ 1165:
3328
+ 1166: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3329
+ 1167: <span class="ruby-keyword kw">end</span></pre>
3130
3330
  </div>
3131
3331
 
3132
3332
  </div>
@@ -3157,73 +3357,79 @@ Return the average number of working days per year.
3157
3357
  <div class="method-source-code"
3158
3358
  id="prepare-cenario-source">
3159
3359
  <pre>
3160
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 994</span>
3161
- 994: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
3162
- 995: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-value str">&quot;Preparing scenario &quot;</span> <span class="ruby-operator">+</span>
3163
- 996: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
3164
- 997: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
3165
- 998: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
3166
- 999:
3167
- 1000: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
3168
- 1001: <span class="ruby-comment cmt"># project.</span>
3169
- 1002: <span class="ruby-identifier">usedResources</span> = []
3170
- 1003: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3171
- 1004: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">candidates</span>(<span class="ruby-identifier">scIdx</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3172
- 1005: <span class="ruby-identifier">usedResources</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">resource</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>)
3173
- 1006: <span class="ruby-keyword kw">end</span>
3174
- 1007: <span class="ruby-keyword kw">end</span>
3175
- 1008: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
3176
- 1009: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3177
- 1010: <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3178
- 1011: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
3179
- 1012: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
3180
- 1013: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3181
- 1014: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>((<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) * <span class="ruby-value">0.8</span>)
3182
- 1015: <span class="ruby-keyword kw">end</span>
3183
- 1016:
3184
- 1017: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setDirectReports</span>(<span class="ruby-identifier">scIdx</span>) }
3185
- 1018: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setReports</span>(<span class="ruby-identifier">scIdx</span>) }
3186
- 1019:
3187
- 1020: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>) }
3188
- 1021: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-constant">Xref</span>(<span class="ruby-identifier">scIdx</span>) }
3189
- 1022: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">propagateInitialValues</span>(<span class="ruby-identifier">scIdx</span>) }
3190
- 1023: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) }
3191
- 1024:
3192
- 1025: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
3193
- 1026: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
3194
- 1027: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3195
- 1028: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
3196
- 1029: <span class="ruby-keyword kw">end</span>
3197
- 1030: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.85</span>)
3198
- 1031: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
3199
- 1032: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3200
- 1033: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
3201
- 1034: <span class="ruby-keyword kw">end</span>
3202
- 1035: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.87</span>)
3203
- 1036:
3204
- 1037: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
3205
- 1038: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">countResourceAllocations</span>(<span class="ruby-identifier">scIdx</span>) }
3206
- 1039: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.88</span>)
3207
- 1040: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
3208
- 1041: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.9</span>)
3209
- 1042: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
3210
- 1043: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.95</span>)
3211
- 1044: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcPathCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
3212
- 1045: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.99</span>)
3213
- 1046: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
3214
- 1047: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
3215
- 1048:
3216
- 1049: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3217
- 1050: <span class="ruby-comment cmt"># This is used for debugging only</span>
3218
- 1051: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
3219
- 1052: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3220
- 1053: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{resource}&quot;</span>
3221
- 1054: <span class="ruby-keyword kw">end</span>
3222
- 1055: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3223
- 1056: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{task}&quot;</span>
3224
- 1057: <span class="ruby-keyword kw">end</span>
3225
- 1058: <span class="ruby-keyword kw">end</span>
3226
- 1059: <span class="ruby-keyword kw">end</span></pre>
3360
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1073</span>
3361
+ 1073: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
3362
+ 1074: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-value str">&quot;Preparing scenario &quot;</span> <span class="ruby-operator">+</span>
3363
+ 1075: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
3364
+ 1076: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
3365
+ 1077: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
3366
+ 1078:
3367
+ 1079: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
3368
+ 1080: <span class="ruby-comment cmt"># project.</span>
3369
+ 1081: <span class="ruby-identifier">usedResources</span> = []
3370
+ 1082: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3371
+ 1083: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">candidates</span>(<span class="ruby-identifier">scIdx</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3372
+ 1084: <span class="ruby-identifier">usedResources</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">resource</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>)
3373
+ 1085: <span class="ruby-keyword kw">end</span>
3374
+ 1086: <span class="ruby-keyword kw">end</span>
3375
+ 1087: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
3376
+ 1088: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3377
+ 1089: <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3378
+ 1090: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
3379
+ 1091: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
3380
+ 1092: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3381
+ 1093: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>((<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) * <span class="ruby-value">0.8</span>)
3382
+ 1094: <span class="ruby-keyword kw">end</span>
3383
+ 1095:
3384
+ 1096: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setDirectReports</span>(<span class="ruby-identifier">scIdx</span>) }
3385
+ 1097: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setReports</span>(<span class="ruby-identifier">scIdx</span>) }
3386
+ 1098:
3387
+ 1099: <span class="ruby-identifier">computeResourceAvailabilities</span>(<span class="ruby-identifier">scIdx</span>, <span class="ruby-identifier">usedResources</span>)
3388
+ 1100:
3389
+ 1101: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.81</span>)
3390
+ 1102: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>) }
3391
+ 1103: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.82</span>)
3392
+ 1104: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-constant">Xref</span>(<span class="ruby-identifier">scIdx</span>) }
3393
+ 1105: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">propagateInitialValues</span>(<span class="ruby-identifier">scIdx</span>) }
3394
+ 1106: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.83</span>)
3395
+ 1107: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) }
3396
+ 1108:
3397
+ 1109: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.84</span>)
3398
+ 1110: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
3399
+ 1111: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
3400
+ 1112: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3401
+ 1113: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
3402
+ 1114: <span class="ruby-keyword kw">end</span>
3403
+ 1115: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.85</span>)
3404
+ 1116: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
3405
+ 1117: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3406
+ 1118: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
3407
+ 1119: <span class="ruby-keyword kw">end</span>
3408
+ 1120: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.87</span>)
3409
+ 1121:
3410
+ 1122: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
3411
+ 1123: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">countResourceAllocations</span>(<span class="ruby-identifier">scIdx</span>) }
3412
+ 1124: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.88</span>)
3413
+ 1125: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
3414
+ 1126: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.9</span>)
3415
+ 1127: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
3416
+ 1128: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.95</span>)
3417
+ 1129: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcPathCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
3418
+ 1130: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.99</span>)
3419
+ 1131: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
3420
+ 1132: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
3421
+ 1133:
3422
+ 1134: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3423
+ 1135: <span class="ruby-comment cmt"># This is used for debugging only</span>
3424
+ 1136: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
3425
+ 1137: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3426
+ 1138: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{resource}&quot;</span>
3427
+ 1139: <span class="ruby-keyword kw">end</span>
3428
+ 1140: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3429
+ 1141: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{task}&quot;</span>
3430
+ 1142: <span class="ruby-keyword kw">end</span>
3431
+ 1143: <span class="ruby-keyword kw">end</span>
3432
+ 1144: <span class="ruby-keyword kw">end</span></pre>
3227
3433
  </div>
3228
3434
 
3229
3435
  </div>
@@ -3257,85 +3463,97 @@ index <tt>scIdx</tt>.
3257
3463
  <div class="method-source-code"
3258
3464
  id="schedule-cenario-source">
3259
3465
  <pre>
3260
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1085</span>
3261
- 1085: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
3262
- 1086: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
3263
- 1087: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">leaf?</span> }
3264
- 1088:
3265
- 1089: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">enter</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;#{tasks.length} leaf tasks&quot;</span>)
3266
- 1090: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
3267
- 1091: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
3268
- 1092: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
3269
- 1093: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
3270
- 1094: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
3271
- 1095: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
3272
- 1096: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">setSorting</span>([ [ <span class="ruby-value str">'priority'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
3273
- 1097: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
3274
- 1098: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ] ])
3275
- 1099: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
3276
- 1100: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
3277
- 1101:
3278
- 1102: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
3279
- 1103: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
3280
- 1104: <span class="ruby-comment cmt"># true.</span>
3281
- 1105: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-value str">&quot;Scheduling scenario &quot;</span> <span class="ruby-operator">+</span>
3282
- 1106: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
3283
- 1107: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
3284
- 1108: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
3285
- 1109: <span class="ruby-comment cmt"># ready to be scheduled.</span>
3286
- 1110: <span class="ruby-identifier">workItems</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">to_ary</span>
3287
- 1111:
3288
- 1112: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
3289
- 1113: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
3290
- 1114: <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3291
- 1115: <span class="ruby-identifier">completedTasks</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-identifier">scIdx</span>]
3292
- 1116: <span class="ruby-keyword kw">end</span>
3293
- 1117:
3294
- 1118: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-identifier">completedTasks</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">totalTasks</span>)
3295
- 1119: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
3296
- 1120: <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">readyForScheduling?</span>(<span class="ruby-identifier">scIdx</span>) }
3297
- 1121:
3298
- 1122: <span class="ruby-comment cmt"># Check if we are done.</span>
3299
- 1123: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">empty?</span>
3300
- 1124:
3301
- 1125: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
3302
- 1126: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
3303
- 1127: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
3304
- 1128: <span class="ruby-comment cmt"># Schedule it.</span>
3305
- 1129: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">schedule</span>(<span class="ruby-identifier">scIdx</span>)
3306
- 1130: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Task #{task.fullId}: #{task['start', scIdx]} -&gt; &quot;</span> <span class="ruby-operator">+</span>
3307
- 1131: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
3308
- 1132: <span class="ruby-keyword kw">end</span>
3309
- 1133: <span class="ruby-keyword kw">end</span>
3310
- 1134: <span class="ruby-identifier">unscheduledTasks</span> = []
3311
- 1135: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">unscheduledTasks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">t</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">t</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-identifier">scIdx</span>] }
3312
- 1136:
3313
- 1137: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
3314
- 1138: <span class="ruby-comment cmt"># warnings.</span>
3315
- 1139: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
3316
- 1140: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
3317
- 1141: <span class="ruby-value str">'unscheduled_tasks'</span>,
3318
- 1142: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be scheduled&quot;</span>)
3319
- 1143: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3320
- 1144: <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
3321
- 1145: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
3322
- 1146: <span class="ruby-value str">'unscheduled_task'</span>,
3323
- 1147: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
3324
- 1148: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
3325
- 1149: <span class="ruby-node">&quot;#{t['end', scIdx] ? t['end', scIdx] : '&lt;?&gt;'}&quot;</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">t</span>,
3326
- 1150: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
3327
- 1151:
3328
- 1152: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3329
- 1153: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">10</span>
3330
- 1154: <span class="ruby-keyword kw">end</span>
3331
- 1155: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3332
- 1156: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
3333
- 1157: <span class="ruby-keyword kw">end</span>
3334
- 1158:
3335
- 1159: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3336
- 1160: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">exit</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;Scheduling of scenario #{scIdx} finished&quot;</span>)
3337
- 1161: <span class="ruby-keyword kw">true</span>
3338
- 1162: <span class="ruby-keyword kw">end</span></pre>
3466
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1170</span>
3467
+ 1170: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
3468
+ 1171: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
3469
+ 1172: <span class="ruby-comment cmt"># Only care about leaf tasks that are not milestones are aren't</span>
3470
+ 1173: <span class="ruby-comment cmt"># scheduled already (due to bookings).</span>
3471
+ 1174: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">leaf?</span> <span class="ruby-operator">||</span>
3472
+ 1175: <span class="ruby-identifier">task</span>[<span class="ruby-value str">'milestone'</span>, <span class="ruby-identifier">scIdx</span>] <span class="ruby-operator">||</span>
3473
+ 1176: <span class="ruby-identifier">task</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-identifier">scIdx</span>] }
3474
+ 1177:
3475
+ 1178: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">enter</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;#{tasks.length} leaf tasks&quot;</span>)
3476
+ 1179: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
3477
+ 1180: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
3478
+ 1181: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
3479
+ 1182: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
3480
+ 1183: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
3481
+ 1184: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
3482
+ 1185: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">setSorting</span>([ [ <span class="ruby-value str">'priority'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
3483
+ 1186: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
3484
+ 1187: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ] ])
3485
+ 1188: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
3486
+ 1189: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
3487
+ 1190:
3488
+ 1191: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
3489
+ 1192: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
3490
+ 1193: <span class="ruby-comment cmt"># true.</span>
3491
+ 1194: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-value str">&quot;Scheduling scenario &quot;</span> <span class="ruby-operator">+</span>
3492
+ 1195: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
3493
+ 1196: <span class="ruby-identifier">failedTasks</span> = []
3494
+ 1197: <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">empty?</span>
3495
+ 1198: <span class="ruby-comment cmt"># Only update the progress bar every 10 completed tasks.</span>
3496
+ 1199: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">%</span> <span class="ruby-value">10</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
3497
+ 1200: <span class="ruby-identifier">percentComplete</span> = (<span class="ruby-identifier">totalTasks</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>).<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">totalTasks</span>
3498
+ 1201: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-identifier">percentComplete</span>)
3499
+ 1202: <span class="ruby-keyword kw">end</span>
3500
+ 1203:
3501
+ 1204: <span class="ruby-comment cmt"># Now find the task with the highest priority that can be scheduled</span>
3502
+ 1205: <span class="ruby-comment cmt"># and schedule it.</span>
3503
+ 1206: <span class="ruby-identifier">taskToRemove</span> = <span class="ruby-keyword kw">nil</span>
3504
+ 1207: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3505
+ 1208: <span class="ruby-comment cmt"># Task not ready? Ignore it.</span>
3506
+ 1209: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">readyForScheduling?</span>(<span class="ruby-identifier">scIdx</span>)
3507
+ 1210:
3508
+ 1211: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">schedule</span>(<span class="ruby-identifier">scIdx</span>)
3509
+ 1212: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Task #{task.fullId}: #{task['start', scIdx]} -&gt; &quot;</span> <span class="ruby-operator">+</span>
3510
+ 1213: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
3511
+ 1214: <span class="ruby-keyword kw">else</span>
3512
+ 1215: <span class="ruby-identifier">failedTasks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">task</span>
3513
+ 1216: <span class="ruby-keyword kw">end</span>
3514
+ 1217: <span class="ruby-comment cmt"># The tasks has been completed or failed. But we can remove it from</span>
3515
+ 1218: <span class="ruby-comment cmt"># the todo list.</span>
3516
+ 1219: <span class="ruby-identifier">taskToRemove</span> = <span class="ruby-identifier">task</span>
3517
+ 1220: <span class="ruby-comment cmt"># The scheduling of this task may cause other higher priority tasks</span>
3518
+ 1221: <span class="ruby-comment cmt"># to be ready now. So we terminate the inner loop and start at the</span>
3519
+ 1222: <span class="ruby-comment cmt"># top of the list again.</span>
3520
+ 1223: <span class="ruby-keyword kw">break</span>
3521
+ 1224: <span class="ruby-keyword kw">end</span>
3522
+ 1225:
3523
+ 1226: <span class="ruby-comment cmt"># There should always be a task to be removed. If not, the scheduler</span>
3524
+ 1227: <span class="ruby-comment cmt"># has found a set of tasks that deadlock each other.</span>
3525
+ 1228: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">taskToRemove</span>
3526
+ 1229: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">taskToRemove</span>)
3527
+ 1230: <span class="ruby-keyword kw">else</span>
3528
+ 1231: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">puts</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">fullId</span> }
3529
+ 1232: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'Scheduler deadlock: Cannot schedule any further tasks'</span>
3530
+ 1233: <span class="ruby-keyword kw">end</span>
3531
+ 1234: <span class="ruby-keyword kw">end</span>
3532
+ 1235:
3533
+ 1236: <span class="ruby-comment cmt"># Check for failed tasks and report the first 10 of them as</span>
3534
+ 1237: <span class="ruby-comment cmt"># warnings.</span>
3535
+ 1238: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">failedTasks</span>.<span class="ruby-identifier">empty?</span>
3536
+ 1239: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'unscheduled_tasks'</span>,
3537
+ 1240: <span class="ruby-node">&quot;#{failedTasks.length} tasks could not be scheduled&quot;</span>)
3538
+ 1241: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3539
+ 1242: <span class="ruby-identifier">failedTasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
3540
+ 1243: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'unscheduled_task'</span>,
3541
+ 1244: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
3542
+ 1245: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
3543
+ 1246: <span class="ruby-node">&quot;#{t['end', scIdx] ? t['end', scIdx] : '&lt;?&gt;'}&quot;</span>,
3544
+ 1247: <span class="ruby-identifier">t</span>.<span class="ruby-identifier">sourceFileInfo</span>)
3545
+ 1248:
3546
+ 1249: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3547
+ 1250: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">10</span>
3548
+ 1251: <span class="ruby-keyword kw">end</span>
3549
+ 1252: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3550
+ 1253: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
3551
+ 1254: <span class="ruby-keyword kw">end</span>
3552
+ 1255:
3553
+ 1256: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3554
+ 1257: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">exit</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;Scheduling of scenario #{scIdx} finished&quot;</span>)
3555
+ 1258: <span class="ruby-keyword kw">true</span>
3556
+ 1259: <span class="ruby-keyword kw">end</span></pre>
3339
3557
  </div>
3340
3558
 
3341
3559
  </div>
@@ -3352,6 +3570,51 @@ index <tt>scIdx</tt>.
3352
3570
  <h3 class="section-header">Private Instance Methods</h3>
3353
3571
 
3354
3572
 
3573
+ <div id="compute-esource-vailabilities-method" class="method-detail ">
3574
+ <a name="method-i-computeResourceAvailabilities"></a>
3575
+
3576
+ <div class="method-heading">
3577
+
3578
+ <span class="method-name">computeResourceAvailabilities</span><span
3579
+ class="method-args">(scIdx, usedResources)</span>
3580
+ <span class="method-click-advice">click to toggle source</span>
3581
+
3582
+ </div>
3583
+
3584
+ <div class="method-description">
3585
+
3586
+
3587
+
3588
+
3589
+
3590
+ <div class="method-source-code"
3591
+ id="compute-esource-vailabilities-source">
3592
+ <pre>
3593
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1297</span>
3594
+ 1297: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">computeResourceAvailabilities</span>(<span class="ruby-identifier">scIdx</span>, <span class="ruby-identifier">usedResources</span>)
3595
+ 1298: <span class="ruby-ivar">@resourceAvailability</span> =
3596
+ 1299: <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>],
3597
+ 1300: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
3598
+ 1301:
3599
+ 1302: <span class="ruby-ivar">@resourceAvailability</span>.<span class="ruby-identifier">each_index</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
3600
+ 1303: <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3601
+ 1304: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">available?</span>(<span class="ruby-identifier">scIdx</span>, <span class="ruby-identifier">idx</span>)
3602
+ 1305: <span class="ruby-ivar">@resourceAvailability</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-keyword kw">true</span>
3603
+ 1306: <span class="ruby-keyword kw">break</span>
3604
+ 1307: <span class="ruby-keyword kw">end</span>
3605
+ 1308: <span class="ruby-keyword kw">end</span>
3606
+ 1309: <span class="ruby-keyword kw">end</span>
3607
+ 1310: <span class="ruby-keyword kw">end</span></pre>
3608
+ </div>
3609
+
3610
+ </div>
3611
+
3612
+
3613
+
3614
+
3615
+ </div>
3616
+
3617
+
3355
3618
  <div id="init-coreboards-method" class="method-detail ">
3356
3619
  <a name="method-i-initScoreboards"></a>
3357
3620
 
@@ -3372,40 +3635,40 @@ index <tt>scIdx</tt>.
3372
3635
  <div class="method-source-code"
3373
3636
  id="init-coreboards-source">
3374
3637
  <pre>
3375
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1166</span>
3376
- 1166: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initScoreboards</span>
3377
- 1167: <span class="ruby-comment cmt"># Create scoreboard and mark all slots as unavailable</span>
3378
- 1168: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>],
3379
- 1169: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>], <span class="ruby-value">2</span>)
3380
- 1170: <span class="ruby-comment cmt"># And the same for another scoreboard.</span>
3381
- 1171: <span class="ruby-ivar">@scoreboardNoVacations</span> =
3382
- 1172: <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>],
3383
- 1173: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>], <span class="ruby-value">2</span>)
3384
- 1174:
3385
- 1175: <span class="ruby-identifier">workinghours</span> = <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>]
3386
- 1176:
3387
- 1177: <span class="ruby-comment cmt"># Change all work time slots to nil (available) again.</span>
3388
- 1178: <span class="ruby-identifier">date</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-value">0</span>)
3389
- 1179: <span class="ruby-identifier">delta</span> = <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
3390
- 1180: <span class="ruby-identifier">scoreboardSize</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
3391
- 1181: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">workinghours</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
3392
- 1182: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-keyword kw">nil</span>
3393
- 1183: <span class="ruby-ivar">@scoreboardNoVacations</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-keyword kw">nil</span>
3394
- 1184: <span class="ruby-keyword kw">end</span>
3395
- 1185: <span class="ruby-identifier">date</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">delta</span>
3396
- 1186: <span class="ruby-keyword kw">end</span>
3397
- 1187:
3398
- 1188: <span class="ruby-comment cmt"># Mark all global vacation slots as such</span>
3399
- 1189: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'vacations'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vacation</span><span class="ruby-operator">|</span>
3400
- 1190: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">start</span>)
3401
- 1191: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">end</span>)
3402
- 1192: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
3403
- 1193: <span class="ruby-comment cmt"># If the slot is nil or set to 4 then don't set the time-off bit.</span>
3404
- 1194: <span class="ruby-identifier">sb</span> = <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>]
3405
- 1195: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = ((<span class="ruby-identifier">sb</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">sb</span> <span class="ruby-operator">==</span> <span class="ruby-value">4</span>) <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">2</span>) <span class="ruby-operator">|</span> (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>)
3406
- 1196: <span class="ruby-keyword kw">end</span>
3407
- 1197: <span class="ruby-keyword kw">end</span>
3408
- 1198: <span class="ruby-keyword kw">end</span></pre>
3638
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1263</span>
3639
+ 1263: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initScoreboards</span>
3640
+ 1264: <span class="ruby-comment cmt"># Create scoreboard and mark all slots as unavailable</span>
3641
+ 1265: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>],
3642
+ 1266: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>], <span class="ruby-value">2</span>)
3643
+ 1267: <span class="ruby-comment cmt"># And the same for another scoreboard.</span>
3644
+ 1268: <span class="ruby-ivar">@scoreboardNoVacations</span> =
3645
+ 1269: <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>],
3646
+ 1270: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>], <span class="ruby-value">2</span>)
3647
+ 1271:
3648
+ 1272: <span class="ruby-identifier">workinghours</span> = <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>]
3649
+ 1273:
3650
+ 1274: <span class="ruby-comment cmt"># Change all work time slots to nil (available) again.</span>
3651
+ 1275: <span class="ruby-identifier">date</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-value">0</span>)
3652
+ 1276: <span class="ruby-identifier">delta</span> = <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
3653
+ 1277: <span class="ruby-identifier">scoreboardSize</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
3654
+ 1278: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">workinghours</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
3655
+ 1279: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-keyword kw">nil</span>
3656
+ 1280: <span class="ruby-ivar">@scoreboardNoVacations</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-keyword kw">nil</span>
3657
+ 1281: <span class="ruby-keyword kw">end</span>
3658
+ 1282: <span class="ruby-identifier">date</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">delta</span>
3659
+ 1283: <span class="ruby-keyword kw">end</span>
3660
+ 1284:
3661
+ 1285: <span class="ruby-comment cmt"># Mark all global vacation slots as such</span>
3662
+ 1286: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'vacations'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vacation</span><span class="ruby-operator">|</span>
3663
+ 1287: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">start</span>)
3664
+ 1288: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">end</span>)
3665
+ 1289: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
3666
+ 1290: <span class="ruby-comment cmt"># If the slot is nil or set to 4 then don't set the time-off bit.</span>
3667
+ 1291: <span class="ruby-identifier">sb</span> = <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>]
3668
+ 1292: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = ((<span class="ruby-identifier">sb</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">sb</span> <span class="ruby-operator">==</span> <span class="ruby-value">4</span>) <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">2</span>) <span class="ruby-operator">|</span> (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>)
3669
+ 1293: <span class="ruby-keyword kw">end</span>
3670
+ 1294: <span class="ruby-keyword kw">end</span>
3671
+ 1295: <span class="ruby-keyword kw">end</span></pre>
3409
3672
  </div>
3410
3673
 
3411
3674
  </div>
@@ -3436,15 +3699,15 @@ index <tt>scIdx</tt>.
3436
3699
  <div class="method-source-code"
3437
3700
  id="matching-eports-source">
3438
3701
  <pre>
3439
- <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1200</span>
3440
- 1200: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>)
3441
- 1201: <span class="ruby-identifier">list</span> = []
3442
- 1202: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
3443
- 1203: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>
3444
- 1204: <span class="ruby-identifier">list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">id</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">=~</span> <span class="ruby-identifier">id</span>
3445
- 1205: <span class="ruby-keyword kw">end</span>
3446
- 1206: <span class="ruby-identifier">list</span>
3447
- 1207: <span class="ruby-keyword kw">end</span></pre>
3702
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Project.rb, line 1313</span>
3703
+ 1313: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>)
3704
+ 1314: <span class="ruby-identifier">list</span> = []
3705
+ 1315: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
3706
+ 1316: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>
3707
+ 1317: <span class="ruby-identifier">list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">id</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">=~</span> <span class="ruby-identifier">id</span>
3708
+ 1318: <span class="ruby-keyword kw">end</span>
3709
+ 1319: <span class="ruby-identifier">list</span>
3710
+ 1320: <span class="ruby-keyword kw">end</span></pre>
3448
3711
  </div>
3449
3712
 
3450
3713
  </div>