taskjuggler 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. data/CHANGELOG +119 -0
  2. data/benchmarks/allocatedSlots.tjp +1602 -0
  3. data/benchmarks/booking.tjp +40 -30
  4. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/css/tjmanual.css +0 -0
  5. data/{test/TestSuite/Scheduler/Correct → benchmarks}/css/tjreport.css +1 -0
  6. data/benchmarks/gantt.tjp +57 -0
  7. data/benchmarks/htmltaskreport.tjp +26 -1
  8. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/details.png +0 -0
  9. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-green.png +0 -0
  10. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-red.png +0 -0
  11. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-yellow.png +0 -0
  12. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resource.png +0 -0
  13. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resourcegroup.png +0 -0
  14. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/task.png +0 -0
  15. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/taskgroup.png +0 -0
  16. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-down.png +0 -0
  17. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-flat.png +0 -0
  18. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-up.png +0 -0
  19. data/benchmarks/profile.clt +36082 -0
  20. data/benchmarks/profile.html +58182 -0
  21. data/benchmarks/runbench.rb +6 -0
  22. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/scripts/wz_tooltip.js +0 -0
  23. data/doc/AppConfig.html +85 -37
  24. data/doc/Arguments.html +11 -1
  25. data/doc/CHANGELOG.html +131 -2
  26. data/doc/COPYING.html +11 -1
  27. data/doc/Object.html +12 -3
  28. data/doc/README.html +11 -1
  29. data/doc/RuntimeConfig.html +11 -1
  30. data/doc/String.html +11 -1
  31. data/doc/StringIO.html +11 -1
  32. data/doc/TaskJuggler.html +250 -219
  33. data/doc/TaskJuggler/Account.html +11 -1
  34. data/doc/TaskJuggler/AccountAttribute.html +11 -1
  35. data/doc/TaskJuggler/AccountScenario.html +11 -1
  36. data/doc/TaskJuggler/Allocation.html +11 -1
  37. data/doc/TaskJuggler/AllocationAttribute.html +11 -1
  38. data/doc/TaskJuggler/AttributeBase.html +11 -1
  39. data/doc/TaskJuggler/AttributeDefinition.html +11 -1
  40. data/doc/TaskJuggler/BatchProcessor.html +11 -1
  41. data/doc/TaskJuggler/Booking.html +11 -1
  42. data/doc/TaskJuggler/BookingListAttribute.html +11 -1
  43. data/doc/TaskJuggler/BooleanAttribute.html +11 -1
  44. data/doc/TaskJuggler/CSVFile.html +12 -2
  45. data/doc/TaskJuggler/CellSettingPattern.html +11 -1
  46. data/doc/TaskJuggler/CellSettingPatternList.html +11 -1
  47. data/doc/TaskJuggler/Charge.html +11 -1
  48. data/doc/TaskJuggler/ChargeListAttribute.html +11 -1
  49. data/doc/TaskJuggler/ChargeSet.html +11 -1
  50. data/doc/TaskJuggler/ChargeSetListAttribute.html +11 -1
  51. data/doc/TaskJuggler/CollisionDetector.html +1063 -0
  52. data/doc/TaskJuggler/ColumnListAttribute.html +11 -1
  53. data/doc/TaskJuggler/ColumnTable.html +11 -1
  54. data/doc/TaskJuggler/Daemon.html +11 -1
  55. data/doc/TaskJuggler/{OnShiftCache.html → DataCache.html} +127 -139
  56. data/doc/TaskJuggler/DataCacheEntry.html +711 -0
  57. data/doc/TaskJuggler/DateAttribute.html +11 -1
  58. data/doc/TaskJuggler/DefinitionListAttribute.html +11 -1
  59. data/doc/TaskJuggler/DependencyListAttribute.html +11 -1
  60. data/doc/TaskJuggler/DurationAttribute.html +16 -5
  61. data/doc/TaskJuggler/FileList.html +11 -1
  62. data/doc/TaskJuggler/FileRecord.html +11 -1
  63. data/doc/TaskJuggler/FixnumAttribute.html +19 -9
  64. data/doc/TaskJuggler/FlagListAttribute.html +29 -19
  65. data/doc/TaskJuggler/FloatAttribute.html +23 -13
  66. data/doc/TaskJuggler/FormatListAttribute.html +19 -9
  67. data/doc/TaskJuggler/GanttChart.html +94 -133
  68. data/doc/TaskJuggler/GanttContainer.html +11 -1
  69. data/doc/TaskJuggler/GanttHeader.html +11 -1
  70. data/doc/TaskJuggler/GanttHeaderScaleItem.html +11 -1
  71. data/doc/TaskJuggler/GanttLine.html +11 -1
  72. data/doc/TaskJuggler/GanttLoadStack.html +11 -1
  73. data/doc/TaskJuggler/GanttMilestone.html +11 -1
  74. data/doc/TaskJuggler/GanttRouter.html +247 -596
  75. data/doc/TaskJuggler/GanttTaskBar.html +11 -1
  76. data/doc/TaskJuggler/HTMLDocument.html +11 -1
  77. data/doc/TaskJuggler/HTMLGraphics.html +11 -1
  78. data/doc/TaskJuggler/Interval.html +11 -1
  79. data/doc/TaskJuggler/IntervalListAttribute.html +33 -23
  80. data/doc/TaskJuggler/JobInfo.html +11 -1
  81. data/doc/TaskJuggler/Journal.html +11 -1
  82. data/doc/TaskJuggler/JournalEntry.html +11 -1
  83. data/doc/TaskJuggler/JournalEntryList.html +11 -1
  84. data/doc/TaskJuggler/KeywordArray.html +11 -1
  85. data/doc/TaskJuggler/KeywordDocumentation.html +16 -6
  86. data/doc/TaskJuggler/Limits.html +11 -1
  87. data/doc/TaskJuggler/Limits/Limit.html +11 -1
  88. data/doc/TaskJuggler/LimitsAttribute.html +24 -14
  89. data/doc/TaskJuggler/ListAttributeBase.html +11 -1
  90. data/doc/TaskJuggler/Log.html +11 -1
  91. data/doc/TaskJuggler/LogFile.html +11 -1
  92. data/doc/TaskJuggler/LogicalAttribute.html +11 -1
  93. data/doc/TaskJuggler/LogicalExpression.html +11 -1
  94. data/doc/TaskJuggler/LogicalExpressionAttribute.html +19 -9
  95. data/doc/TaskJuggler/LogicalFlag.html +11 -1
  96. data/doc/TaskJuggler/LogicalFunction.html +11 -1
  97. data/doc/TaskJuggler/LogicalOperation.html +11 -1
  98. data/doc/TaskJuggler/Macro.html +11 -1
  99. data/doc/TaskJuggler/MacroTable.html +11 -1
  100. data/doc/TaskJuggler/ManagerResponsibilities.html +11 -1
  101. data/doc/TaskJuggler/ManagerStatusRecord.html +11 -1
  102. data/doc/TaskJuggler/Message.html +11 -1
  103. data/doc/TaskJuggler/MessageHandler.html +11 -1
  104. data/doc/TaskJuggler/Navigator.html +12 -2
  105. data/doc/TaskJuggler/NavigatorElement.html +11 -1
  106. data/doc/TaskJuggler/NikuProject.html +11 -1
  107. data/doc/TaskJuggler/NikuReport.html +11 -1
  108. data/doc/TaskJuggler/NikuResource.html +11 -1
  109. data/doc/TaskJuggler/NodeListAttribute.html +17 -7
  110. data/doc/TaskJuggler/PlaceHolderCell.html +722 -0
  111. data/doc/TaskJuggler/ProcessIntercom.html +11 -1
  112. data/doc/TaskJuggler/ProcessIntercomIface.html +11 -1
  113. data/doc/TaskJuggler/Project.html +587 -500
  114. data/doc/TaskJuggler/ProjectBroker.html +11 -1
  115. data/doc/TaskJuggler/ProjectBrokerIface.html +11 -1
  116. data/doc/TaskJuggler/ProjectFileParser.html +205 -192
  117. data/doc/TaskJuggler/ProjectFileScanner.html +230 -207
  118. data/doc/TaskJuggler/ProjectRecord.html +11 -1
  119. data/doc/TaskJuggler/ProjectServer.html +11 -1
  120. data/doc/TaskJuggler/ProjectServerIface.html +11 -1
  121. data/doc/TaskJuggler/PropertyAttribute.html +19 -9
  122. data/doc/TaskJuggler/PropertyList.html +95 -83
  123. data/doc/TaskJuggler/PropertySet.html +11 -1
  124. data/doc/TaskJuggler/PropertyTreeNode.html +11 -1
  125. data/doc/TaskJuggler/Query.html +234 -232
  126. data/doc/TaskJuggler/RTFHandlers.html +11 -1
  127. data/doc/TaskJuggler/RTFNavigator.html +11 -1
  128. data/doc/TaskJuggler/RTFQuery.html +11 -1
  129. data/doc/TaskJuggler/RTFReport.html +11 -1
  130. data/doc/TaskJuggler/RTFReportLink.html +11 -1
  131. data/doc/TaskJuggler/RTFWithQuerySupport.html +11 -1
  132. data/doc/TaskJuggler/RealFormat.html +12 -2
  133. data/doc/TaskJuggler/RealFormatAttribute.html +15 -5
  134. data/doc/TaskJuggler/ReferenceAttribute.html +38 -28
  135. data/doc/TaskJuggler/Report.html +96 -113
  136. data/doc/TaskJuggler/ReportBase.html +161 -152
  137. data/doc/TaskJuggler/ReportContext.html +11 -1
  138. data/doc/TaskJuggler/ReportServer.html +59 -48
  139. data/doc/TaskJuggler/ReportServerIface.html +51 -41
  140. data/doc/TaskJuggler/ReportServerRecord.html +11 -1
  141. data/doc/TaskJuggler/ReportServlet.html +11 -1
  142. data/doc/TaskJuggler/ReportTable.html +46 -25
  143. data/doc/TaskJuggler/ReportTableCell.html +296 -275
  144. data/doc/TaskJuggler/ReportTableColumn.html +14 -4
  145. data/doc/TaskJuggler/ReportTableLegend.html +11 -1
  146. data/doc/TaskJuggler/ReportTableLine.html +19 -7
  147. data/doc/TaskJuggler/Resource.html +12 -2
  148. data/doc/TaskJuggler/ResourceListAttribute.html +40 -30
  149. data/doc/TaskJuggler/ResourceListRE.html +11 -1
  150. data/doc/TaskJuggler/ResourceScenario.html +708 -565
  151. data/doc/TaskJuggler/RichText.html +54 -36
  152. data/doc/TaskJuggler/RichTextAttribute.html +31 -21
  153. data/doc/TaskJuggler/RichTextDocument.html +11 -1
  154. data/doc/TaskJuggler/RichTextElement.html +11 -1
  155. data/doc/TaskJuggler/RichTextFunctionExample.html +11 -1
  156. data/doc/TaskJuggler/RichTextFunctionHandler.html +11 -1
  157. data/doc/TaskJuggler/RichTextImage.html +11 -1
  158. data/doc/TaskJuggler/RichTextIntermediate.html +81 -71
  159. data/doc/TaskJuggler/RichTextParser.html +88 -33
  160. data/doc/TaskJuggler/RichTextScanner.html +45 -35
  161. data/doc/TaskJuggler/RichTextSnip.html +11 -1
  162. data/doc/TaskJuggler/RichTextSyntaxRules.html +436 -389
  163. data/doc/TaskJuggler/Scenario.html +11 -1
  164. data/doc/TaskJuggler/ScenarioData.html +11 -1
  165. data/doc/TaskJuggler/ScenarioListAttribute.html +23 -13
  166. data/doc/TaskJuggler/Scoreboard.html +92 -73
  167. data/doc/TaskJuggler/SheetHandlerBase.html +11 -1
  168. data/doc/TaskJuggler/SheetReceiver.html +11 -1
  169. data/doc/TaskJuggler/SheetSender.html +11 -1
  170. data/doc/TaskJuggler/Shift.html +11 -1
  171. data/doc/TaskJuggler/ShiftAssignment.html +11 -1
  172. data/doc/TaskJuggler/ShiftAssignments.html +11 -1
  173. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +24 -14
  174. data/doc/TaskJuggler/ShiftScenario.html +11 -1
  175. data/doc/TaskJuggler/SimpleQueryExpander.html +11 -1
  176. data/doc/TaskJuggler/SortListAttribute.html +21 -11
  177. data/doc/TaskJuggler/SourceFileInfo.html +11 -1
  178. data/doc/TaskJuggler/StatusSheetReceiver.html +11 -1
  179. data/doc/TaskJuggler/StatusSheetReport.html +11 -1
  180. data/doc/TaskJuggler/StatusSheetSender.html +112 -11
  181. data/doc/TaskJuggler/StringAttribute.html +23 -13
  182. data/doc/TaskJuggler/SymbolAttribute.html +19 -9
  183. data/doc/TaskJuggler/SyntaxReference.html +80 -71
  184. data/doc/TaskJuggler/TOCEntry.html +11 -1
  185. data/doc/TaskJuggler/TSResourceRecord.html +11 -1
  186. data/doc/TaskJuggler/TSTaskRecord.html +11 -1
  187. data/doc/TaskJuggler/TableColumnDefinition.html +11 -1
  188. data/doc/TaskJuggler/TableOfContents.html +11 -1
  189. data/doc/TaskJuggler/TableReport.html +422 -411
  190. data/doc/TaskJuggler/Task.html +11 -1
  191. data/doc/TaskJuggler/TaskDependency.html +11 -1
  192. data/doc/TaskJuggler/TaskListAttribute.html +33 -23
  193. data/doc/TaskJuggler/TaskListRE.html +11 -1
  194. data/doc/TaskJuggler/TaskScenario.html +2007 -1919
  195. data/doc/TaskJuggler/TextFormatter.html +11 -1
  196. data/doc/TaskJuggler/TextParser.html +421 -612
  197. data/doc/TaskJuggler/TextParser/Pattern.html +410 -211
  198. data/doc/TaskJuggler/TextParser/Rule.html +224 -152
  199. data/doc/TaskJuggler/TextParser/StackElement.html +190 -28
  200. data/doc/TaskJuggler/TextParser/State.html +989 -0
  201. data/doc/TaskJuggler/TextParser/StateTransition.html +782 -0
  202. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +25 -14
  203. data/doc/TaskJuggler/TextParser/TokenDoc.html +11 -1
  204. data/doc/TaskJuggler/TextReport.html +11 -1
  205. data/doc/TaskJuggler/TextScanner.html +285 -273
  206. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +17 -7
  207. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +24 -14
  208. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +11 -1
  209. data/doc/TaskJuggler/TextScanner/StreamHandle.html +64 -52
  210. data/doc/TaskJuggler/TimeSheet.html +11 -1
  211. data/doc/TaskJuggler/TimeSheetReceiver.html +11 -1
  212. data/doc/TaskJuggler/TimeSheetRecord.html +11 -1
  213. data/doc/TaskJuggler/TimeSheetReport.html +11 -1
  214. data/doc/TaskJuggler/TimeSheetSender.html +11 -1
  215. data/doc/TaskJuggler/TimeSheetSummary.html +11 -1
  216. data/doc/TaskJuggler/TimeSheets.html +11 -1
  217. data/doc/TaskJuggler/Tj3AppBase.html +11 -1
  218. data/doc/TaskJuggler/Tj3Client.html +11 -1
  219. data/doc/TaskJuggler/Tj3Daemon.html +11 -1
  220. data/doc/TaskJuggler/Tj3SheetAppBase.html +11 -1
  221. data/doc/TaskJuggler/Tj3SsReceiver.html +11 -1
  222. data/doc/TaskJuggler/Tj3SsSender.html +11 -1
  223. data/doc/TaskJuggler/Tj3TsReceiver.html +11 -1
  224. data/doc/TaskJuggler/Tj3TsSender.html +11 -1
  225. data/doc/TaskJuggler/Tj3TsSummary.html +11 -1
  226. data/doc/TaskJuggler/TjException.html +11 -1
  227. data/doc/TaskJuggler/TjTime.html +474 -324
  228. data/doc/TaskJuggler/TjpExample.html +11 -1
  229. data/doc/TaskJuggler/TjpExportRE.html +11 -1
  230. data/doc/TaskJuggler/TjpSyntaxRules.html +3731 -3662
  231. data/doc/TaskJuggler/URLParameter.html +11 -1
  232. data/doc/TaskJuggler/UserManual.html +11 -1
  233. data/doc/TaskJuggler/VimSyntax.html +11 -1
  234. data/doc/TaskJuggler/WebServer.html +11 -1
  235. data/doc/TaskJuggler/WorkingHours.html +295 -221
  236. data/doc/TaskJuggler/WorkingHoursAttribute.html +11 -1
  237. data/doc/TaskJuggler/XMLBlob.html +11 -1
  238. data/doc/TaskJuggler/XMLComment.html +11 -1
  239. data/doc/TaskJuggler/XMLDocument.html +11 -1
  240. data/doc/TaskJuggler/XMLElement.html +11 -1
  241. data/doc/TaskJuggler/XMLNamedText.html +11 -1
  242. data/doc/TaskJuggler/XMLText.html +11 -1
  243. data/doc/index.html +694 -624
  244. data/doc/lib/AppConfig_rb.html +1 -1
  245. data/doc/lib/Attributes_rb.html +1 -1
  246. data/doc/lib/Booking_rb.html +1 -1
  247. data/doc/lib/DataCache_rb.html +69 -0
  248. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  249. data/doc/lib/ProjectFileParser_rb.html +1 -1
  250. data/doc/lib/ProjectFileScanner_rb.html +1 -1
  251. data/doc/lib/Project_rb.html +1 -1
  252. data/doc/lib/PropertyList_rb.html +1 -1
  253. data/doc/lib/Query_rb.html +1 -1
  254. data/doc/lib/RealFormat_rb.html +1 -1
  255. data/doc/lib/ResourceScenario_rb.html +1 -1
  256. data/doc/lib/Resource_rb.html +1 -1
  257. data/doc/lib/RichTextParser_rb.html +1 -1
  258. data/doc/lib/RichTextScanner_rb.html +1 -1
  259. data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
  260. data/doc/lib/RichText_rb.html +1 -1
  261. data/doc/lib/Scoreboard_rb.html +1 -1
  262. data/doc/lib/StatusSheetSender_rb.html +1 -1
  263. data/doc/lib/SyntaxReference_rb.html +1 -1
  264. data/doc/lib/TaskJuggler_rb.html +1 -1
  265. data/doc/lib/TaskScenario_rb.html +3 -1
  266. data/doc/lib/TextParser/Pattern_rb.html +3 -1
  267. data/doc/lib/TextParser/Rule_rb.html +3 -1
  268. data/doc/lib/TextParser/StackElement_rb.html +3 -1
  269. data/doc/lib/TextParser/State_rb.html +65 -0
  270. data/doc/lib/TextParser_rb.html +1 -1
  271. data/doc/lib/TextScanner_rb.html +1 -1
  272. data/doc/lib/Tj3Config_rb.html +1 -1
  273. data/doc/lib/TjTime_rb.html +1 -1
  274. data/doc/lib/TjpSyntaxRules_rb.html +1 -1
  275. data/doc/lib/WorkingHours_rb.html +3 -1
  276. data/doc/lib/daemon/ReportServer_rb.html +1 -1
  277. data/doc/lib/reports/CSVFile_rb.html +1 -1
  278. data/doc/lib/reports/CollisionDetector_rb.html +67 -0
  279. data/doc/lib/reports/GanttChart_rb.html +1 -1
  280. data/doc/lib/reports/GanttRouter_rb.html +3 -1
  281. data/doc/lib/reports/Navigator_rb.html +1 -1
  282. data/doc/lib/reports/ReportBase_rb.html +1 -1
  283. data/doc/lib/reports/ReportTableCell_rb.html +1 -1
  284. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  285. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  286. data/doc/lib/reports/ReportTable_rb.html +1 -1
  287. data/doc/lib/reports/Report_rb.html +1 -1
  288. data/doc/lib/reports/TableReport_rb.html +1 -1
  289. data/doc/lib/taskjuggler3_rb.html +1 -1
  290. data/examples/tutorial.tjp +1 -2
  291. data/lib/AppConfig.rb +10 -4
  292. data/lib/Attributes.rb +4 -4
  293. data/lib/DataCache.rb +124 -0
  294. data/lib/KeywordDocumentation.rb +5 -5
  295. data/lib/Project.rb +54 -10
  296. data/lib/ProjectFileParser.rb +10 -9
  297. data/lib/ProjectFileScanner.rb +38 -25
  298. data/lib/PropertyList.rb +6 -4
  299. data/lib/Query.rb +0 -8
  300. data/lib/RealFormat.rb +1 -1
  301. data/lib/Resource.rb +1 -1
  302. data/lib/ResourceScenario.rb +96 -31
  303. data/lib/RichText.rb +17 -5
  304. data/lib/RichTextParser.rb +22 -9
  305. data/lib/RichTextScanner.rb +34 -34
  306. data/lib/RichTextSyntaxRules.rb +41 -36
  307. data/lib/Scoreboard.rb +16 -7
  308. data/lib/StatusSheetSender.rb +63 -0
  309. data/lib/SyntaxReference.rb +9 -10
  310. data/lib/TaskJuggler.rb +28 -4
  311. data/lib/TaskScenario.rb +66 -19
  312. data/lib/TextParser.rb +219 -384
  313. data/lib/TextParser/Pattern.rb +168 -49
  314. data/lib/TextParser/Rule.rb +33 -17
  315. data/lib/TextParser/StackElement.rb +42 -2
  316. data/lib/TextParser/State.rb +175 -0
  317. data/lib/TextScanner.rb +19 -15
  318. data/lib/Tj3Config.rb +1 -1
  319. data/lib/TjTime.rb +111 -3
  320. data/lib/TjpSyntaxRules.rb +122 -66
  321. data/lib/WorkingHours.rb +91 -186
  322. data/lib/daemon/ReportServer.rb +3 -2
  323. data/lib/reports/CSVFile.rb +1 -1
  324. data/lib/reports/CollisionDetector.rb +177 -0
  325. data/lib/reports/GanttChart.rb +25 -41
  326. data/lib/reports/GanttRouter.rb +104 -233
  327. data/lib/reports/Navigator.rb +1 -1
  328. data/lib/reports/Report.rb +9 -33
  329. data/lib/reports/ReportBase.rb +0 -1
  330. data/lib/reports/ReportTable.rb +19 -8
  331. data/lib/reports/ReportTableCell.rb +61 -25
  332. data/lib/reports/ReportTableColumn.rb +2 -2
  333. data/lib/reports/ReportTableLine.rb +4 -2
  334. data/lib/reports/TableReport.rb +1 -0
  335. data/lib/taskjuggler3.rb +0 -1
  336. data/manual/Installation +7 -3
  337. data/manual/Intro +12 -10
  338. data/manual/The_TaskJuggler_Syntax +4 -4
  339. data/test/TestSuite/CSV-Reports/celltext-Reference.csv +14 -14
  340. data/test/TestSuite/CSV-Reports/genrefs +1 -1
  341. data/test/TestSuite/CSV-Reports/resourcereport-Reference.csv +4 -4
  342. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks-Reference.csv +22 -22
  343. data/test/TestSuite/CSV-Reports/sortByTree-Reference.csv +14 -14
  344. data/test/TestSuite/CSV-Reports/sortBy_duration.down-Reference.csv +14 -14
  345. data/test/TestSuite/CSV-Reports/sortBy_effort.up-Reference.csv +14 -14
  346. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down-Reference.csv +14 -14
  347. data/test/TestSuite/CSV-Reports/taskreport-Reference.csv +14 -14
  348. data/test/TestSuite/CSV-Reports/taskreport_with_resources-Reference.csv +32 -24
  349. data/test/TestSuite/CSV-Reports/weekly-Reference.csv +13 -0
  350. data/test/TestSuite/CSV-Reports/weekly.tjp +9 -0
  351. data/test/TestSuite/HTML-Reports/css/tjreport.css +7 -2
  352. data/test/TestSuite/HTML-Reports/depArrows.html +839 -830
  353. data/test/TestSuite/HTML-Reports/depArrows.tjp +12 -12
  354. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  355. data/test/TestSuite/ReportGenerator/Errors/no_report_defined.tjp +7 -0
  356. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +1 -1
  357. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/missing-reports +2 -0
  358. data/test/TestSuite/StatusSheets/run +2 -0
  359. data/test/TestSuite/Syntax/Correct/Booking.tjp +13 -5
  360. data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +21 -0
  361. data/test/TestSuite/Syntax/Correct/RollupResource.tjp +21 -0
  362. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +1 -1
  363. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  364. data/test/TestSuite/Syntax/Errors/include_before_project.tjp +2 -0
  365. data/test/TestSuite/Syntax/Errors/no_reduce.tjp +6 -0
  366. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  367. data/test/TestSuite/TimeSheets/run +1 -1
  368. data/test/test_CSV-Reports.rb +2 -4
  369. data/test/test_CollisionDetector.rb +85 -0
  370. data/test/test_Project.rb +2 -2
  371. data/test/test_ProjectFileScanner.rb +73 -31
  372. data/test/test_Query.rb +2 -2
  373. data/test/test_ReportGenerator.rb +1 -1
  374. data/test/test_RichText.rb +4 -4
  375. data/test/test_WorkingHours.rb +150 -11
  376. metadata +75 -67
  377. data/test/TestSuite/ReportGenerator/Errors/css/tjreport.css +0 -407
  378. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +0 -26
  379. data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -3210
  380. data/test/TestSuite/Scheduler/Correct/Container.html +0 -349
  381. data/test/TestSuite/Scheduler/Correct/Limits.html +0 -4964
  382. data/test/TestSuite/Scheduler/Correct/Shift.html +0 -1719
  383. data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
  384. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -66
  385. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  386. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  387. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  388. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  389. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  390. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  391. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  392. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  393. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  394. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  395. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  396. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
  397. data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +0 -66
  398. data/test/TestSuite/Scheduler/Errors/css/tjreport.css +0 -407
  399. data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
  400. data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
  401. data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
  402. data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
  403. data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
  404. data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
  405. data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
  406. data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
  407. data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
  408. data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
  409. data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
  410. data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +0 -1301
  411. data/test/TestSuite/StatusSheets/resrep.tji +0 -7
  412. data/test/TestSuite/StatusSheets/tj3d.log +0 -312
  413. data/test/TestSuite/Syntax/Correct/Managers.html +0 -263
  414. data/test/TestSuite/TimeSheets/acceptable_intervals +0 -1
  415. data/test/TestSuite/TimeSheets/statussheets.log +0 -1
