taskjuggler 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (563) hide show
  1. data/CHANGELOG +37 -5
  2. data/README.rdoc +4 -2
  3. data/benchmarks/UTF-8-Strings.rb +58 -0
  4. data/benchmarks/css/tjmanual.css +0 -1
  5. data/benchmarks/htmltaskreport-1.html +47702 -0
  6. data/benchmarks/htmltaskreport-2.html +23345 -0
  7. data/benchmarks/htmltaskreport-3.html +23265 -0
  8. data/benchmarks/htmltaskreport-4.html +22135 -0
  9. data/benchmarks/profile.clt +36082 -0
  10. data/benchmarks/tj3.profile +0 -0
  11. data/benchmarks/tj3.profile.grind +6185 -0
  12. data/benchmarks/tj3.profile.symbols +432 -0
  13. data/benchmarks/tj3.profile.txt +448 -0
  14. data/data/tjp.vim +689 -0
  15. data/doc/AppConfig.html +26 -2
  16. data/doc/CHANGELOG.html +60 -8
  17. data/doc/COPYING.html +26 -2
  18. data/doc/Diff/Hunk.html +26 -2
  19. data/doc/Diff.html +26 -2
  20. data/doc/Diffable.html +26 -2
  21. data/doc/DiffableString.html +26 -2
  22. data/doc/Object.html +26 -104
  23. data/doc/README_rdoc.html +39 -7
  24. data/doc/RuntimeConfig.html +26 -2
  25. data/doc/String.html +26 -2
  26. data/doc/TaskJuggler/Account.html +27 -3
  27. data/doc/TaskJuggler/AccountAttribute.html +30 -6
  28. data/doc/TaskJuggler/AccountScenario.html +28 -4
  29. data/doc/TaskJuggler/Allocation.html +33 -9
  30. data/doc/TaskJuggler/AllocationAttribute.html +31 -7
  31. data/doc/TaskJuggler/AttributeBase.html +162 -111
  32. data/doc/TaskJuggler/AttributeDefinition.html +26 -2
  33. data/doc/TaskJuggler/AttributeOverwrite.html +26 -2
  34. data/doc/TaskJuggler/BatchProcessor.html +26 -2
  35. data/doc/TaskJuggler/Booking.html +29 -5
  36. data/doc/TaskJuggler/BookingListAttribute.html +29 -5
  37. data/doc/TaskJuggler/BooleanAttribute.html +30 -6
  38. data/doc/TaskJuggler/CSVFile.html +26 -2
  39. data/doc/TaskJuggler/CellSettingPattern.html +26 -2
  40. data/doc/TaskJuggler/CellSettingPatternList.html +26 -2
  41. data/doc/TaskJuggler/Charge.html +30 -6
  42. data/doc/TaskJuggler/ChargeListAttribute.html +29 -5
  43. data/doc/TaskJuggler/ChargeSet.html +26 -2
  44. data/doc/TaskJuggler/ChargeSetListAttribute.html +30 -6
  45. data/doc/TaskJuggler/CollisionDetector.html +26 -2
  46. data/doc/TaskJuggler/ColumnListAttribute.html +28 -4
  47. data/doc/TaskJuggler/ColumnTable.html +26 -2
  48. data/doc/TaskJuggler/Daemon.html +26 -2
  49. data/doc/TaskJuggler/DataCache.html +26 -2
  50. data/doc/TaskJuggler/DataCacheEntry.html +26 -2
  51. data/doc/TaskJuggler/DateAttribute.html +30 -6
  52. data/doc/TaskJuggler/DefinitionListAttribute.html +28 -4
  53. data/doc/TaskJuggler/DependencyListAttribute.html +30 -6
  54. data/doc/TaskJuggler/DurationAttribute.html +31 -7
  55. data/doc/TaskJuggler/FileList.html +26 -2
  56. data/doc/TaskJuggler/FileRecord.html +26 -2
  57. data/doc/TaskJuggler/FixnumAttribute.html +28 -4
  58. data/doc/TaskJuggler/FlagListAttribute.html +30 -6
  59. data/doc/TaskJuggler/FloatAttribute.html +29 -5
  60. data/doc/TaskJuggler/FormatListAttribute.html +29 -5
  61. data/doc/TaskJuggler/GanttChart.html +26 -2
  62. data/doc/TaskJuggler/GanttContainer.html +26 -2
  63. data/doc/TaskJuggler/GanttHeader.html +26 -2
  64. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -2
  65. data/doc/TaskJuggler/GanttLine.html +27 -3
  66. data/doc/TaskJuggler/GanttLoadStack.html +26 -2
  67. data/doc/TaskJuggler/GanttMilestone.html +26 -2
  68. data/doc/TaskJuggler/GanttRouter.html +26 -2
  69. data/doc/TaskJuggler/GanttTaskBar.html +26 -2
  70. data/doc/TaskJuggler/HTMLDocument.html +26 -2
  71. data/doc/TaskJuggler/HTMLElements.html +623 -0
  72. data/doc/TaskJuggler/HTMLGraphics.html +26 -2
  73. data/doc/TaskJuggler/ICalReport.html +864 -0
  74. data/doc/TaskJuggler/ICalendar/Component.html +969 -0
  75. data/doc/TaskJuggler/ICalendar/Event.html +742 -0
  76. data/doc/TaskJuggler/ICalendar/Journal.html +722 -0
  77. data/doc/TaskJuggler/ICalendar/Person.html +633 -0
  78. data/doc/TaskJuggler/ICalendar/Todo.html +789 -0
  79. data/doc/TaskJuggler/ICalendar.html +1035 -0
  80. data/doc/TaskJuggler/Interval.html +99 -172
  81. data/doc/TaskJuggler/IntervalList.html +31 -7
  82. data/doc/TaskJuggler/JobInfo.html +26 -2
  83. data/doc/TaskJuggler/Journal.html +26 -2
  84. data/doc/TaskJuggler/JournalEntry.html +26 -2
  85. data/doc/TaskJuggler/JournalEntryList.html +26 -2
  86. data/doc/TaskJuggler/KeywordArray.html +26 -2
  87. data/doc/TaskJuggler/KeywordDocumentation.html +26 -2
  88. data/doc/TaskJuggler/Limits/Limit.html +124 -49
  89. data/doc/TaskJuggler/Limits.html +139 -156
  90. data/doc/TaskJuggler/LimitsAttribute.html +39 -14
  91. data/doc/TaskJuggler/ListAttributeBase.html +35 -11
  92. data/doc/TaskJuggler/Log.html +26 -2
  93. data/doc/TaskJuggler/LogFile.html +26 -2
  94. data/doc/TaskJuggler/LogicalAttribute.html +26 -2
  95. data/doc/TaskJuggler/LogicalExpression.html +26 -2
  96. data/doc/TaskJuggler/LogicalExpressionAttribute.html +35 -11
  97. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +35 -11
  98. data/doc/TaskJuggler/LogicalFlag.html +26 -2
  99. data/doc/TaskJuggler/LogicalFunction.html +28 -4
  100. data/doc/TaskJuggler/LogicalOperation.html +26 -2
  101. data/doc/TaskJuggler/ManagerResponsibilities.html +26 -2
  102. data/doc/TaskJuggler/ManagerStatusRecord.html +26 -2
  103. data/doc/TaskJuggler/Message.html +26 -2
  104. data/doc/TaskJuggler/MessageHandler.html +108 -62
  105. data/doc/TaskJuggler/Navigator.html +26 -2
  106. data/doc/TaskJuggler/NavigatorElement.html +26 -2
  107. data/doc/TaskJuggler/NikuProject.html +26 -2
  108. data/doc/TaskJuggler/NikuReport.html +27 -3
  109. data/doc/TaskJuggler/NikuResource.html +26 -2
  110. data/doc/TaskJuggler/NodeListAttribute.html +31 -7
  111. data/doc/TaskJuggler/PlaceHolderCell.html +26 -2
  112. data/doc/TaskJuggler/ProcessIntercom.html +26 -2
  113. data/doc/TaskJuggler/ProcessIntercomIface.html +26 -2
  114. data/doc/TaskJuggler/Project.html +1236 -973
  115. data/doc/TaskJuggler/ProjectBroker.html +26 -2
  116. data/doc/TaskJuggler/ProjectBrokerIface.html +26 -2
  117. data/doc/TaskJuggler/ProjectFileParser.html +29 -4
  118. data/doc/TaskJuggler/ProjectFileScanner.html +56 -31
  119. data/doc/TaskJuggler/ProjectRecord.html +26 -2
  120. data/doc/TaskJuggler/ProjectServer.html +26 -2
  121. data/doc/TaskJuggler/ProjectServerIface.html +26 -2
  122. data/doc/TaskJuggler/PropertyAttribute.html +35 -11
  123. data/doc/TaskJuggler/PropertyList.html +26 -2
  124. data/doc/TaskJuggler/PropertySet.html +126 -106
  125. data/doc/TaskJuggler/PropertyTreeNode.html +595 -551
  126. data/doc/TaskJuggler/Query.html +127 -100
  127. data/doc/TaskJuggler/RTFHandlers.html +26 -2
  128. data/doc/TaskJuggler/RTFNavigator.html +26 -2
  129. data/doc/TaskJuggler/RTFQuery.html +28 -4
  130. data/doc/TaskJuggler/RTFReport.html +26 -2
  131. data/doc/TaskJuggler/RTFReportLink.html +26 -2
  132. data/doc/TaskJuggler/RTFWithQuerySupport.html +26 -2
  133. data/doc/TaskJuggler/RealFormat.html +26 -2
  134. data/doc/TaskJuggler/RealFormatAttribute.html +31 -7
  135. data/doc/TaskJuggler/ReferenceAttribute.html +58 -34
  136. data/doc/TaskJuggler/Report.html +427 -284
  137. data/doc/TaskJuggler/ReportBase.html +28 -102
  138. data/doc/TaskJuggler/ReportContext.html +26 -2
  139. data/doc/TaskJuggler/ReportScenario.html +633 -0
  140. data/doc/TaskJuggler/ReportServer.html +26 -2
  141. data/doc/TaskJuggler/ReportServerIface.html +26 -2
  142. data/doc/TaskJuggler/ReportServerRecord.html +26 -2
  143. data/doc/TaskJuggler/ReportServlet.html +26 -2
  144. data/doc/TaskJuggler/ReportTable.html +26 -2
  145. data/doc/TaskJuggler/ReportTableCell.html +26 -2
  146. data/doc/TaskJuggler/ReportTableColumn.html +26 -2
  147. data/doc/TaskJuggler/ReportTableLegend.html +26 -2
  148. data/doc/TaskJuggler/ReportTableLine.html +26 -2
  149. data/doc/TaskJuggler/Resource.html +225 -163
  150. data/doc/TaskJuggler/ResourceListAttribute.html +71 -47
  151. data/doc/TaskJuggler/ResourceListRE.html +26 -2
  152. data/doc/TaskJuggler/ResourceScenario.html +645 -603
  153. data/doc/TaskJuggler/RichText.html +26 -2
  154. data/doc/TaskJuggler/RichTextAttribute.html +53 -29
  155. data/doc/TaskJuggler/RichTextDocument.html +26 -2
  156. data/doc/TaskJuggler/RichTextElement.html +26 -2
  157. data/doc/TaskJuggler/RichTextFunctionExample.html +26 -2
  158. data/doc/TaskJuggler/RichTextFunctionHandler.html +26 -2
  159. data/doc/TaskJuggler/RichTextImage.html +26 -2
  160. data/doc/TaskJuggler/RichTextIntermediate.html +29 -5
  161. data/doc/TaskJuggler/RichTextParser.html +26 -2
  162. data/doc/TaskJuggler/RichTextScanner.html +26 -2
  163. data/doc/TaskJuggler/RichTextSnip.html +26 -2
  164. data/doc/TaskJuggler/RichTextSyntaxRules.html +26 -2
  165. data/doc/TaskJuggler/Scenario.html +26 -2
  166. data/doc/TaskJuggler/ScenarioData.html +95 -28
  167. data/doc/TaskJuggler/ScenarioListAttribute.html +39 -15
  168. data/doc/TaskJuggler/Scoreboard.html +137 -73
  169. data/doc/TaskJuggler/ScoreboardInterval.html +1116 -0
  170. data/doc/TaskJuggler/SheetHandlerBase.html +26 -2
  171. data/doc/TaskJuggler/SheetReceiver.html +26 -2
  172. data/doc/TaskJuggler/SheetSender.html +26 -2
  173. data/doc/TaskJuggler/Shift.html +27 -3
  174. data/doc/TaskJuggler/ShiftAssignment.html +27 -3
  175. data/doc/TaskJuggler/ShiftAssignments.html +174 -149
  176. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +41 -16
  177. data/doc/TaskJuggler/ShiftScenario.html +26 -2
  178. data/doc/TaskJuggler/SimpleQueryExpander.html +26 -2
  179. data/doc/TaskJuggler/SortListAttribute.html +35 -11
  180. data/doc/TaskJuggler/StatusSheetReceiver.html +26 -2
  181. data/doc/TaskJuggler/StatusSheetReport.html +26 -2
  182. data/doc/TaskJuggler/StatusSheetSender.html +26 -2
  183. data/doc/TaskJuggler/StdIoWrapper.html +26 -2
  184. data/doc/TaskJuggler/StringAttribute.html +39 -15
  185. data/doc/TaskJuggler/SymbolAttribute.html +35 -11
  186. data/doc/TaskJuggler/SyntaxReference.html +26 -2
  187. data/doc/TaskJuggler/TOCEntry.html +26 -2
  188. data/doc/TaskJuggler/TSResourceRecord.html +26 -2
  189. data/doc/TaskJuggler/TSTaskRecord.html +26 -2
  190. data/doc/TaskJuggler/TableColumnDefinition.html +26 -2
  191. data/doc/TaskJuggler/TableOfContents.html +26 -2
  192. data/doc/TaskJuggler/TableReport.html +239 -214
  193. data/doc/TaskJuggler/TagFile/TagFileEntry.html +841 -0
  194. data/doc/TaskJuggler/TagFile.html +817 -0
  195. data/doc/TaskJuggler/Task.html +27 -3
  196. data/doc/TaskJuggler/TaskDepListAttribute.html +47 -23
  197. data/doc/TaskJuggler/TaskDependency.html +26 -2
  198. data/doc/TaskJuggler/TaskListAttribute.html +47 -23
  199. data/doc/TaskJuggler/TaskListRE.html +26 -2
  200. data/doc/TaskJuggler/TaskScenario.html +2235 -2178
  201. data/doc/TaskJuggler/TernarySearchTree.html +26 -2
  202. data/doc/TaskJuggler/TextFormatter.html +26 -2
  203. data/doc/TaskJuggler/TextParser/Macro.html +26 -2
  204. data/doc/TaskJuggler/TextParser/MacroTable.html +26 -2
  205. data/doc/TaskJuggler/TextParser/Pattern.html +26 -2
  206. data/doc/TaskJuggler/TextParser/Rule.html +26 -2
  207. data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +32 -8
  208. data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +39 -15
  209. data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +26 -2
  210. data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +119 -86
  211. data/doc/TaskJuggler/TextParser/Scanner.html +317 -291
  212. data/doc/TaskJuggler/TextParser/SourceFileInfo.html +26 -2
  213. data/doc/TaskJuggler/TextParser/StackElement.html +26 -2
  214. data/doc/TaskJuggler/TextParser/State.html +26 -2
  215. data/doc/TaskJuggler/TextParser/StateTransition.html +26 -2
  216. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +26 -2
  217. data/doc/TaskJuggler/TextParser/TokenDoc.html +26 -2
  218. data/doc/TaskJuggler/TextParser.html +85 -61
  219. data/doc/TaskJuggler/TextReport.html +26 -2
  220. data/doc/TaskJuggler/TimeInterval.html +841 -0
  221. data/doc/TaskJuggler/{IntervalListAttribute.html → TimeIntervalListAttribute.html} +33 -9
  222. data/doc/TaskJuggler/TimeSheet.html +26 -2
  223. data/doc/TaskJuggler/TimeSheetReceiver.html +26 -2
  224. data/doc/TaskJuggler/TimeSheetRecord.html +27 -3
  225. data/doc/TaskJuggler/TimeSheetReport.html +29 -5
  226. data/doc/TaskJuggler/TimeSheetSender.html +26 -2
  227. data/doc/TaskJuggler/TimeSheetSummary.html +26 -2
  228. data/doc/TaskJuggler/TimeSheets.html +26 -2
  229. data/doc/TaskJuggler/Tj3.html +150 -111
  230. data/doc/TaskJuggler/Tj3AppBase.html +26 -2
  231. data/doc/TaskJuggler/Tj3Client.html +26 -2
  232. data/doc/TaskJuggler/Tj3Daemon.html +26 -2
  233. data/doc/TaskJuggler/Tj3Man.html +26 -2
  234. data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -2
  235. data/doc/TaskJuggler/Tj3SsReceiver.html +26 -2
  236. data/doc/TaskJuggler/Tj3SsSender.html +26 -2
  237. data/doc/TaskJuggler/Tj3TsReceiver.html +26 -2
  238. data/doc/TaskJuggler/Tj3TsSender.html +26 -2
  239. data/doc/TaskJuggler/Tj3TsSummary.html +26 -2
  240. data/doc/TaskJuggler/TjException.html +26 -2
  241. data/doc/TaskJuggler/TjRuntimeError.html +26 -2
  242. data/doc/TaskJuggler/TjTime.html +539 -477
  243. data/doc/TaskJuggler/TjpExample.html +26 -2
  244. data/doc/TaskJuggler/TjpExportRE.html +240 -161
  245. data/doc/TaskJuggler/TjpSyntaxRules.html +4236 -3844
  246. data/doc/TaskJuggler/URLParameter.html +26 -2
  247. data/doc/TaskJuggler/UserManual.html +26 -2
  248. data/doc/TaskJuggler/VimSyntax.html +31 -7
  249. data/doc/TaskJuggler/WebServer.html +26 -2
  250. data/doc/TaskJuggler/WelcomePage.html +26 -2
  251. data/doc/TaskJuggler/WorkingHours.html +227 -152
  252. data/doc/TaskJuggler/WorkingHoursAttribute.html +62 -38
  253. data/doc/TaskJuggler/XMLBlob.html +26 -2
  254. data/doc/TaskJuggler/XMLComment.html +26 -2
  255. data/doc/TaskJuggler/XMLDocument.html +26 -2
  256. data/doc/TaskJuggler/XMLElement.html +26 -2
  257. data/doc/TaskJuggler/XMLNamedText.html +26 -2
  258. data/doc/TaskJuggler/XMLText.html +26 -2
  259. data/doc/TaskJuggler.html +486 -427
  260. data/doc/index.html +801 -659
  261. data/doc/lib/taskjuggler/AccountScenario_rb.html +1 -1
  262. data/doc/lib/taskjuggler/Account_rb.html +1 -1
  263. data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +1 -1
  264. data/doc/lib/taskjuggler/Allocation_rb.html +1 -1
  265. data/doc/lib/taskjuggler/AppConfig_rb.html +1 -1
  266. data/doc/lib/taskjuggler/AttributeBase_rb.html +1 -1
  267. data/doc/lib/taskjuggler/AttributeDefinition_rb.html +1 -1
  268. data/doc/lib/taskjuggler/Attributes_rb.html +1 -1
  269. data/doc/lib/taskjuggler/BatchProcessor_rb.html +1 -1
  270. data/doc/lib/taskjuggler/Booking_rb.html +1 -1
  271. data/doc/lib/taskjuggler/ChargeSet_rb.html +1 -1
  272. data/doc/lib/taskjuggler/Charge_rb.html +1 -1
  273. data/doc/lib/taskjuggler/DataCache_rb.html +1 -1
  274. data/doc/lib/taskjuggler/FileList_rb.html +1 -1
  275. data/doc/lib/taskjuggler/HTMLDocument_rb.html +1 -1
  276. data/doc/lib/{ruby-signal-bug_rb.html → taskjuggler/HTMLElements_rb.html} +9 -9
  277. data/doc/lib/{exchangebug_rb.html → taskjuggler/ICalendar_rb.html} +9 -9
  278. data/doc/lib/taskjuggler/IntervalList_rb.html +1 -1
  279. data/doc/lib/taskjuggler/Interval_rb.html +1 -1
  280. data/doc/lib/taskjuggler/Journal_rb.html +1 -1
  281. data/doc/lib/taskjuggler/KeywordArray_rb.html +1 -1
  282. data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +1 -1
  283. data/doc/lib/taskjuggler/Limits_rb.html +1 -1
  284. data/doc/lib/taskjuggler/LogFile_rb.html +1 -1
  285. data/doc/lib/taskjuggler/Log_rb.html +1 -1
  286. data/doc/lib/taskjuggler/LogicalExpression_rb.html +1 -1
  287. data/doc/lib/taskjuggler/LogicalFunction_rb.html +1 -1
  288. data/doc/lib/taskjuggler/LogicalOperation_rb.html +1 -1
  289. data/doc/lib/taskjuggler/MessageHandler_rb.html +1 -1
  290. data/doc/lib/taskjuggler/ProjectFileParser_rb.html +1 -1
  291. data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +1 -1
  292. data/doc/lib/taskjuggler/Project_rb.html +1 -1
  293. data/doc/lib/taskjuggler/PropertyList_rb.html +1 -1
  294. data/doc/lib/taskjuggler/PropertySet_rb.html +1 -1
  295. data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +1 -1
  296. data/doc/lib/taskjuggler/Query_rb.html +1 -1
  297. data/doc/lib/taskjuggler/RealFormat_rb.html +1 -1
  298. data/doc/lib/taskjuggler/ResourceScenario_rb.html +1 -1
  299. data/doc/lib/taskjuggler/Resource_rb.html +1 -1
  300. data/doc/lib/taskjuggler/RichText/Document_rb.html +1 -1
  301. data/doc/lib/taskjuggler/RichText/Element_rb.html +1 -1
  302. data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +1 -1
  303. data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +1 -1
  304. data/doc/lib/taskjuggler/RichText/Parser_rb.html +1 -1
  305. data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +1 -1
  306. data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +1 -1
  307. data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +1 -1
  308. data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +1 -1
  309. data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +1 -1
  310. data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +1 -1
  311. data/doc/lib/taskjuggler/RichText/Scanner_rb.html +1 -1
  312. data/doc/lib/taskjuggler/RichText/Snip_rb.html +1 -1
  313. data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +1 -1
  314. data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +1 -1
  315. data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +1 -1
  316. data/doc/lib/taskjuggler/RichText_rb.html +1 -1
  317. data/doc/lib/taskjuggler/RuntimeConfig_rb.html +1 -1
  318. data/doc/lib/taskjuggler/ScenarioData_rb.html +1 -1
  319. data/doc/lib/taskjuggler/Scenario_rb.html +1 -1
  320. data/doc/lib/taskjuggler/Scoreboard_rb.html +1 -1
  321. data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +1 -1
  322. data/doc/lib/taskjuggler/SheetReceiver_rb.html +1 -1
  323. data/doc/lib/taskjuggler/SheetSender_rb.html +1 -1
  324. data/doc/lib/taskjuggler/ShiftAssignments_rb.html +1 -1
  325. data/doc/lib/taskjuggler/ShiftScenario_rb.html +1 -1
  326. data/doc/lib/taskjuggler/Shift_rb.html +1 -1
  327. data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +1 -1
  328. data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +1 -1
  329. data/doc/lib/taskjuggler/StatusSheetSender_rb.html +1 -1
  330. data/doc/lib/taskjuggler/StdIoWrapper_rb.html +1 -1
  331. data/doc/lib/taskjuggler/SyntaxReference_rb.html +1 -1
  332. data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +1 -1
  333. data/doc/lib/taskjuggler/TaskDependency_rb.html +1 -1
  334. data/doc/lib/taskjuggler/TaskJuggler_rb.html +1 -1
  335. data/doc/lib/taskjuggler/TaskScenario_rb.html +1 -1
  336. data/doc/lib/taskjuggler/Task_rb.html +1 -1
  337. data/doc/lib/taskjuggler/TernarySearchTree_rb.html +1 -1
  338. data/doc/lib/taskjuggler/TextFormatter_rb.html +1 -1
  339. data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +1 -1
  340. data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +1 -1
  341. data/doc/lib/taskjuggler/TextParser/Rule_rb.html +1 -1
  342. data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +1 -1
  343. data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +1 -1
  344. data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +1 -1
  345. data/doc/lib/taskjuggler/TextParser/State_rb.html +1 -1
  346. data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +1 -1
  347. data/doc/lib/taskjuggler/TextParser_rb.html +1 -1
  348. data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +1 -1
  349. data/doc/lib/taskjuggler/TimeSheetSender_rb.html +1 -1
  350. data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +1 -1
  351. data/doc/lib/taskjuggler/TimeSheets_rb.html +1 -1
  352. data/doc/lib/taskjuggler/Tj3AppBase_rb.html +1 -1
  353. data/doc/lib/taskjuggler/Tj3Config_rb.html +1 -1
  354. data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +1 -1
  355. data/doc/lib/taskjuggler/TjException_rb.html +1 -1
  356. data/doc/lib/taskjuggler/TjTime_rb.html +1 -1
  357. data/doc/lib/taskjuggler/TjpExample_rb.html +1 -1
  358. data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +1 -1
  359. data/doc/lib/taskjuggler/URLParameter_rb.html +1 -1
  360. data/doc/lib/taskjuggler/UTF8String_rb.html +1 -1
  361. data/doc/lib/taskjuggler/UserManual_rb.html +1 -1
  362. data/doc/lib/taskjuggler/VimSyntax_rb.html +1 -1
  363. data/doc/lib/taskjuggler/WorkingHours_rb.html +1 -1
  364. data/doc/lib/taskjuggler/XMLDocument_rb.html +1 -1
  365. data/doc/lib/taskjuggler/XMLElement_rb.html +1 -1
  366. data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +1 -1
  367. data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +1 -1
  368. data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +1 -1
  369. data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +1 -1
  370. data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +1 -1
  371. data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +1 -1
  372. data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +1 -1
  373. data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +1 -1
  374. data/doc/lib/taskjuggler/apps/Tj3_rb.html +1 -1
  375. data/doc/lib/taskjuggler/daemon/Daemon_rb.html +1 -1
  376. data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +1 -1
  377. data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +1 -1
  378. data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +1 -1
  379. data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +1 -1
  380. data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +1 -1
  381. data/doc/lib/taskjuggler/daemon/WebServer_rb.html +1 -1
  382. data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +1 -1
  383. data/doc/lib/taskjuggler/deep_copy_rb.html +1 -1
  384. data/doc/lib/taskjuggler/reports/CSVFile_rb.html +1 -1
  385. data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +1 -1
  386. data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +1 -1
  387. data/doc/lib/taskjuggler/reports/GanttChart_rb.html +1 -1
  388. data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +1 -1
  389. data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +1 -1
  390. data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +1 -1
  391. data/doc/lib/taskjuggler/reports/GanttLine_rb.html +1 -1
  392. data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +1 -1
  393. data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +1 -1
  394. data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +1 -1
  395. data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +1 -1
  396. data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +1 -1
  397. data/doc/lib/taskjuggler/reports/ICalReport_rb.html +71 -0
  398. data/doc/lib/taskjuggler/reports/Navigator_rb.html +1 -1
  399. data/doc/lib/taskjuggler/reports/NikuReport_rb.html +1 -1
  400. data/doc/lib/taskjuggler/reports/ReportBase_rb.html +1 -1
  401. data/doc/lib/taskjuggler/reports/ReportContext_rb.html +1 -1
  402. data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +1 -1
  403. data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +1 -1
  404. data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +1 -1
  405. data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +1 -1
  406. data/doc/lib/taskjuggler/reports/ReportTable_rb.html +1 -1
  407. data/doc/lib/taskjuggler/reports/Report_rb.html +5 -1
  408. data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +1 -1
  409. data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +1 -1
  410. data/doc/lib/taskjuggler/reports/TableReport_rb.html +1 -1
  411. data/doc/lib/taskjuggler/reports/TagFile_rb.html +71 -0
  412. data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +1 -1
  413. data/doc/lib/taskjuggler/reports/TextReport_rb.html +1 -1
  414. data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +1 -1
  415. data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +1 -1
  416. data/doc/lib/tj3_rb.html +1 -1
  417. data/doc/lib/tj3client_rb.html +1 -1
  418. data/doc/lib/tj3d_rb.html +1 -1
  419. data/doc/lib/tj3man_rb.html +1 -1
  420. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  421. data/doc/lib/tj3ss_sender_rb.html +1 -1
  422. data/doc/lib/tj3ts_receiver_rb.html +1 -1
  423. data/doc/lib/tj3ts_sender_rb.html +1 -1
  424. data/doc/lib/tj3ts_summary_rb.html +1 -1
  425. data/lib/taskjuggler/Account.rb +1 -1
  426. data/lib/taskjuggler/AccountScenario.rb +1 -1
  427. data/lib/taskjuggler/Allocation.rb +5 -5
  428. data/lib/taskjuggler/AttributeBase.rb +30 -22
  429. data/lib/taskjuggler/Attributes.rb +80 -78
  430. data/lib/taskjuggler/Booking.rb +2 -2
  431. data/lib/taskjuggler/Charge.rb +3 -3
  432. data/lib/taskjuggler/ICalendar.rb +251 -0
  433. data/lib/taskjuggler/Interval.rb +215 -53
  434. data/lib/taskjuggler/IntervalList.rb +5 -5
  435. data/lib/taskjuggler/Limits.rb +79 -69
  436. data/lib/taskjuggler/LogicalFunction.rb +2 -2
  437. data/lib/taskjuggler/MessageHandler.rb +11 -6
  438. data/lib/taskjuggler/Project.rb +208 -95
  439. data/lib/taskjuggler/ProjectFileParser.rb +2 -2
  440. data/lib/taskjuggler/ProjectFileScanner.rb +7 -6
  441. data/lib/taskjuggler/PropertySet.rb +1 -5
  442. data/lib/taskjuggler/PropertyTreeNode.rb +21 -16
  443. data/lib/taskjuggler/Query.rb +10 -7
  444. data/lib/taskjuggler/Resource.rb +6 -1
  445. data/lib/taskjuggler/ResourceScenario.rb +85 -69
  446. data/lib/taskjuggler/RichText/RTFQuery.rb +2 -2
  447. data/lib/taskjuggler/ScenarioData.rb +11 -1
  448. data/lib/taskjuggler/Scoreboard.rb +8 -1
  449. data/lib/taskjuggler/Shift.rb +1 -1
  450. data/lib/taskjuggler/ShiftAssignments.rb +22 -20
  451. data/lib/taskjuggler/Task.rb +1 -1
  452. data/lib/taskjuggler/TaskJuggler.rb +65 -51
  453. data/lib/taskjuggler/TaskScenario.rb +486 -419
  454. data/lib/taskjuggler/TextParser/Scanner.rb +22 -11
  455. data/lib/taskjuggler/TimeSheets.rb +1 -1
  456. data/lib/taskjuggler/Tj3Config.rb +1 -1
  457. data/lib/taskjuggler/TjTime.rb +7 -3
  458. data/lib/taskjuggler/TjpSyntaxRules.rb +157 -23
  459. data/lib/taskjuggler/VimSyntax.rb +18 -0
  460. data/lib/taskjuggler/WorkingHours.rb +20 -4
  461. data/lib/taskjuggler/apps/Tj3.rb +16 -1
  462. data/lib/taskjuggler/reports/GanttLine.rb +1 -1
  463. data/lib/taskjuggler/reports/ICalReport.rb +136 -0
  464. data/lib/taskjuggler/reports/NikuReport.rb +1 -1
  465. data/lib/taskjuggler/reports/Report.rb +59 -0
  466. data/lib/taskjuggler/reports/ReportBase.rb +2 -67
  467. data/lib/taskjuggler/reports/TableReport.rb +9 -8
  468. data/lib/taskjuggler/reports/TagFile.rb +120 -0
  469. data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -3
  470. data/lib/taskjuggler/reports/TjpExportRE.rb +33 -9
  471. data/manual/Installation +126 -0
  472. data/spec/ICalendar_spec.rb +45 -0
  473. data/spec/IntervalList_spec.rb +11 -11
  474. data/tasks/changelog.rake +150 -60
  475. data/tasks/gem.rake +1 -0
  476. data/tasks/vim.rake +2 -2
  477. data/test/TestSuite/Export-Reports/refs/Booking.tjp +1 -1
  478. data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
  479. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +10 -1
  480. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +1 -1
  481. data/test/TestSuite/HTML-Reports/Alerts.html +160 -412
  482. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  483. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  484. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  485. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  486. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  487. data/test/TestSuite/HTML-Reports/css/tjmanual.css +0 -20
  488. data/test/TestSuite/HTML-Reports/css/tjreport.css +6 -7
  489. data/test/TestSuite/HTML-Reports/depArrows.html +851 -0
  490. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  491. data/test/TestSuite/{Scheduler/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
  492. data/test/TestSuite/Scheduler/Correct/Booking.tjp +3 -3
  493. data/test/TestSuite/Scheduler/Correct/Duration.tjp +3 -3
  494. data/test/TestSuite/Scheduler/Errors/R.html +113 -0
  495. data/test/TestSuite/Scheduler/Errors/allocate_no_assigned.tjp +15 -0
  496. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjmanual.css +0 -1
  497. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjreport.css +0 -0
  498. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/details.png +0 -0
  499. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-green.png +0 -0
  500. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-red.png +0 -0
  501. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-yellow.png +0 -0
  502. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resource.png +0 -0
  503. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resourcegroup.png +0 -0
  504. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/task.png +0 -0
  505. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/taskgroup.png +0 -0
  506. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-down.png +0 -0
  507. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-flat.png +0 -0
  508. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-up.png +0 -0
  509. data/test/TestSuite/Scheduler/Errors/overbooked_duration.tjp +11 -0
  510. data/test/TestSuite/Scheduler/Errors/overbooked_effort.tjp +11 -0
  511. data/test/TestSuite/Scheduler/Errors/overbooked_length.tjp +13 -0
  512. data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/scripts/wz_tooltip.js +0 -0
  513. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  514. data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
  515. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +5 -2
  516. data/test/TestSuite/Syntax/Errors/scenario_after_tracking.tjp +8 -0
  517. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  518. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  519. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  520. data/test/test_Limits.rb +38 -30
  521. data/test/test_Scheduler.rb +2 -2
  522. data/test/test_ShiftAssignments.rb +8 -8
  523. data/test/test_WorkingHours.rb +4 -4
  524. metadata +1015 -1005
  525. data/lib/exchangebug.rb +0 -42
  526. data/lib/ruby-signal-bug.rb +0 -55
  527. data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -60
  528. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -80
  529. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  530. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  531. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.csv +0 -412
  532. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -680
  533. data/test/TestSuite/ReportGenerator/Correct/DependencyList.csv +0 -4
  534. data/test/TestSuite/ReportGenerator/Correct/DependencyList.tjp +0 -25
  535. data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -8
  536. data/test/TestSuite/ReportGenerator/Correct/Journal-2.csv +0 -8
  537. data/test/TestSuite/ReportGenerator/Correct/Journal-3.html +0 -28
  538. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  539. data/test/TestSuite/ReportGenerator/Correct/opennodes-1.csv +0 -2
  540. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  541. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  542. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  543. data/test/TestSuite/Scheduler/' +0 -23
  544. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -86
  545. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +0 -413
  546. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  547. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  548. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  549. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  550. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  551. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  552. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  553. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  554. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  555. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  556. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  557. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  558. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  559. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
  560. data/test/TestSuite/Syntax/Correct/DST.tjp +0 -11
  561. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
  562. data/test/TestSuite/TimeSheets/receiver.log.mod +0 -1056
  563. data/test/TestSuite/TimeSheets/uu.txt +0 -29
@@ -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>