@@ -158,12 +158,18 @@
158
158
 
159
159
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
160
160
 
161
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
162
+
161
163
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
162
164
 
163
165
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
164
166
 
165
167
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
166
168
 
169
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
170
+
171
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
172
+
167
173
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
168
174
 
169
175
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -270,7 +276,7 @@
270
276
 
271
277
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
272
278
 
273
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
279
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
274
280
 
275
281
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
276
282
 
@@ -450,6 +456,10 @@
450
456
 
451
457
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
452
458
 
459
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
460
+
461
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
462
+
453
463
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
454
464
 
455
465
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -148,12 +148,18 @@
148
148
 
149
149
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
150
150
 
151
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
152
+
151
153
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
152
154
 
153
155
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
154
156
 
155
157
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
156
158
 
159
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
160
+
161
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
162
+
157
163
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
158
164
 
159
165
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -260,7 +266,7 @@
260
266
 
261
267
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
262
268
 
263
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
269
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
264
270
 
265
271
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
266
272
 
@@ -440,6 +446,10 @@
440
446
 
441
447
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
442
448
 
449
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
450
+
451
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
452
+
443
453
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
444
454
 
445
455
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -89,6 +89,8 @@
89
89
 
90
90
  <li><a href="#method-i-attributeName">#attributeName</a></li>
91
91
 
92
+ <li><a href="#method-i-checkReports">#checkReports</a></li>
93
+
92
94
  <li><a href="#method-i-checkTimeSheets">#checkTimeSheets</a></li>
93
95
 
94
96
  <li><a href="#method-i-convertToDailyLoad">#convertToDailyLoad</a></li>
@@ -227,12 +229,18 @@
227
229
 
228
230
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
229
231
 
232
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
233
+
230
234
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
231
235
 
232
236
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
233
237
 
234
238
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
235
239
 
240
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
241
+
242
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
243
+
236
244
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
237
245
 
238
246
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -339,7 +347,7 @@
339
347
 
340
348
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
341
349
 
342
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
350
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
343
351
 
344
352
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
345
353
 
@@ -519,6 +527,10 @@
519
527
 
520
528
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
521
529
 
530
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
531
+
532
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
533
+
522
534
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
523
535
 
524
536
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -875,24 +887,24 @@ granularity is reduced.
875
887
  <div class="method-source-code"
876
888
  id="max-chedule-ranularity-source">
877
889
  <pre>
878
- <span class="ruby-comment cmt"># File lib/Project.rb, line 806</span>
879
- 806: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
880
- 807: <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>)
881
- 808: <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>)
882
- 809: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
883
- 810: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
884
- 811: <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
885
- 812: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
886
- 813: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
887
- 814: <span class="ruby-value">30</span> * <span class="ruby-value">60</span>
888
- 815: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
889
- 816: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
890
- 817: <span class="ruby-comment cmt"># minutes</span>
891
- 818: <span class="ruby-value">15</span> * <span class="ruby-value">60</span>
892
- 819: <span class="ruby-keyword kw">else</span>
893
- 820: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
894
- 821: <span class="ruby-keyword kw">end</span>
895
- 822: <span class="ruby-keyword kw">end</span></pre>
890
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 847</span>
891
+ 847: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
892
+ 848: <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>)
893
+ 849: <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>)
894
+ 850: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
895
+ 851: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
896
+ 852: <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
897
+ 853: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
898
+ 854: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
899
+ 855: <span class="ruby-value">30</span> * <span class="ruby-value">60</span>
900
+ 856: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
901
+ 857: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
902
+ 858: <span class="ruby-comment cmt"># minutes</span>
903
+ 859: <span class="ruby-value">15</span> * <span class="ruby-value">60</span>
904
+ 860: <span class="ruby-keyword kw">else</span>
905
+ 861: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
906
+ 862: <span class="ruby-keyword kw">end</span>
907
+ 863: <span class="ruby-keyword kw">end</span></pre>
896
908
  </div>
897
909
 
898
910
  </div>
@@ -951,7 +963,7 @@ The constructor will set default values for all project attributes.
951
963
  78: <span class="ruby-value str">'flags'</span> =<span class="ruby-operator">&gt;</span> [],
952
964
  79: <span class="ruby-value str">'journal'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Journal</span>.<span class="ruby-identifier">new</span>,
953
965
  80: <span class="ruby-value str">'limits'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
954
- 81: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">:shortauto</span>,
966
+ 81: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">:days</span>,
955
967
  82: <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>,
956
968
  83: <span class="ruby-value str">'navigators'</span> =<span class="ruby-operator">&gt;</span> {},
957
969
  84: <span class="ruby-value str">'now'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">align</span>(<span class="ruby-value">3600</span>),
@@ -970,7 +982,7 @@ The constructor will set default values for all project attributes.
970
982
  97: <span class="ruby-value str">'vacations'</span> =<span class="ruby-operator">&gt;</span> [],
971
983
  98: <span class="ruby-value str">'version'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">version</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;1.0&quot;</span>,
972
984
  99: <span class="ruby-value str">'weekStartsMonday'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>,
973
- 100: <span class="ruby-value str">'workinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">WorkingHours</span>.<span class="ruby-identifier">new</span>,
985
+ 100: <span class="ruby-value str">'workinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
974
986
  101: <span class="ruby-value str">'yearlyworkingdays'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">260.714</span>
975
987
  102: }
976
988
  103:
@@ -1368,7 +1380,24 @@ to <em>value</em>.
1368
1380
  430: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1369
1381
  431: <span class="ruby-keyword kw">end</span>
1370
1382
  432: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
1371
- 433: <span class="ruby-keyword kw">end</span></pre>
1383
+ 433:
1384
+ 434: <span class="ruby-comment cmt"># If the start, end or schedule granularity have been changed, we have</span>
1385
+ 435: <span class="ruby-comment cmt"># to reset the working hours.</span>
1386
+ 436: <span class="ruby-keyword kw">if</span> <span class="ruby-node">%(start end scheduleGranularity timezone timingresolution)</span>.
1387
+ 437: <span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>)
1388
+ 438: <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>]
1389
+ 439: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>] =
1390
+ 440: <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>],
1391
+ 441: <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>])
1392
+ 442: <span class="ruby-comment cmt"># WorkingHours is using a copy-on-write scheme to prevent multiple</span>
1393
+ 443: <span class="ruby-comment cmt"># copies of the same Scoreboard. All other WorkingHours objects are</span>
1394
+ 444: <span class="ruby-comment cmt"># created as copies of this object. By calling</span>
1395
+ 445: <span class="ruby-comment cmt"># WorkingHours::onShift? we make sure this instance has got a</span>
1396
+ 446: <span class="ruby-comment cmt"># Scoreboard than gets reused by the other instances.</span>
1397
+ 447: <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>])
1398
+ 448: <span class="ruby-keyword kw">end</span>
1399
+ 449: <span class="ruby-keyword kw">end</span>
1400
+ 450: <span class="ruby-keyword kw">end</span></pre>
1372
1401
  </div>
1373
1402
 
1374
1403
  </div>
@@ -1402,10 +1431,10 @@ return nil if it does not exist.
1402
1431
  <div class="method-source-code"
1403
1432
  id="account-source">
1404
1433
  <pre>
1405
- <span class="ruby-comment cmt"># File lib/Project.rb, line 536</span>
1406
- 536: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
1407
- 537: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
1408
- 538: <span class="ruby-keyword kw">end</span></pre>
1434
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 553</span>
1435
+ 553: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
1436
+ 554: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
1437
+ 555: <span class="ruby-keyword kw">end</span></pre>
1409
1438
  </div>
1410
1439
 
1411
1440
  </div>
@@ -1441,11 +1470,11 @@ pound sign.
1441
1470
  <div class="method-source-code"
1442
1471
  id="alert-evel-olor-source">
1443
1472
  <pre>
1444
- <span class="ruby-comment cmt"># File lib/Project.rb, line 468</span>
1445
- 468: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
1446
- 469: <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>]
1447
- 470: <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>]
1448
- 471: <span class="ruby-keyword kw">end</span></pre>
1473
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 485</span>
1474
+ 485: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
1475
+ 486: <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>]
1476
+ 487: <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>]
1477
+ 488: <span class="ruby-keyword kw">end</span></pre>
1449
1478
  </div>
1450
1479
 
1451
1480
  </div>
@@ -1479,11 +1508,11 @@ Return the ID or keyword of the alert level with the given
1479
1508
  <div class="method-source-code"
1480
1509
  id="alert-evel-d-source">
1481
1510
  <pre>
1482
- <span class="ruby-comment cmt"># File lib/Project.rb, line 453</span>
1483
- 453: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
1484
- 454: <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>]
1485
- 455: <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>]
1486
- 456: <span class="ruby-keyword kw">end</span></pre>
1511
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 470</span>
1512
+ 470: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
1513
+ 471: <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>]
1514
+ 472: <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>]
1515
+ 473: <span class="ruby-keyword kw">end</span></pre>
1487
1516
  </div>
1488
1517
 
1489
1518
  </div>
@@ -1517,15 +1546,15 @@ the index of it. If no level is found, nil is returned.
1517
1546
  <div class="method-source-code"
1518
1547
  id="alert-evel-ndex-source">
1519
1548
  <pre>
1520
- <span class="ruby-comment cmt"># File lib/Project.rb, line 442</span>
1521
- 442: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
1522
- 443: <span class="ruby-value">0</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>].<span class="ruby-identifier">length</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>
1523
- 444: <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>
1524
- 445: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
1525
- 446: <span class="ruby-keyword kw">end</span>
1526
- 447: <span class="ruby-keyword kw">end</span>
1527
- 448: <span class="ruby-keyword kw">nil</span>
1528
- 449: <span class="ruby-keyword kw">end</span></pre>
1549
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 459</span>
1550
+ 459: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
1551
+ 460: <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>
1552
+ 461: <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>
1553
+ 462: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
1554
+ 463: <span class="ruby-keyword kw">end</span>
1555
+ 464: <span class="ruby-keyword kw">end</span>
1556
+ 465: <span class="ruby-keyword kw">nil</span>
1557
+ 466: <span class="ruby-keyword kw">end</span></pre>
1529
1558
  </div>
1530
1559
 
1531
1560
  </div>
@@ -1559,11 +1588,11 @@ Return the user readable name of the alert level with the given
1559
1588
  <div class="method-source-code"
1560
1589
  id="alert-evel-ame-source">
1561
1590
  <pre>
1562
- <span class="ruby-comment cmt"># File lib/Project.rb, line 460</span>
1563
- 460: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
1564
- 461: <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>]
1565
- 462: <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>]
1566
- 463: <span class="ruby-keyword kw">end</span></pre>
1591
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 477</span>
1592
+ 477: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
1593
+ 478: <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>]
1594
+ 479: <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>]
1595
+ 480: <span class="ruby-keyword kw">end</span></pre>
1567
1596
  </div>
1568
1597
 
1569
1598
  </div>
@@ -1598,14 +1627,63 @@ tasks over resources here.
1598
1627
  <div class="method-source-code"
1599
1628
  id="attribute-ame-source">
1600
1629
  <pre>
1601
- <span class="ruby-comment cmt"># File lib/Project.rb, line 827</span>
1602
- 827: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
1603
- 828: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
1604
- 829: <span class="ruby-comment cmt"># return it's name.</span>
1605
- 830: (<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>
1606
- 831: (<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>
1607
- 832: <span class="ruby-identifier">name</span>
1608
- 833: <span class="ruby-keyword kw">end</span></pre>
1630
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 868</span>
1631
+ 868: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
1632
+ 869: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
1633
+ 870: <span class="ruby-comment cmt"># return it's name.</span>
1634
+ 871: (<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>
1635
+ 872: (<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>
1636
+ 873: <span class="ruby-identifier">name</span>
1637
+ 874: <span class="ruby-keyword kw">end</span></pre>
1638
+ </div>
1639
+
1640
+ </div>
1641
+
1642
+
1643
+
1644
+
1645
+ </div>
1646
+
1647
+
1648
+ <div id="check-eports-method" class="method-detail ">
1649
+ <a name="method-i-checkReports"></a>
1650
+
1651
+ <div class="method-heading">
1652
+
1653
+ <span class="method-name">checkReports</span><span
1654
+ class="method-args">()</span>
1655
+ <span class="method-click-advice">click to toggle source</span>
1656
+
1657
+ </div>
1658
+
1659
+ <div class="method-description">
1660
+
1661
+ <p>
1662
+ Make sure that we have a least one report defined that has an output
1663
+ format.
1664
+ </p>
1665
+
1666
+
1667
+
1668
+ <div class="method-source-code"
1669
+ id="check-eports-source">
1670
+ <pre>
1671
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 624</span>
1672
+ 624: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkReports</span>
1673
+ 625: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">empty?</span>
1674
+ 626: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'no_report_defined'</span>,
1675
+ 627: <span class="ruby-value str">&quot;This project has no reports defined. &quot;</span> <span class="ruby-operator">+</span>
1676
+ 628: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
1677
+ 629: <span class="ruby-keyword kw">end</span>
1678
+ 630:
1679
+ 631: <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>
1680
+ 632: <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>
1681
+ 633: <span class="ruby-keyword kw">end</span>
1682
+ 634:
1683
+ 635: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'all_formats_empty'</span>,
1684
+ 636: <span class="ruby-value str">&quot;None of the reports has a 'formats' attribute. &quot;</span> <span class="ruby-operator">+</span>
1685
+ 637: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
1686
+ 638: <span class="ruby-keyword kw">end</span></pre>
1609
1687
  </div>
1610
1688
 
1611
1689
  </div>
@@ -1636,10 +1714,10 @@ tasks over resources here.
1636
1714
  <div class="method-source-code"
1637
1715
  id="check-ime-heets-source">
1638
1716
  <pre>
1639
- <span class="ruby-comment cmt"># File lib/Project.rb, line 691</span>
1640
- 691: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheets</span>
1641
- 692: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
1642
- 693: <span class="ruby-keyword kw">end</span></pre>
1717
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 732</span>
1718
+ 732: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheets</span>
1719
+ 733: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
1720
+ 734: <span class="ruby-keyword kw">end</span></pre>
1643
1721
  </div>
1644
1722
 
1645
1723
  </div>
@@ -1673,10 +1751,10 @@ setting of the global &#8216;dailyworkinghours&#8217; attribute.
1673
1751
  <div class="method-source-code"
1674
1752
  id="convert-o-aily-oad-source">
1675
1753
  <pre>
1676
- <span class="ruby-comment cmt"># File lib/Project.rb, line 761</span>
1677
- 761: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1678
- 762: <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>)
1679
- 763: <span class="ruby-keyword kw">end</span></pre>
1754
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 802</span>
1755
+ 802: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1756
+ 803: <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>)
1757
+ 804: <span class="ruby-keyword kw">end</span></pre>
1680
1758
  </div>
1681
1759
 
1682
1760
  </div>
@@ -1710,10 +1788,10 @@ can be set to other values by the user.
1710
1788
  <div class="method-source-code"
1711
1789
  id="daily-orking-ours-source">
1712
1790
  <pre>
1713
- <span class="ruby-comment cmt"># File lib/Project.rb, line 475</span>
1714
- 475: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1715
- 476: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1716
- 477: <span class="ruby-keyword kw">end</span></pre>
1791
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 492</span>
1792
+ 492: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1793
+ 493: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1794
+ 494: <span class="ruby-keyword kw">end</span></pre>
1717
1795
  </div>
1718
1796
 
1719
1797
  </div>
@@ -1749,21 +1827,21 @@ time frame.
1749
1827
  <div class="method-source-code"
1750
1828
  id="date-o-dx-source">
1751
1829
  <pre>
1752
- <span class="ruby-comment cmt"># File lib/Project.rb, line 787</span>
1753
- 787: <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">false</span>)
1754
- 788: <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>])
1755
- 789: <span class="ruby-comment cmt"># Date is out of range.</span>
1756
- 790: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
1757
- 791: <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>]
1758
- 792: <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>]
1759
- 793: <span class="ruby-keyword kw">else</span>
1760
- 794: <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>
1761
- 795: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
1762
- 796: <span class="ruby-keyword kw">end</span>
1763
- 797: <span class="ruby-keyword kw">end</span>
1764
- 798: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
1765
- 799: ((<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>
1766
- 800: <span class="ruby-keyword kw">end</span></pre>
1830
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 828</span>
1831
+ 828: <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">false</span>)
1832
+ 829: <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>])
1833
+ 830: <span class="ruby-comment cmt"># Date is out of range.</span>
1834
+ 831: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
1835
+ 832: <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>]
1836
+ 833: <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>]
1837
+ 834: <span class="ruby-keyword kw">else</span>
1838
+ 835: <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>
1839
+ 836: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
1840
+ 837: <span class="ruby-keyword kw">end</span>
1841
+ 838: <span class="ruby-keyword kw">end</span>
1842
+ 839: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
1843
+ 840: ((<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>
1844
+ 841: <span class="ruby-keyword kw">end</span></pre>
1767
1845
  </div>
1768
1846
 
1769
1847
  </div>
@@ -1834,10 +1912,10 @@ This function sends an error message to the message handler.
1834
1912
  <div class="method-source-code"
1835
1913
  id="error-source">
1836
1914
  <pre>
1837
- <span class="ruby-comment cmt"># File lib/Project.rb, line 849</span>
1838
- 849: <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>)
1839
- 850: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1840
- 851: <span class="ruby-keyword kw">end</span></pre>
1915
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 890</span>
1916
+ 890: <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>)
1917
+ 891: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1918
+ 892: <span class="ruby-keyword kw">end</span></pre>
1841
1919
  </div>
1842
1920
 
1843
1921
  </div>
@@ -1868,37 +1946,43 @@ This function sends an error message to the message handler.
1868
1946
  <div class="method-source-code"
1869
1947
  id="generate-eport-source">
1870
1948
  <pre>
1871
- <span class="ruby-comment cmt"># File lib/Project.rb, line 647</span>
1872
- 647: <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">dynamicAttributes</span> = <span class="ruby-keyword kw">nil</span>)
1873
- 648: <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>
1874
- 649: [ <span class="ruby-identifier">reportId</span> ]
1875
- 650: <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>
1876
- 651: <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>])
1877
- 652: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
1878
- 653: <span class="ruby-node">&quot;Request to generate unknown report #{id}&quot;</span>)
1879
- 654: <span class="ruby-keyword kw">end</span>
1880
- 655: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1881
- 656: <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>))
1882
- 657:
1883
- 658: <span class="ruby-comment cmt"># If we have dynamic attributes we need to backup the old attributes</span>
1884
- 659: <span class="ruby-comment cmt"># first, then parse the dynamicAttributes String replacing the</span>
1885
- 660: <span class="ruby-comment cmt"># original values.</span>
1886
- 661: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1887
- 662: <span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">backupAttributes</span>
1888
- 663: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
1889
- 664: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parseReportAttributes</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">dynamicAttributes</span>)
1890
- 665: <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>)
1891
- 666: <span class="ruby-keyword kw">end</span>
1892
- 667:
1893
- 668: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1894
- 669:
1895
- 670: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1896
- 671: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span>)
1897
- 672: <span class="ruby-keyword kw">end</span>
1898
- 673: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1899
- 674: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1900
- 675: <span class="ruby-keyword kw">end</span>
1901
- 676: <span class="ruby-keyword kw">end</span></pre>
1949
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 682</span>
1950
+ 682: <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">dynamicAttributes</span> = <span class="ruby-keyword kw">nil</span>)
1951
+ 683: <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>
1952
+ 684: [ <span class="ruby-identifier">reportId</span> ]
1953
+ 685: <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>
1954
+ 686: <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>])
1955
+ 687: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
1956
+ 688: <span class="ruby-node">&quot;Request to generate unknown report #{id}&quot;</span>)
1957
+ 689: <span class="ruby-keyword kw">end</span>
1958
+ 690: <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>
1959
+ 691: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'formats_empty'</span>,
1960
+ 692: <span class="ruby-node">&quot;The report #{report.fullId} has no 'formats' attribute. &quot;</span> <span class="ruby-operator">+</span>
1961
+ 693: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
1962
+ 694: <span class="ruby-keyword kw">end</span>
1963
+ 695:
1964
+ 696: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1965
+ 697: <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>))
1966
+ 698:
1967
+ 699: <span class="ruby-comment cmt"># If we have dynamic attributes we need to backup the old attributes</span>
1968
+ 700: <span class="ruby-comment cmt"># first, then parse the dynamicAttributes String replacing the</span>
1969
+ 701: <span class="ruby-comment cmt"># original values.</span>
1970
+ 702: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1971
+ 703: <span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">backupAttributes</span>
1972
+ 704: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
1973
+ 705: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parseReportAttributes</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">dynamicAttributes</span>)
1974
+ 706: <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>)
1975
+ 707: <span class="ruby-keyword kw">end</span>
1976
+ 708:
1977
+ 709: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1978
+ 710:
1979
+ 711: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1980
+ 712: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span>)
1981
+ 713: <span class="ruby-keyword kw">end</span>
1982
+ 714: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1983
+ 715: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1984
+ 716: <span class="ruby-keyword kw">end</span>
1985
+ 717: <span class="ruby-keyword kw">end</span></pre>
1902
1986
  </div>
1903
1987
 
1904
1988
  </div>
@@ -1933,46 +2017,46 @@ href="Project.html#method-i-schedule">Project#schedule</a> has been called.
1933
2017
  <div class="method-source-code"
1934
2018
  id="generate-eports-source">
1935
2019
  <pre>
1936
- <span class="ruby-comment cmt"># File lib/Project.rb, line 607</span>
1937
- 607: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
1938
- 608: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
1939
- 609: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1940
- 610: <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>
1941
- 611: <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>
1942
- 612: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1943
- 613: <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>))
1944
- 614: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1945
- 615: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1946
- 616: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1947
- 617: <span class="ruby-keyword kw">end</span>
1948
- 618: <span class="ruby-keyword kw">else</span>
1949
- 619: <span class="ruby-comment cmt"># Kickoff the generation of all reports by pushing the jobs into the</span>
1950
- 620: <span class="ruby-comment cmt"># BatchProcessor queue.</span>
1951
- 621: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
1952
- 622: <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>
1953
- 623: <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>
1954
- 624: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
1955
- 625: <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>))
1956
- 626: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1957
- 627: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1958
- 628: <span class="ruby-identifier">res</span>
1959
- 629: }
1960
- 630: <span class="ruby-keyword kw">end</span>
1961
- 631: <span class="ruby-comment cmt"># Now wait for all the jobs to finish.</span>
1962
- 632: <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>
1963
- 633: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
1964
- 634: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
1965
- 635: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
1966
- 636: <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>
1967
- 637: <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>)
1968
- 638: <span class="ruby-keyword kw">end</span>
1969
- 639: <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>
1970
- 640: <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>)
1971
- 641: <span class="ruby-keyword kw">end</span>
1972
- 642: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1973
- 643: <span class="ruby-keyword kw">end</span>
1974
- 644: <span class="ruby-keyword kw">end</span>
1975
- 645: <span class="ruby-keyword kw">end</span></pre>
2020
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 642</span>
2021
+ 642: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
2022
+ 643: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
2023
+ 644: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2024
+ 645: <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>
2025
+ 646: <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>
2026
+ 647: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
2027
+ 648: <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>))
2028
+ 649: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
2029
+ 650: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2030
+ 651: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2031
+ 652: <span class="ruby-keyword kw">end</span>
2032
+ 653: <span class="ruby-keyword kw">else</span>
2033
+ 654: <span class="ruby-comment cmt"># Kickoff the generation of all reports by pushing the jobs into the</span>
2034
+ 655: <span class="ruby-comment cmt"># BatchProcessor queue.</span>
2035
+ 656: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
2036
+ 657: <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>
2037
+ 658: <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>
2038
+ 659: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
2039
+ 660: <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>))
2040
+ 661: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
2041
+ 662: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2042
+ 663: <span class="ruby-identifier">res</span>
2043
+ 664: }
2044
+ 665: <span class="ruby-keyword kw">end</span>
2045
+ 666: <span class="ruby-comment cmt"># Now wait for all the jobs to finish.</span>
2046
+ 667: <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>
2047
+ 668: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
2048
+ 669: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
2049
+ 670: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
2050
+ 671: <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>
2051
+ 672: <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>)
2052
+ 673: <span class="ruby-keyword kw">end</span>
2053
+ 674: <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>
2054
+ 675: <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>)
2055
+ 676: <span class="ruby-keyword kw">end</span>
2056
+ 677: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2057
+ 678: <span class="ruby-keyword kw">end</span>
2058
+ 679: <span class="ruby-keyword kw">end</span>
2059
+ 680: <span class="ruby-keyword kw">end</span></pre>
1976
2060
  </div>
1977
2061
 
1978
2062
  </div>
@@ -2008,13 +2092,13 @@ raised.
2008
2092
  <div class="method-source-code"
2009
2093
  id="idx-o-ate-source">
2010
2094
  <pre>
2011
- <span class="ruby-comment cmt"># File lib/Project.rb, line 777</span>
2012
- 777: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
2013
- 778: <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>)
2014
- 779: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
2015
- 780: <span class="ruby-keyword kw">end</span>
2016
- 781: <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>]
2017
- 782: <span class="ruby-keyword kw">end</span></pre>
2095
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 818</span>
2096
+ 818: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
2097
+ 819: <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>)
2098
+ 820: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
2099
+ 821: <span class="ruby-keyword kw">end</span>
2100
+ 822: <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>]
2101
+ 823: <span class="ruby-keyword kw">end</span></pre>
2018
2102
  </div>
2019
2103
 
2020
2104
  </div>
@@ -2052,29 +2136,29 @@ defined and the slot lies within a defined working time period.
2052
2136
  <div class="method-source-code"
2053
2137
  id="is-orking-ime-source">
2054
2138
  <pre>
2055
- <span class="ruby-comment cmt"># File lib/Project.rb, line 736</span>
2056
- 736: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(*<span class="ruby-identifier">args</span>)
2057
- 737: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
2058
- 738: <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>
2059
- 739: <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>)
2060
- 740: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
2061
- 741: <span class="ruby-keyword kw">else</span>
2062
- 742: <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>
2063
- 743: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
2064
- 744: <span class="ruby-keyword kw">end</span>
2065
- 745: <span class="ruby-keyword kw">else</span>
2066
- 746: <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>])
2067
- 747: <span class="ruby-keyword kw">end</span>
2068
- 748:
2069
- 749: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
2070
- 750: <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>
2071
- 751: <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>)
2072
- 752: <span class="ruby-keyword kw">end</span>
2073
- 753:
2074
- 754: <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>)
2075
- 755:
2076
- 756: <span class="ruby-keyword kw">true</span>
2077
- 757: <span class="ruby-keyword kw">end</span></pre>
2139
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 777</span>
2140
+ 777: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(*<span class="ruby-identifier">args</span>)
2141
+ 778: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
2142
+ 779: <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>
2143
+ 780: <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>)
2144
+ 781: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
2145
+ 782: <span class="ruby-keyword kw">else</span>
2146
+ 783: <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>
2147
+ 784: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
2148
+ 785: <span class="ruby-keyword kw">end</span>
2149
+ 786: <span class="ruby-keyword kw">else</span>
2150
+ 787: <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>])
2151
+ 788: <span class="ruby-keyword kw">end</span>
2152
+ 789:
2153
+ 790: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
2154
+ 791: <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>
2155
+ 792: <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>)
2156
+ 793: <span class="ruby-keyword kw">end</span>
2157
+ 794:
2158
+ 795: <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>)
2159
+ 796:
2160
+ 797: <span class="ruby-keyword kw">true</span>
2161
+ 798: <span class="ruby-keyword kw">end</span></pre>
2078
2162
  </div>
2079
2163
 
2080
2164
  </div>
@@ -2105,19 +2189,19 @@ defined and the slot lies within a defined working time period.
2105
2189
  <div class="method-source-code"
2106
2190
  id="list-eports-source">
2107
2191
  <pre>
2108
- <span class="ruby-comment cmt"># File lib/Project.rb, line 678</span>
2109
- 678: <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>)
2110
- 679: <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>
2111
- 680: <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> []
2112
- 681: <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>
2113
- 682: <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>
2114
- 683: <span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2115
- 684: <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>)
2116
- 685: <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>
2117
- 686:
2118
- 687: <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>)
2119
- 688: <span class="ruby-keyword kw">end</span>
2120
- 689: <span class="ruby-keyword kw">end</span></pre>
2192
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 719</span>
2193
+ 719: <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>)
2194
+ 720: <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>
2195
+ 721: <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> []
2196
+ 722: <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>
2197
+ 723: <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>
2198
+ 724: <span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2199
+ 725: <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>)
2200
+ 726: <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>
2201
+ 727:
2202
+ 728: <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>)
2203
+ 729: <span class="ruby-keyword kw">end</span>
2204
+ 730: <span class="ruby-keyword kw">end</span></pre>
2121
2205
  </div>
2122
2206
 
2123
2207
  </div>
@@ -2150,10 +2234,10 @@ Return the average number of working days per month.
2150
2234
  <div class="method-source-code"
2151
2235
  id="monthly-orking-ays-source">
2152
2236
  <pre>
2153
- <span class="ruby-comment cmt"># File lib/Project.rb, line 485</span>
2154
- 485: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
2155
- 486: <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>
2156
- 487: <span class="ruby-keyword kw">end</span></pre>
2237
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 502</span>
2238
+ 502: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
2239
+ 503: <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>
2240
+ 504: <span class="ruby-keyword kw">end</span></pre>
2157
2241
  </div>
2158
2242
 
2159
2243
  </div>
@@ -2187,10 +2271,10 @@ return nil if it does not exist.
2187
2271
  <div class="method-source-code"
2188
2272
  id="report-source">
2189
2273
  <pre>
2190
- <span class="ruby-comment cmt"># File lib/Project.rb, line 551</span>
2191
- 551: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
2192
- 552: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2193
- 553: <span class="ruby-keyword kw">end</span></pre>
2274
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 568</span>
2275
+ 568: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
2276
+ 569: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2277
+ 570: <span class="ruby-keyword kw">end</span></pre>
2194
2278
  </div>
2195
2279
 
2196
2280
  </div>
@@ -2224,13 +2308,13 @@ return nil if it does not exist.
2224
2308
  <div class="method-source-code"
2225
2309
  id="report-y-ame-source">
2226
2310
  <pre>
2227
- <span class="ruby-comment cmt"># File lib/Project.rb, line 557</span>
2228
- 557: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
2229
- 558: <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>
2230
- 559: <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>
2231
- 560: <span class="ruby-keyword kw">end</span>
2232
- 561: <span class="ruby-keyword kw">nil</span>
2233
- 562: <span class="ruby-keyword kw">end</span></pre>
2311
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 574</span>
2312
+ 574: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
2313
+ 575: <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>
2314
+ 576: <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>
2315
+ 577: <span class="ruby-keyword kw">end</span>
2316
+ 578: <span class="ruby-keyword kw">nil</span>
2317
+ 579: <span class="ruby-keyword kw">end</span></pre>
2234
2318
  </div>
2235
2319
 
2236
2320
  </div>
@@ -2264,10 +2348,10 @@ return nil if it does not exist.
2264
2348
  <div class="method-source-code"
2265
2349
  id="resource-source">
2266
2350
  <pre>
2267
- <span class="ruby-comment cmt"># File lib/Project.rb, line 546</span>
2268
- 546: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
2269
- 547: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
2270
- 548: <span class="ruby-keyword kw">end</span></pre>
2351
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 563</span>
2352
+ 563: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
2353
+ 564: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
2354
+ 565: <span class="ruby-keyword kw">end</span></pre>
2271
2355
  </div>
2272
2356
 
2273
2357
  </div>
@@ -2301,17 +2385,17 @@ or <em>index</em>.
2301
2385
  <div class="method-source-code"
2302
2386
  id="scenario-source">
2303
2387
  <pre>
2304
- <span class="ruby-comment cmt"># File lib/Project.rb, line 504</span>
2305
- 504: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
2306
- 505: <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>)
2307
- 506: <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>
2308
- 507: <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>
2309
- 508: <span class="ruby-keyword kw">end</span>
2310
- 509: <span class="ruby-keyword kw">else</span>
2311
- 510: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
2312
- 511: <span class="ruby-keyword kw">end</span>
2313
- 512: <span class="ruby-keyword kw">nil</span>
2314
- 513: <span class="ruby-keyword kw">end</span></pre>
2388
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 521</span>
2389
+ 521: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
2390
+ 522: <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>)
2391
+ 523: <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>
2392
+ 524: <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>
2393
+ 525: <span class="ruby-keyword kw">end</span>
2394
+ 526: <span class="ruby-keyword kw">else</span>
2395
+ 527: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
2396
+ 528: <span class="ruby-keyword kw">end</span>
2397
+ 529: <span class="ruby-keyword kw">nil</span>
2398
+ 530: <span class="ruby-keyword kw">end</span></pre>
2315
2399
  </div>
2316
2400
 
2317
2401
  </div>
@@ -2344,10 +2428,10 @@ Return the number of defined scenarios for the project.
2344
2428
  <div class="method-source-code"
2345
2429
  id="scenario-ount-source">
2346
2430
  <pre>
2347
- <span class="ruby-comment cmt"># File lib/Project.rb, line 436</span>
2348
- 436: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
2349
- 437: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
2350
- 438: <span class="ruby-keyword kw">end</span></pre>
2431
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 453</span>
2432
+ 453: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
2433
+ 454: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
2434
+ 455: <span class="ruby-keyword kw">end</span></pre>
2351
2435
  </div>
2352
2436
 
2353
2437
  </div>
@@ -2381,16 +2465,16 @@ specified by <em>scenario</em> or <em>id</em>.
2381
2465
  <div class="method-source-code"
2382
2466
  id="scenario-dx-source">
2383
2467
  <pre>
2384
- <span class="ruby-comment cmt"># File lib/Project.rb, line 520</span>
2385
- 520: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2386
- 521: <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>)
2387
- 522: <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>
2388
- 523: <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>
2389
- 524: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2390
- 525: <span class="ruby-keyword kw">else</span>
2391
- 526: <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>
2392
- 527: <span class="ruby-keyword kw">end</span>
2393
- 528: <span class="ruby-keyword kw">end</span></pre>
2468
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 537</span>
2469
+ 537: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2470
+ 538: <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>)
2471
+ 539: <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>
2472
+ 540: <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>
2473
+ 541: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2474
+ 542: <span class="ruby-keyword kw">else</span>
2475
+ 543: <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>
2476
+ 544: <span class="ruby-keyword kw">end</span>
2477
+ 545: <span class="ruby-keyword kw">end</span></pre>
2394
2478
  </div>
2395
2479
 
2396
2480
  </div>
@@ -2425,44 +2509,44 @@ stores the result in the data structures again.
2425
2509
  <div class="method-source-code"
2426
2510
  id="schedule-source">
2427
2511
  <pre>
2428
- <span class="ruby-comment cmt"># File lib/Project.rb, line 567</span>
2429
- 567: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
2430
- 568: [ <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>
2431
- 569: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">inheritAttributesFromScenario</span>
2432
- 570: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
2433
- 571: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
2434
- 572: <span class="ruby-keyword kw">end</span>
2435
- 573:
2436
- 574: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
2437
- 575: <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>)
2438
- 576: <span class="ruby-keyword kw">end</span>
2439
- 577:
2440
- 578: <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>
2441
- 579: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
2442
- 580: <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">'enabled'</span>)
2443
- 581:
2444
- 582: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2445
- 583:
2446
- 584: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
2447
- 585: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
2448
- 586: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
2449
- 587: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
2450
- 588: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
2451
- 589: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2512
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 584</span>
2513
+ 584: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
2514
+ 585: [ <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>
2515
+ 586: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">inheritAttributesFromScenario</span>
2516
+ 587: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
2517
+ 588: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
2518
+ 589: <span class="ruby-keyword kw">end</span>
2452
2519
  590:
2453
- 591: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
2454
- 592: <span class="ruby-comment cmt"># as computed.</span>
2455
- 593: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
2456
- 594: <span class="ruby-comment cmt"># Schedule the scenario.</span>
2457
- 595: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2458
- 596:
2459
- 597: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
2460
- 598: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2461
- 599: <span class="ruby-keyword kw">end</span>
2520
+ 591: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
2521
+ 592: <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>)
2522
+ 593: <span class="ruby-keyword kw">end</span>
2523
+ 594:
2524
+ 595: <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>
2525
+ 596: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
2526
+ 597: <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">'enabled'</span>)
2527
+ 598:
2528
+ 599: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2462
2529
  600:
2463
- 601: <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>
2464
- 602: <span class="ruby-keyword kw">true</span>
2465
- 603: <span class="ruby-keyword kw">end</span></pre>
2530
+ 601: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
2531
+ 602: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
2532
+ 603: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
2533
+ 604: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
2534
+ 605: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
2535
+ 606: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2536
+ 607:
2537
+ 608: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
2538
+ 609: <span class="ruby-comment cmt"># as computed.</span>
2539
+ 610: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
2540
+ 611: <span class="ruby-comment cmt"># Schedule the scenario.</span>
2541
+ 612: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2542
+ 613:
2543
+ 614: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
2544
+ 615: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2545
+ 616: <span class="ruby-keyword kw">end</span>
2546
+ 617:
2547
+ 618: <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>
2548
+ 619: <span class="ruby-keyword kw">true</span>
2549
+ 620: <span class="ruby-keyword kw">end</span></pre>
2466
2550
  </div>
2467
2551
 
2468
2552
  </div>
@@ -2498,11 +2582,11 @@ number of entries in the scoreboards.
2498
2582
  <div class="method-source-code"
2499
2583
  id="scoreboard-ize-source">
2500
2584
  <pre>
2501
- <span class="ruby-comment cmt"># File lib/Project.rb, line 769</span>
2502
- 769: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
2503
- 770: ((<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>
2504
- 771: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2505
- 772: <span class="ruby-keyword kw">end</span></pre>
2585
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 810</span>
2586
+ 810: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
2587
+ 811: ((<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>
2588
+ 812: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2589
+ 813: <span class="ruby-keyword kw">end</span></pre>
2506
2590
  </div>
2507
2591
 
2508
2592
  </div>
@@ -2536,10 +2620,10 @@ nil if it does not exist.
2536
2620
  <div class="method-source-code"
2537
2621
  id="shift-source">
2538
2622
  <pre>
2539
- <span class="ruby-comment cmt"># File lib/Project.rb, line 531</span>
2540
- 531: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
2541
- 532: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
2542
- 533: <span class="ruby-keyword kw">end</span></pre>
2623
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 548</span>
2624
+ 548: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
2625
+ 549: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
2626
+ 550: <span class="ruby-keyword kw">end</span></pre>
2543
2627
  </div>
2544
2628
 
2545
2629
  </div>
@@ -2572,10 +2656,10 @@ Convert timeSlots to working days.
2572
2656
  <div class="method-source-code"
2573
2657
  id="slots-o-ays-source">
2574
2658
  <pre>
2575
- <span class="ruby-comment cmt"># File lib/Project.rb, line 495</span>
2576
- 495: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
2577
- 496: <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>)
2578
- 497: <span class="ruby-keyword kw">end</span></pre>
2659
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 512</span>
2660
+ 512: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
2661
+ 513: <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>)
2662
+ 514: <span class="ruby-keyword kw">end</span></pre>
2579
2663
  </div>
2580
2664
 
2581
2665
  </div>
@@ -2609,10 +2693,10 @@ nil if it does not exist.
2609
2693
  <div class="method-source-code"
2610
2694
  id="task-source">
2611
2695
  <pre>
2612
- <span class="ruby-comment cmt"># File lib/Project.rb, line 541</span>
2613
- 541: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
2614
- 542: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
2615
- 543: <span class="ruby-keyword kw">end</span></pre>
2696
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 558</span>
2697
+ 558: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
2698
+ 559: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
2699
+ 560: <span class="ruby-keyword kw">end</span></pre>
2616
2700
  </div>
2617
2701
 
2618
2702
  </div>
@@ -2645,18 +2729,18 @@ Print the attribute values. It&#8217;s used for debugging only.
2645
2729
  <div class="method-source-code"
2646
2730
  id="to-s-source">
2647
2731
  <pre>
2648
- <span class="ruby-comment cmt"># File lib/Project.rb, line 836</span>
2649
- 836: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
2650
- 837: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;STOP!&quot;</span>
2651
- 838: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
2652
- 839: <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>
2653
- 840: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
2654
- 841: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
2655
- 842: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
2656
- 843: <span class="ruby-keyword kw">end</span>
2657
- 844: <span class="ruby-keyword kw">end</span>
2658
- 845: <span class="ruby-identifier">str</span>
2659
- 846: <span class="ruby-keyword kw">end</span></pre>
2732
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 877</span>
2733
+ 877: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
2734
+ 878: <span class="ruby-comment cmt">#raise &quot;STOP!&quot;</span>
2735
+ 879: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
2736
+ 880: <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>
2737
+ 881: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
2738
+ 882: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
2739
+ 883: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
2740
+ 884: <span class="ruby-keyword kw">end</span>
2741
+ 885: <span class="ruby-keyword kw">end</span>
2742
+ 886: <span class="ruby-identifier">str</span>
2743
+ 887: <span class="ruby-keyword kw">end</span></pre>
2660
2744
  </div>
2661
2745
 
2662
2746
  </div>
@@ -2689,10 +2773,10 @@ Return the average number of working days per week.
2689
2773
  <div class="method-source-code"
2690
2774
  id="weekly-orking-ays-source">
2691
2775
  <pre>
2692
- <span class="ruby-comment cmt"># File lib/Project.rb, line 480</span>
2693
- 480: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
2694
- 481: <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>
2695
- 482: <span class="ruby-keyword kw">end</span></pre>
2776
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 497</span>
2777
+ 497: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
2778
+ 498: <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>
2779
+ 499: <span class="ruby-keyword kw">end</span></pre>
2696
2780
  </div>
2697
2781
 
2698
2782
  </div>
@@ -2725,10 +2809,10 @@ Return the average number of working days per year.
2725
2809
  <div class="method-source-code"
2726
2810
  id="yearly-orking-ays-source">
2727
2811
  <pre>
2728
- <span class="ruby-comment cmt"># File lib/Project.rb, line 490</span>
2729
- 490: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
2730
- 491: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
2731
- 492: <span class="ruby-keyword kw">end</span></pre>
2812
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 507</span>
2813
+ 507: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
2814
+ 508: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
2815
+ 509: <span class="ruby-keyword kw">end</span></pre>
2732
2816
  </div>
2733
2817
 
2734
2818
  </div>
@@ -2765,31 +2849,34 @@ Return the average number of working days per year.
2765
2849
  <div class="method-source-code"
2766
2850
  id="finish-cenario-source">
2767
2851
  <pre>
2768
- <span class="ruby-comment cmt"># File lib/Project.rb, line 922</span>
2769
- 922: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2770
- 923: <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>)
2771
- 924: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
2772
- 925: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2773
- 926: <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>
2774
- 927: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2775
- 928: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2776
- 929: <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.5</span>)
2777
- 930: <span class="ruby-keyword kw">end</span>
2778
- 931:
2779
- 932: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2780
- 933: <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>
2781
- 934: <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>
2782
- 935: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2783
- 936: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.5</span> <span class="ruby-operator">+</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.5</span>)
2784
- 937: <span class="ruby-keyword kw">end</span>
2785
- 938:
2786
- 939: <span class="ruby-comment cmt"># This should be really fast so we don't log progess.</span>
2787
- 940: <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>
2788
- 941: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2789
- 942: <span class="ruby-keyword kw">end</span>
2790
- 943:
2791
- 944: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2792
- 945: <span class="ruby-keyword kw">end</span></pre>
2852
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 963</span>
2853
+ 963: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2854
+ 964: <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>)
2855
+ 965: <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>
2856
+ 966: <span class="ruby-comment cmt"># Recursively traverse the top-level tasks to finish all tasks.</span>
2857
+ 967: <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>
2858
+ 968: <span class="ruby-keyword kw">end</span>
2859
+ 969:
2860
+ 970: <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>
2861
+ 971: <span class="ruby-comment cmt"># Recursively traverse the top-level resources to finish them all.</span>
2862
+ 972: <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>
2863
+ 973: <span class="ruby-keyword kw">end</span>
2864
+ 974:
2865
+ 975: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2866
+ 976: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
2867
+ 977: <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>
2868
+ 978: <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>
2869
+ 979: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2870
+ 980: <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>)
2871
+ 981: <span class="ruby-keyword kw">end</span>
2872
+ 982:
2873
+ 983: <span class="ruby-comment cmt"># This should be really fast so we don't log progess.</span>
2874
+ 984: <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>
2875
+ 985: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2876
+ 986: <span class="ruby-keyword kw">end</span>
2877
+ 987:
2878
+ 988: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2879
+ 989: <span class="ruby-keyword kw">end</span></pre>
2793
2880
  </div>
2794
2881
 
2795
2882
  </div>
@@ -2820,73 +2907,73 @@ Return the average number of working days per year.
2820
2907
  <div class="method-source-code"
2821
2908
  id="prepare-cenario-source">
2822
2909
  <pre>
2823
- <span class="ruby-comment cmt"># File lib/Project.rb, line 855</span>
2824
- 855: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2825
- 856: <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>
2826
- 857: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
2827
- 858: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
2828
- 859: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2829
- 860:
2830
- 861: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
2831
- 862: <span class="ruby-comment cmt"># project.</span>
2832
- 863: <span class="ruby-identifier">usedResources</span> = []
2833
- 864: <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>
2834
- 865: <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>
2835
- 866: <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>)
2836
- 867: <span class="ruby-keyword kw">end</span>
2837
- 868: <span class="ruby-keyword kw">end</span>
2838
- 869: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
2839
- 870: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2840
- 871: <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>
2841
- 872: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2842
- 873: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2843
- 874: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2844
- 875: <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>)
2845
- 876: <span class="ruby-keyword kw">end</span>
2846
- 877:
2847
- 878: <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>) }
2848
- 879: <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>) }
2849
- 880:
2850
- 881: <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>) }
2851
- 882: <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>) }
2852
- 883: <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>) }
2853
- 884: <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>) }
2854
- 885:
2855
- 886: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
2856
- 887: <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>) }
2857
- 888: <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>
2858
- 889: <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">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2859
- 890: <span class="ruby-keyword kw">end</span>
2860
- 891: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.85</span>)
2861
- 892: <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>) }
2862
- 893: <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>
2863
- 894: <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">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2864
- 895: <span class="ruby-keyword kw">end</span>
2865
- 896: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.87</span>)
2866
- 897:
2867
- 898: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
2868
- 899: <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>) }
2869
- 900: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.88</span>)
2870
- 901: <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>) }
2871
- 902: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.9</span>)
2872
- 903: <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>) }
2873
- 904: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.95</span>)
2874
- 905: <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>) }
2875
- 906: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.99</span>)
2876
- 907: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
2877
- 908: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
2878
- 909:
2879
- 910: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2880
- 911: <span class="ruby-comment cmt"># This is used for debugging only</span>
2881
- 912: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
2882
- 913: <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>
2883
- 914: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{resource}&quot;</span>
2884
- 915: <span class="ruby-keyword kw">end</span>
2885
- 916: <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>
2886
- 917: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{task}&quot;</span>
2887
- 918: <span class="ruby-keyword kw">end</span>
2888
- 919: <span class="ruby-keyword kw">end</span>
2889
- 920: <span class="ruby-keyword kw">end</span></pre>
2910
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 896</span>
2911
+ 896: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2912
+ 897: <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>
2913
+ 898: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
2914
+ 899: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
2915
+ 900: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2916
+ 901:
2917
+ 902: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
2918
+ 903: <span class="ruby-comment cmt"># project.</span>
2919
+ 904: <span class="ruby-identifier">usedResources</span> = []
2920
+ 905: <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>
2921
+ 906: <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>
2922
+ 907: <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>)
2923
+ 908: <span class="ruby-keyword kw">end</span>
2924
+ 909: <span class="ruby-keyword kw">end</span>
2925
+ 910: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
2926
+ 911: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2927
+ 912: <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>
2928
+ 913: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2929
+ 914: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2930
+ 915: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2931
+ 916: <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>)
2932
+ 917: <span class="ruby-keyword kw">end</span>
2933
+ 918:
2934
+ 919: <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>) }
2935
+ 920: <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>) }
2936
+ 921:
2937
+ 922: <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>) }
2938
+ 923: <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>) }
2939
+ 924: <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>) }
2940
+ 925: <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>) }
2941
+ 926:
2942
+ 927: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
2943
+ 928: <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>) }
2944
+ 929: <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>
2945
+ 930: <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">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2946
+ 931: <span class="ruby-keyword kw">end</span>
2947
+ 932: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.85</span>)
2948
+ 933: <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>) }
2949
+ 934: <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>
2950
+ 935: <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">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2951
+ 936: <span class="ruby-keyword kw">end</span>
2952
+ 937: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.87</span>)
2953
+ 938:
2954
+ 939: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
2955
+ 940: <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>) }
2956
+ 941: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.88</span>)
2957
+ 942: <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>) }
2958
+ 943: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.9</span>)
2959
+ 944: <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>) }
2960
+ 945: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.95</span>)
2961
+ 946: <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>) }
2962
+ 947: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.99</span>)
2963
+ 948: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
2964
+ 949: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
2965
+ 950:
2966
+ 951: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2967
+ 952: <span class="ruby-comment cmt"># This is used for debugging only</span>
2968
+ 953: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
2969
+ 954: <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>
2970
+ 955: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{resource}&quot;</span>
2971
+ 956: <span class="ruby-keyword kw">end</span>
2972
+ 957: <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>
2973
+ 958: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{task}&quot;</span>
2974
+ 959: <span class="ruby-keyword kw">end</span>
2975
+ 960: <span class="ruby-keyword kw">end</span>
2976
+ 961: <span class="ruby-keyword kw">end</span></pre>
2890
2977
  </div>
2891
2978
 
2892
2979
  </div>
@@ -2920,85 +3007,85 @@ index <tt>scIdx</tt>.
2920
3007
  <div class="method-source-code"
2921
3008
  id="schedule-cenario-source">
2922
3009
  <pre>
2923
- <span class="ruby-comment cmt"># File lib/Project.rb, line 948</span>
2924
- 948: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2925
- 949: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2926
- 950: <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> }
2927
- 951:
2928
- 952: <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>)
2929
- 953: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
2930
- 954: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
2931
- 955: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
2932
- 956: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
2933
- 957: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
2934
- 958: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
2935
- 959: <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> ],
2936
- 960: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
2937
- 961: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ] ])
2938
- 962: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
2939
- 963: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
2940
- 964:
2941
- 965: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
2942
- 966: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
2943
- 967: <span class="ruby-comment cmt"># true.</span>
2944
- 968: <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>
2945
- 969: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
2946
- 970: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
2947
- 971: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
2948
- 972: <span class="ruby-comment cmt"># ready to be scheduled.</span>
2949
- 973: <span class="ruby-identifier">workItems</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">to_ary</span>
2950
- 974:
2951
- 975: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
2952
- 976: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
2953
- 977: <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>
2954
- 978: <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>]
2955
- 979: <span class="ruby-keyword kw">end</span>
2956
- 980:
2957
- 981: <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>)
2958
- 982: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
2959
- 983: <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>) }
2960
- 984:
2961
- 985: <span class="ruby-comment cmt"># Check if we are done.</span>
2962
- 986: <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>
2963
- 987:
2964
- 988: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
2965
- 989: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
2966
- 990: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
2967
- 991: <span class="ruby-comment cmt"># Schedule it.</span>
2968
- 992: <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>)
2969
- 993: <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>
2970
- 994: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
2971
- 995: <span class="ruby-keyword kw">end</span>
2972
- 996: <span class="ruby-keyword kw">end</span>
2973
- 997: <span class="ruby-identifier">unscheduledTasks</span> = []
2974
- 998: <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>] }
2975
- 999:
2976
- 1000: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
2977
- 1001: <span class="ruby-comment cmt"># warnings.</span>
2978
- 1002: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
2979
- 1003: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
2980
- 1004: <span class="ruby-value str">'unscheduled_tasks'</span>,
2981
- 1005: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be scheduled&quot;</span>)
2982
- 1006: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2983
- 1007: <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>
2984
- 1008: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
2985
- 1009: <span class="ruby-value str">'unscheduled_task'</span>,
2986
- 1010: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
2987
- 1011: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
2988
- 1012: <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>,
2989
- 1013: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
2990
- 1014:
2991
- 1015: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2992
- 1016: <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>
2993
- 1017: <span class="ruby-keyword kw">end</span>
2994
- 1018: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2995
- 1019: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2996
- 1020: <span class="ruby-keyword kw">end</span>
2997
- 1021:
2998
- 1022: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2999
- 1023: <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>)
3000
- 1024: <span class="ruby-keyword kw">true</span>
3001
- 1025: <span class="ruby-keyword kw">end</span></pre>
3010
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 992</span>
3011
+ 992: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
3012
+ 993: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
3013
+ 994: <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> }
3014
+ 995:
3015
+ 996: <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>)
3016
+ 997: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
3017
+ 998: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
3018
+ 999: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
3019
+ 1000: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
3020
+ 1001: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
3021
+ 1002: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
3022
+ 1003: <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> ],
3023
+ 1004: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
3024
+ 1005: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ] ])
3025
+ 1006: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
3026
+ 1007: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
3027
+ 1008:
3028
+ 1009: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
3029
+ 1010: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
3030
+ 1011: <span class="ruby-comment cmt"># true.</span>
3031
+ 1012: <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>
3032
+ 1013: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
3033
+ 1014: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
3034
+ 1015: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
3035
+ 1016: <span class="ruby-comment cmt"># ready to be scheduled.</span>
3036
+ 1017: <span class="ruby-identifier">workItems</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">to_ary</span>
3037
+ 1018:
3038
+ 1019: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
3039
+ 1020: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
3040
+ 1021: <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>
3041
+ 1022: <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>]
3042
+ 1023: <span class="ruby-keyword kw">end</span>
3043
+ 1024:
3044
+ 1025: <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>)
3045
+ 1026: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
3046
+ 1027: <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>) }
3047
+ 1028:
3048
+ 1029: <span class="ruby-comment cmt"># Check if we are done.</span>
3049
+ 1030: <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>
3050
+ 1031:
3051
+ 1032: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
3052
+ 1033: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
3053
+ 1034: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
3054
+ 1035: <span class="ruby-comment cmt"># Schedule it.</span>
3055
+ 1036: <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>)
3056
+ 1037: <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>
3057
+ 1038: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
3058
+ 1039: <span class="ruby-keyword kw">end</span>
3059
+ 1040: <span class="ruby-keyword kw">end</span>
3060
+ 1041: <span class="ruby-identifier">unscheduledTasks</span> = []
3061
+ 1042: <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>] }
3062
+ 1043:
3063
+ 1044: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
3064
+ 1045: <span class="ruby-comment cmt"># warnings.</span>
3065
+ 1046: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
3066
+ 1047: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
3067
+ 1048: <span class="ruby-value str">'unscheduled_tasks'</span>,
3068
+ 1049: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be scheduled&quot;</span>)
3069
+ 1050: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3070
+ 1051: <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>
3071
+ 1052: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
3072
+ 1053: <span class="ruby-value str">'unscheduled_task'</span>,
3073
+ 1054: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
3074
+ 1055: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
3075
+ 1056: <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>,
3076
+ 1057: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
3077
+ 1058:
3078
+ 1059: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3079
+ 1060: <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>
3080
+ 1061: <span class="ruby-keyword kw">end</span>
3081
+ 1062: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3082
+ 1063: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
3083
+ 1064: <span class="ruby-keyword kw">end</span>
3084
+ 1065:
3085
+ 1066: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3086
+ 1067: <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>)
3087
+ 1068: <span class="ruby-keyword kw">true</span>
3088
+ 1069: <span class="ruby-keyword kw">end</span></pre>
3002
3089
  </div>
3003
3090
 
3004
3091
  </div>
@@ -3035,15 +3122,15 @@ index <tt>scIdx</tt>.
3035
3122
  <div class="method-source-code"
3036
3123
  id="matching-eports-source">
3037
3124
  <pre>
3038
- <span class="ruby-comment cmt"># File lib/Project.rb, line 1029</span>
3039
- 1029: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>)
3040
- 1030: <span class="ruby-identifier">list</span> = []
3041
- 1031: <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>
3042
- 1032: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>
3043
- 1033: <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>
3044
- 1034: <span class="ruby-keyword kw">end</span>
3045
- 1035: <span class="ruby-identifier">list</span>
3046
- 1036: <span class="ruby-keyword kw">end</span></pre>
3125
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 1073</span>
3126
+ 1073: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>)
3127
+ 1074: <span class="ruby-identifier">list</span> = []
3128
+ 1075: <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>
3129
+ 1076: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>
3130
+ 1077: <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>
3131
+ 1078: <span class="ruby-keyword kw">end</span>
3132
+ 1079: <span class="ruby-identifier">list</span>
3133
+ 1080: <span class="ruby-keyword kw">end</span></pre>
3047
3134
  </div>
3048
3135
 
3049
3136
  </div>