taskjuggler 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (544) hide show
  1. data/CHANGELOG +2086 -0
  2. data/benchmarks/666tasks.tjp +3183 -0
  3. data/benchmarks/booking.tjp +14 -10
  4. data/doc/AppConfig.html +95 -73
  5. data/doc/Arguments.html +22 -2
  6. data/doc/CHANGELOG.html +2587 -0
  7. data/doc/COPYING.html +21 -1
  8. data/doc/Object.html +161 -122
  9. data/doc/README.html +21 -1
  10. data/doc/RuntimeConfig.html +26 -6
  11. data/doc/String.html +38 -18
  12. data/doc/StringIO.html +579 -0
  13. data/doc/TaskJuggler.html +251 -143
  14. data/doc/TaskJuggler/Account.html +26 -6
  15. data/doc/TaskJuggler/AccountAttribute.html +28 -8
  16. data/doc/TaskJuggler/AccountScenario.html +24 -4
  17. data/doc/TaskJuggler/Allocation.html +30 -10
  18. data/doc/TaskJuggler/AllocationAttribute.html +28 -8
  19. data/doc/TaskJuggler/AttributeBase.html +46 -26
  20. data/doc/TaskJuggler/AttributeDefinition.html +22 -2
  21. data/doc/TaskJuggler/BatchProcessor.html +40 -20
  22. data/doc/TaskJuggler/Booking.html +26 -6
  23. data/doc/TaskJuggler/BookingListAttribute.html +28 -8
  24. data/doc/TaskJuggler/BooleanAttribute.html +28 -8
  25. data/doc/TaskJuggler/CSVFile.html +308 -146
  26. data/doc/TaskJuggler/CellSettingPattern.html +22 -2
  27. data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
  28. data/doc/TaskJuggler/Charge.html +26 -6
  29. data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
  30. data/doc/TaskJuggler/ChargeSet.html +33 -13
  31. data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
  32. data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
  33. data/doc/TaskJuggler/ColumnTable.html +24 -4
  34. data/doc/TaskJuggler/Daemon.html +26 -6
  35. data/doc/TaskJuggler/DateAttribute.html +26 -6
  36. data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
  37. data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
  38. data/doc/TaskJuggler/DurationAttribute.html +28 -8
  39. data/doc/TaskJuggler/FixnumAttribute.html +24 -4
  40. data/doc/TaskJuggler/FlagListAttribute.html +28 -8
  41. data/doc/TaskJuggler/FloatAttribute.html +26 -6
  42. data/doc/TaskJuggler/FormatListAttribute.html +24 -4
  43. data/doc/TaskJuggler/GanttChart.html +147 -126
  44. data/doc/TaskJuggler/GanttContainer.html +34 -14
  45. data/doc/TaskJuggler/GanttHeader.html +28 -8
  46. data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
  47. data/doc/TaskJuggler/GanttLine.html +38 -18
  48. data/doc/TaskJuggler/GanttLoadStack.html +26 -6
  49. data/doc/TaskJuggler/GanttMilestone.html +34 -14
  50. data/doc/TaskJuggler/GanttRouter.html +50 -30
  51. data/doc/TaskJuggler/GanttTaskBar.html +34 -14
  52. data/doc/TaskJuggler/HTMLDocument.html +26 -6
  53. data/doc/TaskJuggler/HTMLGraphics.html +30 -10
  54. data/doc/TaskJuggler/Interval.html +40 -22
  55. data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
  56. data/doc/TaskJuggler/JobInfo.html +24 -4
  57. data/doc/TaskJuggler/Journal.html +226 -147
  58. data/doc/TaskJuggler/JournalEntry.html +22 -2
  59. data/doc/TaskJuggler/JournalEntryList.html +129 -112
  60. data/doc/TaskJuggler/KeywordArray.html +26 -6
  61. data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
  62. data/doc/TaskJuggler/Limits.html +152 -123
  63. data/doc/TaskJuggler/Limits/Limit.html +149 -70
  64. data/doc/TaskJuggler/LimitsAttribute.html +36 -51
  65. data/doc/TaskJuggler/ListAttributeBase.html +24 -4
  66. data/doc/TaskJuggler/Log.html +50 -32
  67. data/doc/TaskJuggler/LogFile.html +37 -17
  68. data/doc/TaskJuggler/LogicalAttribute.html +53 -33
  69. data/doc/TaskJuggler/LogicalExpression.html +26 -6
  70. data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
  71. data/doc/TaskJuggler/LogicalFlag.html +42 -22
  72. data/doc/TaskJuggler/LogicalFunction.html +204 -140
  73. data/doc/TaskJuggler/LogicalOperation.html +135 -111
  74. data/doc/TaskJuggler/Macro.html +22 -2
  75. data/doc/TaskJuggler/MacroParser.html +32 -12
  76. data/doc/TaskJuggler/MacroTable.html +32 -12
  77. data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
  78. data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
  79. data/doc/TaskJuggler/Message.html +24 -4
  80. data/doc/TaskJuggler/MessageHandler.html +24 -4
  81. data/doc/TaskJuggler/Navigator.html +104 -71
  82. data/doc/TaskJuggler/NavigatorElement.html +32 -12
  83. data/doc/TaskJuggler/NikuProject.html +22 -2
  84. data/doc/TaskJuggler/NikuReport.html +310 -228
  85. data/doc/TaskJuggler/NikuResource.html +22 -2
  86. data/doc/TaskJuggler/NodeListAttribute.html +615 -0
  87. data/doc/TaskJuggler/OnShiftCache.html +32 -12
  88. data/doc/TaskJuggler/ProcessIntercom.html +205 -78
  89. data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
  90. data/doc/TaskJuggler/Project.html +708 -660
  91. data/doc/TaskJuggler/ProjectBroker.html +506 -304
  92. data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
  93. data/doc/TaskJuggler/ProjectFileParser.html +429 -373
  94. data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
  95. data/doc/TaskJuggler/ProjectRecord.html +80 -60
  96. data/doc/TaskJuggler/ProjectServer.html +312 -237
  97. data/doc/TaskJuggler/ProjectServerIface.html +101 -43
  98. data/doc/TaskJuggler/PropertyAttribute.html +32 -12
  99. data/doc/TaskJuggler/PropertyList.html +166 -145
  100. data/doc/TaskJuggler/PropertySet.html +254 -224
  101. data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
  102. data/doc/TaskJuggler/Query.html +169 -148
  103. data/doc/TaskJuggler/RTFHandlers.html +622 -0
  104. data/doc/TaskJuggler/RTFNavigator.html +28 -8
  105. data/doc/TaskJuggler/RTFQuery.html +40 -20
  106. data/doc/TaskJuggler/RTFReport.html +62 -25
  107. data/doc/TaskJuggler/RTFReportLink.html +765 -0
  108. data/doc/TaskJuggler/RealFormat.html +26 -6
  109. data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
  110. data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
  111. data/doc/TaskJuggler/Report.html +402 -251
  112. data/doc/TaskJuggler/ReportBase.html +162 -137
  113. data/doc/TaskJuggler/ReportContext.html +112 -29
  114. data/doc/TaskJuggler/ReportServer.html +89 -64
  115. data/doc/TaskJuggler/ReportServerIface.html +75 -55
  116. data/doc/TaskJuggler/ReportServerRecord.html +54 -31
  117. data/doc/TaskJuggler/ReportServlet.html +980 -0
  118. data/doc/TaskJuggler/ReportTable.html +41 -21
  119. data/doc/TaskJuggler/ReportTableCell.html +214 -170
  120. data/doc/TaskJuggler/ReportTableColumn.html +30 -10
  121. data/doc/TaskJuggler/ReportTableLegend.html +36 -16
  122. data/doc/TaskJuggler/ReportTableLine.html +32 -12
  123. data/doc/TaskJuggler/Resource.html +99 -87
  124. data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
  125. data/doc/TaskJuggler/ResourceListRE.html +47 -26
  126. data/doc/TaskJuggler/ResourceScenario.html +403 -437
  127. data/doc/TaskJuggler/RichText.html +26 -6
  128. data/doc/TaskJuggler/RichTextAttribute.html +50 -30
  129. data/doc/TaskJuggler/RichTextDocument.html +37 -17
  130. data/doc/TaskJuggler/RichTextElement.html +475 -413
  131. data/doc/TaskJuggler/RichTextException.html +22 -2
  132. data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
  133. data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
  134. data/doc/TaskJuggler/RichTextImage.html +22 -2
  135. data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
  136. data/doc/TaskJuggler/RichTextParser.html +56 -34
  137. data/doc/TaskJuggler/RichTextScanner.html +82 -61
  138. data/doc/TaskJuggler/RichTextSnip.html +34 -14
  139. data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
  140. data/doc/TaskJuggler/Scenario.html +22 -2
  141. data/doc/TaskJuggler/ScenarioData.html +30 -46
  142. data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
  143. data/doc/TaskJuggler/Scoreboard.html +42 -22
  144. data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
  145. data/doc/TaskJuggler/SheetReceiver.html +333 -295
  146. data/doc/TaskJuggler/SheetSender.html +253 -230
  147. data/doc/TaskJuggler/Shift.html +26 -6
  148. data/doc/TaskJuggler/ShiftAssignment.html +89 -73
  149. data/doc/TaskJuggler/ShiftAssignments.html +226 -234
  150. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
  151. data/doc/TaskJuggler/ShiftScenario.html +28 -8
  152. data/doc/TaskJuggler/SortListAttribute.html +34 -14
  153. data/doc/TaskJuggler/SourceFileInfo.html +24 -4
  154. data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
  155. data/doc/TaskJuggler/StatusSheetReport.html +168 -153
  156. data/doc/TaskJuggler/StatusSheetSender.html +24 -3
  157. data/doc/TaskJuggler/StringAttribute.html +38 -18
  158. data/doc/TaskJuggler/SymbolAttribute.html +32 -12
  159. data/doc/TaskJuggler/SyntaxReference.html +40 -20
  160. data/doc/TaskJuggler/TOCEntry.html +26 -6
  161. data/doc/TaskJuggler/TSResourceRecord.html +22 -2
  162. data/doc/TaskJuggler/TSTaskRecord.html +22 -2
  163. data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
  164. data/doc/TaskJuggler/TableOfContents.html +26 -6
  165. data/doc/TaskJuggler/TableReport.html +937 -904
  166. data/doc/TaskJuggler/Task.html +55 -36
  167. data/doc/TaskJuggler/TaskDependency.html +24 -4
  168. data/doc/TaskJuggler/TaskListAttribute.html +50 -30
  169. data/doc/TaskJuggler/TaskListRE.html +27 -7
  170. data/doc/TaskJuggler/TaskScenario.html +1273 -1153
  171. data/doc/TaskJuggler/TextFormatter.html +28 -8
  172. data/doc/TaskJuggler/TextParser.html +585 -338
  173. data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
  174. data/doc/TaskJuggler/TextParser/Rule.html +95 -73
  175. data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
  176. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
  177. data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
  178. data/doc/TaskJuggler/TextReport.html +28 -8
  179. data/doc/TaskJuggler/TextScanner.html +400 -1404
  180. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
  181. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
  182. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
  183. data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
  184. data/doc/TaskJuggler/TimeSheet.html +48 -28
  185. data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
  186. data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
  187. data/doc/TaskJuggler/TimeSheetReport.html +154 -133
  188. data/doc/TaskJuggler/TimeSheetSender.html +24 -3
  189. data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
  190. data/doc/TaskJuggler/TimeSheets.html +26 -6
  191. data/doc/TaskJuggler/Tj3AppBase.html +85 -58
  192. data/doc/TaskJuggler/Tj3Client.html +292 -238
  193. data/doc/TaskJuggler/Tj3Daemon.html +159 -74
  194. data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
  195. data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
  196. data/doc/TaskJuggler/Tj3SsSender.html +53 -26
  197. data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
  198. data/doc/TaskJuggler/Tj3TsSender.html +26 -6
  199. data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
  200. data/doc/TaskJuggler/TjException.html +22 -2
  201. data/doc/TaskJuggler/TjTime.html +216 -160
  202. data/doc/TaskJuggler/TjpExample.html +34 -14
  203. data/doc/TaskJuggler/TjpExportRE.html +403 -407
  204. data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
  205. data/doc/TaskJuggler/URLParameter.html +649 -0
  206. data/doc/TaskJuggler/UserManual.html +42 -22
  207. data/doc/TaskJuggler/WebServer.html +702 -0
  208. data/doc/TaskJuggler/WorkingHours.html +38 -18
  209. data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
  210. data/doc/TaskJuggler/XMLBlob.html +24 -4
  211. data/doc/TaskJuggler/XMLComment.html +24 -4
  212. data/doc/TaskJuggler/XMLDocument.html +30 -10
  213. data/doc/TaskJuggler/XMLElement.html +34 -14
  214. data/doc/TaskJuggler/XMLNamedText.html +22 -2
  215. data/doc/TaskJuggler/XMLText.html +24 -4
  216. data/doc/index.html +1841 -1666
  217. data/doc/lib/AccountScenario_rb.html +1 -1
  218. data/doc/lib/Account_rb.html +1 -1
  219. data/doc/lib/Allocation_rb.html +1 -1
  220. data/doc/lib/AppConfig_rb.html +2 -2
  221. data/doc/lib/AttributeBase_rb.html +1 -1
  222. data/doc/lib/AttributeDefinition_rb.html +1 -1
  223. data/doc/lib/Attributes_rb.html +2 -2
  224. data/doc/lib/BatchProcessor_rb.html +1 -1
  225. data/doc/lib/Booking_rb.html +1 -1
  226. data/doc/lib/ChargeSet_rb.html +1 -1
  227. data/doc/lib/Charge_rb.html +1 -1
  228. data/doc/lib/HTMLDocument_rb.html +1 -1
  229. data/doc/lib/Interval_rb.html +1 -1
  230. data/doc/lib/Journal_rb.html +2 -2
  231. data/doc/lib/KeywordArray_rb.html +1 -1
  232. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  233. data/doc/lib/Limits_rb.html +2 -2
  234. data/doc/lib/LogFile_rb.html +2 -2
  235. data/doc/lib/Log_rb.html +1 -1
  236. data/doc/lib/LogicalExpression_rb.html +1 -1
  237. data/doc/lib/LogicalFunction_rb.html +2 -2
  238. data/doc/lib/LogicalOperation_rb.html +2 -2
  239. data/doc/lib/MacroParser_rb.html +1 -1
  240. data/doc/lib/MacroTable_rb.html +1 -1
  241. data/doc/lib/MessageHandler_rb.html +1 -1
  242. data/doc/lib/Message_rb.html +1 -1
  243. data/doc/lib/ProjectFileParser_rb.html +4 -8
  244. data/doc/lib/ProjectFileScanner_rb.html +67 -0
  245. data/doc/lib/Project_rb.html +2 -2
  246. data/doc/lib/PropertyList_rb.html +2 -2
  247. data/doc/lib/PropertySet_rb.html +2 -2
  248. data/doc/lib/PropertyTreeNode_rb.html +2 -2
  249. data/doc/lib/Query_rb.html +2 -2
  250. data/doc/lib/RTFHandlers_rb.html +73 -0
  251. data/doc/lib/RTFNavigator_rb.html +1 -1
  252. data/doc/lib/RTFQuery_rb.html +1 -1
  253. data/doc/lib/RTFReportLink_rb.html +71 -0
  254. data/doc/lib/RTFReport_rb.html +2 -2
  255. data/doc/lib/RealFormat_rb.html +1 -1
  256. data/doc/lib/ResourceScenario_rb.html +2 -2
  257. data/doc/lib/Resource_rb.html +2 -2
  258. data/doc/lib/RichTextDocument_rb.html +1 -1
  259. data/doc/lib/RichTextElement_rb.html +2 -2
  260. data/doc/lib/RichTextFunctionExample_rb.html +1 -1
  261. data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
  262. data/doc/lib/RichTextParser_rb.html +2 -2
  263. data/doc/lib/RichTextScanner_rb.html +2 -2
  264. data/doc/lib/RichTextSnip_rb.html +1 -1
  265. data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
  266. data/doc/lib/RichText_rb.html +1 -1
  267. data/doc/lib/RuntimeConfig_rb.html +1 -1
  268. data/doc/lib/ScenarioData_rb.html +2 -2
  269. data/doc/lib/Scenario_rb.html +1 -1
  270. data/doc/lib/Scoreboard_rb.html +1 -1
  271. data/doc/lib/SheetHandlerBase_rb.html +1 -1
  272. data/doc/lib/SheetReceiver_rb.html +2 -2
  273. data/doc/lib/SheetSender_rb.html +4 -2
  274. data/doc/lib/ShiftAssignments_rb.html +4 -2
  275. data/doc/lib/ShiftScenario_rb.html +1 -1
  276. data/doc/lib/Shift_rb.html +1 -1
  277. data/doc/lib/SourceFileInfo_rb.html +1 -1
  278. data/doc/lib/StatusSheetReceiver_rb.html +2 -2
  279. data/doc/lib/StatusSheetSender_rb.html +2 -2
  280. data/doc/lib/SyntaxReference_rb.html +1 -1
  281. data/doc/lib/TOCEntry_rb.html +1 -1
  282. data/doc/lib/TableColumnDefinition_rb.html +2 -2
  283. data/doc/lib/TableOfContents_rb.html +1 -1
  284. data/doc/lib/TaskDependency_rb.html +1 -1
  285. data/doc/lib/TaskJuggler_rb.html +2 -2
  286. data/doc/lib/TaskScenario_rb.html +2 -2
  287. data/doc/lib/Task_rb.html +2 -2
  288. data/doc/lib/TextFormatter_rb.html +1 -1
  289. data/doc/lib/TextParser/Pattern_rb.html +1 -1
  290. data/doc/lib/TextParser/Rule_rb.html +2 -2
  291. data/doc/lib/TextParser/StackElement_rb.html +2 -2
  292. data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
  293. data/doc/lib/TextParser_rb.html +2 -2
  294. data/doc/lib/TextScanner_rb.html +6 -2
  295. data/doc/lib/TimeSheetReceiver_rb.html +2 -2
  296. data/doc/lib/TimeSheetSender_rb.html +2 -2
  297. data/doc/lib/TimeSheetSummary_rb.html +2 -2
  298. data/doc/lib/TimeSheets_rb.html +2 -2
  299. data/doc/lib/Tj3AppBase_rb.html +2 -2
  300. data/doc/lib/Tj3Config_rb.html +2 -2
  301. data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
  302. data/doc/lib/TjException_rb.html +1 -1
  303. data/doc/lib/TjTime_rb.html +2 -2
  304. data/doc/lib/TjpExample_rb.html +1 -1
  305. data/doc/lib/TjpSyntaxRules_rb.html +2 -2
  306. data/doc/lib/URLParameter_rb.html +67 -0
  307. data/doc/lib/UTF8String_rb.html +1 -1
  308. data/doc/lib/UserManual_rb.html +1 -1
  309. data/doc/lib/WorkingHours_rb.html +1 -1
  310. data/doc/lib/XMLDocument_rb.html +2 -2
  311. data/doc/lib/XMLElement_rb.html +1 -1
  312. data/doc/lib/daemon/Daemon_rb.html +1 -1
  313. data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
  314. data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
  315. data/doc/lib/daemon/ProjectServer_rb.html +2 -2
  316. data/doc/lib/daemon/ReportServer_rb.html +2 -2
  317. data/doc/lib/daemon/WebServer_rb.html +75 -0
  318. data/doc/lib/deep_copy_rb.html +2 -2
  319. data/doc/lib/reports/CSVFile_rb.html +2 -2
  320. data/doc/lib/reports/ColumnTable_rb.html +1 -1
  321. data/doc/lib/reports/GanttChart_rb.html +2 -2
  322. data/doc/lib/reports/GanttContainer_rb.html +1 -1
  323. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  324. data/doc/lib/reports/GanttHeader_rb.html +1 -1
  325. data/doc/lib/reports/GanttLine_rb.html +1 -1
  326. data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
  327. data/doc/lib/reports/GanttMilestone_rb.html +1 -1
  328. data/doc/lib/reports/GanttRouter_rb.html +1 -1
  329. data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
  330. data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
  331. data/doc/lib/reports/Navigator_rb.html +2 -2
  332. data/doc/lib/reports/NikuReport_rb.html +2 -2
  333. data/doc/lib/reports/ReportBase_rb.html +2 -2
  334. data/doc/lib/reports/ReportContext_rb.html +2 -2
  335. data/doc/lib/reports/ReportTableCell_rb.html +2 -2
  336. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  337. data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
  338. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  339. data/doc/lib/reports/ReportTable_rb.html +2 -2
  340. data/doc/lib/reports/Report_rb.html +2 -2
  341. data/doc/lib/reports/ResourceListRE_rb.html +2 -2
  342. data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
  343. data/doc/lib/reports/TableReport_rb.html +2 -2
  344. data/doc/lib/reports/TaskListRE_rb.html +2 -2
  345. data/doc/lib/reports/TextReport_rb.html +1 -1
  346. data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
  347. data/doc/lib/reports/TjpExportRE_rb.html +2 -2
  348. data/doc/lib/ruby-signal-bug_rb.html +1 -1
  349. data/doc/lib/taskjuggler3_rb.html +2 -2
  350. data/doc/lib/tj3client_rb.html +2 -2
  351. data/doc/lib/tj3d_rb.html +2 -2
  352. data/doc/lib/tj3man_rb.html +1 -1
  353. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  354. data/doc/lib/tj3ss_sender_rb.html +2 -2
  355. data/doc/lib/tj3ts_receiver_rb.html +2 -2
  356. data/doc/lib/tj3ts_sender_rb.html +1 -1
  357. data/doc/lib/tj3ts_summary_rb.html +1 -1
  358. data/doc/rdoc.css +9 -4
  359. data/examples/tutorial.tjp +17 -15
  360. data/gem_spec.rb +3 -0
  361. data/lib/AppConfig.rb +3 -1
  362. data/lib/Attributes.rb +10 -8
  363. data/lib/Journal.rb +55 -20
  364. data/lib/Limits.rb +72 -46
  365. data/lib/LogFile.rb +3 -3
  366. data/lib/LogicalFunction.rb +19 -6
  367. data/lib/LogicalOperation.rb +5 -1
  368. data/lib/Project.rb +37 -9
  369. data/lib/ProjectFileParser.rb +25 -22
  370. data/lib/ProjectFileScanner.rb +365 -0
  371. data/lib/PropertyList.rb +2 -1
  372. data/lib/PropertySet.rb +14 -4
  373. data/lib/PropertyTreeNode.rb +42 -29
  374. data/lib/Query.rb +3 -1
  375. data/lib/RTFHandlers.rb +35 -0
  376. data/lib/RTFReport.rb +23 -6
  377. data/lib/RTFReportLink.rb +72 -0
  378. data/lib/Resource.rb +8 -16
  379. data/lib/ResourceScenario.rb +1 -22
  380. data/lib/RichTextElement.rb +42 -0
  381. data/lib/RichTextParser.rb +6 -4
  382. data/lib/RichTextScanner.rb +5 -5
  383. data/lib/RichTextSyntaxRules.rb +48 -10
  384. data/lib/ScenarioData.rb +5 -3
  385. data/lib/SheetReceiver.rb +24 -6
  386. data/lib/SheetSender.rb +17 -13
  387. data/lib/ShiftAssignments.rb +56 -52
  388. data/lib/StatusSheetReceiver.rb +1 -0
  389. data/lib/StatusSheetSender.rb +1 -0
  390. data/lib/TableColumnDefinition.rb +4 -2
  391. data/lib/Task.rb +8 -9
  392. data/lib/TaskJuggler.rb +21 -11
  393. data/lib/TaskScenario.rb +61 -26
  394. data/lib/TextParser.rb +268 -106
  395. data/lib/TextParser/Rule.rb +4 -2
  396. data/lib/TextParser/StackElement.rb +6 -4
  397. data/lib/TextScanner.rb +283 -700
  398. data/lib/TimeSheetReceiver.rb +1 -0
  399. data/lib/TimeSheetSender.rb +1 -0
  400. data/lib/TimeSheetSummary.rb +51 -26
  401. data/lib/TimeSheets.rb +1 -1
  402. data/lib/Tj3AppBase.rb +8 -1
  403. data/lib/Tj3Config.rb +1 -1
  404. data/lib/TjTime.rb +5 -0
  405. data/lib/TjpSyntaxRules.rb +360 -144
  406. data/lib/URLParameter.rb +30 -0
  407. data/lib/XMLDocument.rb +2 -2
  408. data/lib/daemon/ProcessIntercom.rb +50 -9
  409. data/lib/daemon/ProjectBroker.rb +63 -10
  410. data/lib/daemon/ProjectServer.rb +47 -16
  411. data/lib/daemon/ReportServer.rb +9 -4
  412. data/lib/daemon/WebServer.rb +204 -0
  413. data/lib/deep_copy.rb +4 -1
  414. data/lib/reports/CSVFile.rb +150 -66
  415. data/lib/reports/GanttChart.rb +2 -1
  416. data/lib/reports/Navigator.rb +18 -5
  417. data/lib/reports/NikuReport.rb +32 -2
  418. data/lib/reports/Report.rb +65 -37
  419. data/lib/reports/ReportBase.rb +14 -9
  420. data/lib/reports/ReportContext.rb +19 -4
  421. data/lib/reports/ReportTable.rb +2 -2
  422. data/lib/reports/ReportTableCell.rb +54 -30
  423. data/lib/reports/ResourceListRE.rb +4 -3
  424. data/lib/reports/StatusSheetReport.rb +8 -13
  425. data/lib/reports/TableReport.rb +47 -32
  426. data/lib/reports/TaskListRE.rb +3 -3
  427. data/lib/reports/TimeSheetReport.rb +14 -5
  428. data/lib/reports/TjpExportRE.rb +14 -19
  429. data/lib/taskjuggler3.rb +15 -0
  430. data/lib/tj3client.rb +9 -7
  431. data/lib/tj3d.rb +38 -10
  432. data/lib/tj3ss_sender.rb +7 -0
  433. data/lib/tj3ts_receiver.rb +1 -0
  434. data/manual/Day_To_Day_Juggling +1 -1
  435. data/manual/Rich_Text_Attributes +8 -0
  436. data/manual/TaskJuggler_2x_Migration +7 -0
  437. data/manual/The_TaskJuggler_Syntax +20 -6
  438. data/prj_cfg.rb +3 -2
  439. data/tasks/changelog.rake +36 -0
  440. data/tasks/csts.rake +2 -3
  441. data/tasks/gem.rake +10 -0
  442. data/tasks/missing.rake +0 -17
  443. data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
  444. data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
  445. data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
  446. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
  447. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
  448. data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
  449. data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
  450. data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
  451. data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
  452. data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
  453. data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
  454. data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
  455. data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
  456. data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
  457. data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
  458. data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
  459. data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
  460. data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
  461. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
  462. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
  463. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
  464. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
  465. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
  466. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
  467. data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
  468. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
  469. data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
  470. data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
  471. data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
  472. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
  473. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
  474. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
  475. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
  476. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
  477. data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
  478. data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
  479. data/test/TestSuite/StatusSheets/run +3 -2
  480. data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
  481. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
  482. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
  483. data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
  484. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
  485. data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
  486. data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
  487. data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
  488. data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
  489. data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
  490. data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
  491. data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
  492. data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
  493. data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
  494. data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
  495. data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
  496. data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
  497. data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
  498. data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
  499. data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
  500. data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
  501. data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
  502. data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
  503. data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
  504. data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
  505. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  506. data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
  507. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
  508. data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
  509. data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
  510. data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
  511. data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
  512. data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
  513. data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
  514. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  515. data/test/TestSuite/TimeSheets/run +5 -5
  516. data/test/test_CSVFile.rb +75 -0
  517. data/test/test_Limits.rb +63 -5
  518. data/test/test_ProjectFileScanner.rb +163 -0
  519. data/test/test_ReportGenerator.rb +81 -0
  520. data/test/test_RichText.rb +21 -3
  521. data/test/test_Scheduler.rb +1 -1
  522. data/test/test_ShiftAssignments.rb +4 -4
  523. data/test/test_Syntax.rb +1 -1
  524. data/test/test_URLParameter.rb +30 -0
  525. metadata +126 -32
  526. data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
  527. data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
  528. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
  529. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
  530. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
  531. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
  532. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
  533. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
  534. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
  535. data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
  536. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
  537. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
  538. data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
  539. data/test/TestSuite/TimeSheets/receiver.log +0 -102
  540. data/test/TestSuite/TimeSheets/sender.log +0 -794
  541. data/test/TestSuite/TimeSheets/summary.log +0 -884
  542. data/test/TestSuite/TimeSheets/timesheets.log +0 -45
  543. data/test/TestSuite/TimeSheets/tj3d.log +0 -292
  544. data/test/test_TextScanner.rb +0 -95
@@ -62,11 +62,11 @@
62
62
  <h3 class="section-header">Methods</h3>
63
63
  <ul class="link-list">
64
64
 
65
- <li><a href="#M001566">#connect</a></li>
65
+ <li><a href="#method-i-connect">#connect</a></li>
66
66
 
67
- <li><a href="#M001567">#disconnect</a></li>
67
+ <li><a href="#method-i-disconnect">#disconnect</a></li>
68
68
 
69
- <li><a href="#M001565">#terminate</a></li>
69
+ <li><a href="#method-i-terminate">#terminate</a></li>
70
70
 
71
71
  </ul>
72
72
  </div>
@@ -83,6 +83,8 @@
83
83
  <h3 class="section-header">Files</h3>
84
84
  <ul>
85
85
 
86
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
87
+
86
88
  <li class="file"><a href="../COPYING.html">COPYING</a></li>
87
89
 
88
90
  <li class="file"><a href="../README.html">README</a></li>
@@ -252,6 +254,8 @@
252
254
 
253
255
  <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
254
256
 
257
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
258
+
255
259
  <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
256
260
 
257
261
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -266,6 +270,8 @@
266
270
 
267
271
  <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
268
272
 
273
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
274
+
269
275
  <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
270
276
 
271
277
  <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -282,12 +288,16 @@
282
288
 
283
289
  <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
284
290
 
291
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
292
+
285
293
  <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
286
294
 
287
295
  <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
288
296
 
289
297
  <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
290
298
 
299
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
300
+
291
301
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
292
302
 
293
303
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -306,6 +316,8 @@
306
316
 
307
317
  <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
308
318
 
319
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
320
+
309
321
  <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
310
322
 
311
323
  <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -434,6 +446,8 @@
434
446
 
435
447
  <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
436
448
 
449
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
450
+
437
451
  <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
438
452
 
439
453
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -478,8 +492,12 @@
478
492
 
479
493
  <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
480
494
 
495
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
496
+
481
497
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
482
498
 
499
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
500
+
483
501
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
484
502
 
485
503
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -506,6 +524,8 @@
506
524
 
507
525
  <li><a href="../String.html">String</a></li>
508
526
 
527
+ <li><a href="../StringIO.html">StringIO</a></li>
528
+
509
529
  </ul>
510
530
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
511
531
  </div>
@@ -534,7 +554,7 @@
534
554
 
535
555
 
536
556
  <div id="connect-method" class="method-detail ">
537
- <a name="M001566"></a>
557
+ <a name="method-i-connect"></a>
538
558
 
539
559
  <div class="method-heading">
540
560
 
@@ -570,7 +590,7 @@
570
590
 
571
591
 
572
592
  <div id="disconnect-method" class="method-detail ">
573
- <a name="M001567"></a>
593
+ <a name="method-i-disconnect"></a>
574
594
 
575
595
  <div class="method-heading">
576
596
 
@@ -606,7 +626,7 @@
606
626
 
607
627
 
608
628
  <div id="terminate-method" class="method-detail ">
609
- <a name="M001565"></a>
629
+ <a name="method-i-terminate"></a>
610
630
 
611
631
  <div class="method-heading">
612
632
 
@@ -69,87 +69,87 @@
69
69
  <h3 class="section-header">Methods</h3>
70
70
  <ul class="link-list">
71
71
 
72
- <li><a href="#M001297">::maxScheduleGranularity</a></li>
72
+ <li><a href="#method-c-maxScheduleGranularity">::maxScheduleGranularity</a></li>
73
73
 
74
- <li><a href="#M001258">::new</a></li>
74
+ <li><a href="#method-c-new">::new</a></li>
75
75
 
76
- <li><a href="#M001261">#[]</a></li>
76
+ <li><a href="#method-i-%5B%5D">#[]</a></li>
77
77
 
78
- <li><a href="#M001262">#[]=</a></li>
78
+ <li><a href="#method-i-%5B%5D%3D">#[]=</a></li>
79
79
 
80
- <li><a href="#M001276">#account</a></li>
80
+ <li><a href="#method-i-account">#account</a></li>
81
81
 
82
- <li><a href="#M001267">#alertLevelColor</a></li>
82
+ <li><a href="#method-i-alertLevelColor">#alertLevelColor</a></li>
83
83
 
84
- <li><a href="#M001265">#alertLevelId</a></li>
84
+ <li><a href="#method-i-alertLevelId">#alertLevelId</a></li>
85
85
 
86
- <li><a href="#M001264">#alertLevelIndex</a></li>
86
+ <li><a href="#method-i-alertLevelIndex">#alertLevelIndex</a></li>
87
87
 
88
- <li><a href="#M001266">#alertLevelName</a></li>
88
+ <li><a href="#method-i-alertLevelName">#alertLevelName</a></li>
89
89
 
90
- <li><a href="#M001298">#attributeName</a></li>
90
+ <li><a href="#method-i-attributeName">#attributeName</a></li>
91
91
 
92
- <li><a href="#M001285">#checkTimeSheets</a></li>
92
+ <li><a href="#method-i-checkTimeSheets">#checkTimeSheets</a></li>
93
93
 
94
- <li><a href="#M001293">#convertToDailyLoad</a></li>
94
+ <li><a href="#method-i-convertToDailyLoad">#convertToDailyLoad</a></li>
95
95
 
96
- <li><a href="#M001268">#dailyWorkingHours</a></li>
96
+ <li><a href="#method-i-dailyWorkingHours">#dailyWorkingHours</a></li>
97
97
 
98
- <li><a href="#M001296">#dateToIdx</a></li>
98
+ <li><a href="#method-i-dateToIdx">#dateToIdx</a></li>
99
99
 
100
- <li><a href="#M001259">#deep_clone</a></li>
100
+ <li><a href="#method-i-deep_clone">#deep_clone</a></li>
101
101
 
102
- <li><a href="#M001300">#error</a></li>
102
+ <li><a href="#method-i-error">#error</a></li>
103
103
 
104
- <li><a href="#M001302">#finishScenario</a></li>
104
+ <li><a href="#method-i-finishScenario">#finishScenario</a></li>
105
105
 
106
- <li><a href="#M001283">#generateReport</a></li>
106
+ <li><a href="#method-i-generateReport">#generateReport</a></li>
107
107
 
108
- <li><a href="#M001282">#generateReports</a></li>
108
+ <li><a href="#method-i-generateReports">#generateReports</a></li>
109
109
 
110
- <li><a href="#M001295">#idxToDate</a></li>
110
+ <li><a href="#method-i-idxToDate">#idxToDate</a></li>
111
111
 
112
- <li><a href="#M001292">#isWorkingTime</a></li>
112
+ <li><a href="#method-i-isWorkingTime">#isWorkingTime</a></li>
113
113
 
114
- <li><a href="#M001284">#listReports</a></li>
114
+ <li><a href="#method-i-listReports">#listReports</a></li>
115
115
 
116
- <li><a href="#M001304">#matchingReports</a></li>
116
+ <li><a href="#method-i-matchingReports">#matchingReports</a></li>
117
117
 
118
- <li><a href="#M001270">#monthlyWorkingDays</a></li>
118
+ <li><a href="#method-i-monthlyWorkingDays">#monthlyWorkingDays</a></li>
119
119
 
120
- <li><a href="#M001301">#prepareScenario</a></li>
120
+ <li><a href="#method-i-prepareScenario">#prepareScenario</a></li>
121
121
 
122
- <li><a href="#M001279">#report</a></li>
122
+ <li><a href="#method-i-report">#report</a></li>
123
123
 
124
- <li><a href="#M001280">#reportByName</a></li>
124
+ <li><a href="#method-i-reportByName">#reportByName</a></li>
125
125
 
126
- <li><a href="#M001278">#resource</a></li>
126
+ <li><a href="#method-i-resource">#resource</a></li>
127
127
 
128
- <li><a href="#M001273">#scenario</a></li>
128
+ <li><a href="#method-i-scenario">#scenario</a></li>
129
129
 
130
- <li><a href="#M001263">#scenarioCount</a></li>
130
+ <li><a href="#method-i-scenarioCount">#scenarioCount</a></li>
131
131
 
132
- <li><a href="#M001274">#scenarioIdx</a></li>
132
+ <li><a href="#method-i-scenarioIdx">#scenarioIdx</a></li>
133
133
 
134
- <li><a href="#M001281">#schedule</a></li>
134
+ <li><a href="#method-i-schedule">#schedule</a></li>
135
135
 
136
- <li><a href="#M001303">#scheduleScenario</a></li>
136
+ <li><a href="#method-i-scheduleScenario">#scheduleScenario</a></li>
137
137
 
138
- <li><a href="#M001294">#scoreboardSize</a></li>
138
+ <li><a href="#method-i-scoreboardSize">#scoreboardSize</a></li>
139
139
 
140
- <li><a href="#M001260">#sendMessage</a></li>
140
+ <li><a href="#method-i-sendMessage">#sendMessage</a></li>
141
141
 
142
- <li><a href="#M001275">#shift</a></li>
142
+ <li><a href="#method-i-shift">#shift</a></li>
143
143
 
144
- <li><a href="#M001272">#slotsToDays</a></li>
144
+ <li><a href="#method-i-slotsToDays">#slotsToDays</a></li>
145
145
 
146
- <li><a href="#M001277">#task</a></li>
146
+ <li><a href="#method-i-task">#task</a></li>
147
147
 
148
- <li><a href="#M001299">#to_s</a></li>
148
+ <li><a href="#method-i-to_s">#to_s</a></li>
149
149
 
150
- <li><a href="#M001269">#weeklyWorkingDays</a></li>
150
+ <li><a href="#method-i-weeklyWorkingDays">#weeklyWorkingDays</a></li>
151
151
 
152
- <li><a href="#M001271">#yearlyWorkingDays</a></li>
152
+ <li><a href="#method-i-yearlyWorkingDays">#yearlyWorkingDays</a></li>
153
153
 
154
154
  </ul>
155
155
  </div>
@@ -166,6 +166,8 @@
166
166
  <h3 class="section-header">Files</h3>
167
167
  <ul>
168
168
 
169
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
170
+
169
171
  <li class="file"><a href="../COPYING.html">COPYING</a></li>
170
172
 
171
173
  <li class="file"><a href="../README.html">README</a></li>
@@ -335,6 +337,8 @@
335
337
 
336
338
  <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
337
339
 
340
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
341
+
338
342
  <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
339
343
 
340
344
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -349,6 +353,8 @@
349
353
 
350
354
  <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
351
355
 
356
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
357
+
352
358
  <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
353
359
 
354
360
  <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -365,12 +371,16 @@
365
371
 
366
372
  <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
367
373
 
374
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
375
+
368
376
  <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
369
377
 
370
378
  <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
371
379
 
372
380
  <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
373
381
 
382
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
383
+
374
384
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
375
385
 
376
386
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -389,6 +399,8 @@
389
399
 
390
400
  <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
391
401
 
402
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
403
+
392
404
  <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
393
405
 
394
406
  <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -517,6 +529,8 @@
517
529
 
518
530
  <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
519
531
 
532
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
533
+
520
534
  <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
521
535
 
522
536
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -561,8 +575,12 @@
561
575
 
562
576
  <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
563
577
 
578
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
579
+
564
580
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
565
581
 
582
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
583
+
566
584
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
567
585
 
568
586
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -589,6 +607,8 @@
589
607
 
590
608
  <li><a href="../String.html">String</a></li>
591
609
 
610
+ <li><a href="../StringIO.html">StringIO</a></li>
611
+
592
612
  </ul>
593
613
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
594
614
  </div>
@@ -751,13 +771,13 @@ list of known Attributes.
751
771
  </div>
752
772
  </div>
753
773
 
754
- <div id="report-ontext-attribute-method" class="method-detail">
755
- <a name="reportContext"></a>
774
+ <div id="report-ontexts-attribute-method" class="method-detail">
775
+ <a name="reportContexts"></a>
756
776
 
757
- <a name="reportContext="></a>
777
+ <a name="reportContexts="></a>
758
778
 
759
779
  <div class="method-heading attribute-method-heading">
760
- <span class="method-name">reportContext</span><span
780
+ <span class="method-name">reportContexts</span><span
761
781
  class="attribute-access-type">[RW]</span>
762
782
  </div>
763
783
 
@@ -812,7 +832,7 @@ list of known Attributes.
812
832
 
813
833
 
814
834
  <div id="max-chedule-ranularity-method" class="method-detail ">
815
- <a name="M001297"></a>
835
+ <a name="method-c-maxScheduleGranularity"></a>
816
836
 
817
837
  <div class="method-heading">
818
838
 
@@ -836,24 +856,24 @@ granularity is reduced.
836
856
  <div class="method-source-code"
837
857
  id="max-chedule-ranularity-source">
838
858
  <pre>
839
- <span class="ruby-comment cmt"># File lib/Project.rb, line 791</span>
840
- 791: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
841
- 792: <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>)
842
- 793: <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>)
843
- 794: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
844
- 795: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
845
- 796: <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
846
- 797: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
847
- 798: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
848
- 799: <span class="ruby-value">30</span> * <span class="ruby-value">60</span>
849
- 800: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
850
- 801: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
851
- 802: <span class="ruby-comment cmt"># minutes</span>
852
- 803: <span class="ruby-value">15</span> * <span class="ruby-value">60</span>
853
- 804: <span class="ruby-keyword kw">else</span>
854
- 805: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
855
- 806: <span class="ruby-keyword kw">end</span>
856
- 807: <span class="ruby-keyword kw">end</span></pre>
859
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 819</span>
860
+ 819: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
861
+ 820: <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>)
862
+ 821: <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>)
863
+ 822: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
864
+ 823: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
865
+ 824: <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
866
+ 825: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
867
+ 826: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
868
+ 827: <span class="ruby-value">30</span> * <span class="ruby-value">60</span>
869
+ 828: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
870
+ 829: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
871
+ 830: <span class="ruby-comment cmt"># minutes</span>
872
+ 831: <span class="ruby-value">15</span> * <span class="ruby-value">60</span>
873
+ 832: <span class="ruby-keyword kw">else</span>
874
+ 833: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
875
+ 834: <span class="ruby-keyword kw">end</span>
876
+ 835: <span class="ruby-keyword kw">end</span></pre>
857
877
  </div>
858
878
 
859
879
  </div>
@@ -865,7 +885,7 @@ granularity is reduced.
865
885
 
866
886
 
867
887
  <div id="new-method" class="method-detail ">
868
- <a name="M001258"></a>
888
+ <a name="method-c-new"></a>
869
889
 
870
890
  <div class="method-heading">
871
891
 
@@ -1170,68 +1190,76 @@ The constructor will set default values for all project attributes.
1170
1190
  335: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1171
1191
  336: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1172
1192
  337: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1173
- 338: [ <span class="ruby-value str">'left'</span>, <span class="ruby-value str">'Left'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1174
- 339: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1175
- 340: [ <span class="ruby-value str">'loadUnit'</span>, <span class="ruby-value str">'Load Unit'</span>, <span class="ruby-constant">StringAttribute</span>,
1176
- 341: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1177
- 342: [ <span class="ruby-value str">'now'</span>, <span class="ruby-value str">'Now'</span>, <span class="ruby-constant">DateAttribute</span>,
1193
+ 338: [ <span class="ruby-value str">'interactive'</span>, <span class="ruby-value str">'Interactive'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1194
+ 339: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1195
+ 340: [ <span class="ruby-value str">'left'</span>, <span class="ruby-value str">'Left'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1196
+ 341: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1197
+ 342: [ <span class="ruby-value str">'loadUnit'</span>, <span class="ruby-value str">'Load Unit'</span>, <span class="ruby-constant">StringAttribute</span>,
1178
1198
  343: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1179
- 344: [ <span class="ruby-value str">'numberFormat'</span>, <span class="ruby-value str">'Number Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1199
+ 344: [ <span class="ruby-value str">'now'</span>, <span class="ruby-value str">'Now'</span>, <span class="ruby-constant">DateAttribute</span>,
1180
1200
  345: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1181
- 346: [ <span class="ruby-value str">'prolog'</span>, <span class="ruby-value str">'Prolog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1182
- 347: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span>],
1183
- 348: [ <span class="ruby-value str">'resourceAttributes'</span>, <span class="ruby-value str">'Resource Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1184
- 349: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1185
- 350: [ <span class="ruby-value str">'resourceRoot'</span>, <span class="ruby-value str">'resource Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1186
- 351: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1187
- 352: [ <span class="ruby-value str">'revenueAccount'</span>, <span class="ruby-value str">'Revenue Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1188
- 353: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1189
- 354: [ <span class="ruby-value str">'right'</span>, <span class="ruby-value str">'Right'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1201
+ 346: [ <span class="ruby-value str">'numberFormat'</span>, <span class="ruby-value str">'Number Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1202
+ 347: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1203
+ 348: [ <span class="ruby-value str">'openNodes'</span>, <span class="ruby-value str">'Open Nodes'</span>, <span class="ruby-constant">NodeListAttribute</span>,
1204
+ 349: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1205
+ 350: [ <span class="ruby-value str">'prolog'</span>, <span class="ruby-value str">'Prolog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1206
+ 351: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span>],
1207
+ 352: [ <span class="ruby-value str">'resourceAttributes'</span>, <span class="ruby-value str">'Resource Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1208
+ 353: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1209
+ 354: [ <span class="ruby-value str">'resourceRoot'</span>, <span class="ruby-value str">'resource Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1190
1210
  355: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1191
- 356: [ <span class="ruby-value str">'rollupResource'</span>, <span class="ruby-value str">'Rollup Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1192
- 357: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1193
- 358: [ <span class="ruby-value str">'rollupTask'</span>, <span class="ruby-value str">'Rollup Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1194
- 359: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1195
- 360: [ <span class="ruby-value str">'scenarios'</span>, <span class="ruby-value str">'Scenarios'</span>, <span class="ruby-constant">ScenarioListAttribute</span>,
1196
- 361: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [ <span class="ruby-value">0</span> ] ],
1197
- 362: [ <span class="ruby-value str">'selfcontained'</span>, <span class="ruby-value str">'Selfcontained'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1198
- 363: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1199
- 364: [ <span class="ruby-value str">'shortTimeFormat'</span>, <span class="ruby-value str">'Short Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1200
- 365: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1201
- 366: [ <span class="ruby-value str">'sortResources'</span>, <span class="ruby-value str">'Sort Resources'</span>, <span class="ruby-constant">SortListAttribute</span>,
1202
- 367: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1203
- 368: [ <span class="ruby-value str">'sortTasks'</span>, <span class="ruby-value str">'Sort Tasks'</span>, <span class="ruby-constant">SortListAttribute</span>,
1204
- 369: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1205
- 370: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1206
- 371: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1207
- 372: [ <span class="ruby-value str">'taskAttributes'</span>, <span class="ruby-value str">'Task Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1208
- 373: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1209
- 374: [ <span class="ruby-value str">'taskRoot'</span>, <span class="ruby-value str">'Task Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1210
- 375: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1211
- 376: [ <span class="ruby-value str">'timeFormat'</span>, <span class="ruby-value str">'Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1212
- 377: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1213
- 378: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1214
- 379: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1215
- 380: [ <span class="ruby-value str">'title'</span>, <span class="ruby-value str">'Title'</span>, <span class="ruby-constant">StringAttribute</span>,
1216
- 381: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1217
- 382: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1218
- 383: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1219
- 384: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1220
- 385: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1221
- 386: [ <span class="ruby-value str">'weekStartsMonday'</span>, <span class="ruby-value str">'Week Starts Monday'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1222
- 387: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
1223
- 388: ]
1224
- 389: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1225
- 390:
1226
- 391: <span class="ruby-constant">Scenario</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'plan'</span>, <span class="ruby-value str">'Plan Scenario'</span>, <span class="ruby-keyword kw">nil</span>)
1227
- 392:
1228
- 393: <span class="ruby-ivar">@timeSheets</span> = <span class="ruby-constant">TimeSheets</span>.<span class="ruby-identifier">new</span>
1211
+ 356: [ <span class="ruby-value str">'revenueAccount'</span>, <span class="ruby-value str">'Revenue Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1212
+ 357: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1213
+ 358: [ <span class="ruby-value str">'right'</span>, <span class="ruby-value str">'Right'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1214
+ 359: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1215
+ 360: [ <span class="ruby-value str">'rollupResource'</span>, <span class="ruby-value str">'Rollup Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1216
+ 361: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1217
+ 362: [ <span class="ruby-value str">'rollupTask'</span>, <span class="ruby-value str">'Rollup Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1218
+ 363: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1219
+ 364: [ <span class="ruby-value str">'scenarios'</span>, <span class="ruby-value str">'Scenarios'</span>, <span class="ruby-constant">ScenarioListAttribute</span>,
1220
+ 365: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [ <span class="ruby-value">0</span> ] ],
1221
+ 366: [ <span class="ruby-value str">'selfcontained'</span>, <span class="ruby-value str">'Selfcontained'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1222
+ 367: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1223
+ 368: [ <span class="ruby-value str">'shortTimeFormat'</span>, <span class="ruby-value str">'Short Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1224
+ 369: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1225
+ 370: [ <span class="ruby-value str">'sortResources'</span>, <span class="ruby-value str">'Sort Resources'</span>, <span class="ruby-constant">SortListAttribute</span>,
1226
+ 371: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1227
+ 372: [ <span class="ruby-value str">'sortTasks'</span>, <span class="ruby-value str">'Sort Tasks'</span>, <span class="ruby-constant">SortListAttribute</span>,
1228
+ 373: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1229
+ 374: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1230
+ 375: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1231
+ 376: [ <span class="ruby-value str">'taskAttributes'</span>, <span class="ruby-value str">'Task Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1232
+ 377: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1233
+ 378: [ <span class="ruby-value str">'taskRoot'</span>, <span class="ruby-value str">'Task Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1234
+ 379: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1235
+ 380: [ <span class="ruby-value str">'timeFormat'</span>, <span class="ruby-value str">'Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1236
+ 381: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1237
+ 382: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1238
+ 383: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1239
+ 384: [ <span class="ruby-value str">'title'</span>, <span class="ruby-value str">'Title'</span>, <span class="ruby-constant">StringAttribute</span>,
1240
+ 385: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1241
+ 386: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1242
+ 387: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1243
+ 388: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1244
+ 389: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1245
+ 390: [ <span class="ruby-value str">'weekStartsMonday'</span>, <span class="ruby-value str">'Week Starts Monday'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1246
+ 391: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
1247
+ 392: ]
1248
+ 393: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1229
1249
  394:
1230
- 395: <span class="ruby-comment cmt"># This holds a reference to the ReportContext for each Thread.</span>
1231
- 396: <span class="ruby-ivar">@reportContext</span> = <span class="ruby-keyword kw">nil</span>
1232
- 397: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
1233
- 398: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
1234
- 399: <span class="ruby-keyword kw">end</span></pre>
1250
+ 395: <span class="ruby-constant">Scenario</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'plan'</span>, <span class="ruby-value str">'Plan Scenario'</span>, <span class="ruby-keyword kw">nil</span>)
1251
+ 396:
1252
+ 397: <span class="ruby-ivar">@timeSheets</span> = <span class="ruby-constant">TimeSheets</span>.<span class="ruby-identifier">new</span>
1253
+ 398:
1254
+ 399: <span class="ruby-comment cmt"># The ReportContext provides additional settings to the report that can</span>
1255
+ 400: <span class="ruby-comment cmt"># complement or replace the report attributes. Reports can include other</span>
1256
+ 401: <span class="ruby-comment cmt"># reports. During report generation, only one context is active, but the</span>
1257
+ 402: <span class="ruby-comment cmt"># context of enclosing reports needs to be preserved. Therefor we use a</span>
1258
+ 403: <span class="ruby-comment cmt"># stack to implement this.</span>
1259
+ 404: <span class="ruby-ivar">@reportContexts</span> = []
1260
+ 405: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
1261
+ 406: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
1262
+ 407: <span class="ruby-keyword kw">end</span></pre>
1235
1263
  </div>
1236
1264
 
1237
1265
  </div>
@@ -1249,7 +1277,7 @@ The constructor will set default values for all project attributes.
1249
1277
 
1250
1278
 
1251
1279
  <div id="--method" class="method-detail ">
1252
- <a name="M001261"></a>
1280
+ <a name="method-i-%5B%5D"></a>
1253
1281
 
1254
1282
  <div class="method-heading">
1255
1283
 
@@ -1272,13 +1300,13 @@ attribute.
1272
1300
  <div class="method-source-code"
1273
1301
  id="--source">
1274
1302
  <pre>
1275
- <span class="ruby-comment cmt"># File lib/Project.rb, line 414</span>
1276
- 414: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
1277
- 415: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1278
- 416: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1279
- 417: <span class="ruby-keyword kw">end</span>
1280
- 418: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>]
1281
- 419: <span class="ruby-keyword kw">end</span></pre>
1303
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 422</span>
1304
+ 422: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
1305
+ 423: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1306
+ 424: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1307
+ 425: <span class="ruby-keyword kw">end</span>
1308
+ 426: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>]
1309
+ 427: <span class="ruby-keyword kw">end</span></pre>
1282
1310
  </div>
1283
1311
 
1284
1312
  </div>
@@ -1290,7 +1318,7 @@ attribute.
1290
1318
 
1291
1319
 
1292
1320
  <div id="--method" class="method-detail ">
1293
- <a name="M001262"></a>
1321
+ <a name="method-i-%5B%5D%3D"></a>
1294
1322
 
1295
1323
  <div class="method-heading">
1296
1324
 
@@ -1312,13 +1340,13 @@ to <em>value</em>.
1312
1340
  <div class="method-source-code"
1313
1341
  id="--source">
1314
1342
  <pre>
1315
- <span class="ruby-comment cmt"># File lib/Project.rb, line 422</span>
1316
- 422: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
1317
- 423: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1318
- 424: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1319
- 425: <span class="ruby-keyword kw">end</span>
1320
- 426: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
1321
- 427: <span class="ruby-keyword kw">end</span></pre>
1343
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 430</span>
1344
+ 430: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
1345
+ 431: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1346
+ 432: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1347
+ 433: <span class="ruby-keyword kw">end</span>
1348
+ 434: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
1349
+ 435: <span class="ruby-keyword kw">end</span></pre>
1322
1350
  </div>
1323
1351
 
1324
1352
  </div>
@@ -1330,7 +1358,7 @@ to <em>value</em>.
1330
1358
 
1331
1359
 
1332
1360
  <div id="account-method" class="method-detail ">
1333
- <a name="M001276"></a>
1361
+ <a name="method-i-account"></a>
1334
1362
 
1335
1363
  <div class="method-heading">
1336
1364
 
@@ -1352,10 +1380,10 @@ return nil if it does not exist.
1352
1380
  <div class="method-source-code"
1353
1381
  id="account-source">
1354
1382
  <pre>
1355
- <span class="ruby-comment cmt"># File lib/Project.rb, line 530</span>
1356
- 530: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
1357
- 531: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
1358
- 532: <span class="ruby-keyword kw">end</span></pre>
1383
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 538</span>
1384
+ 538: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
1385
+ 539: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
1386
+ 540: <span class="ruby-keyword kw">end</span></pre>
1359
1387
  </div>
1360
1388
 
1361
1389
  </div>
@@ -1367,7 +1395,7 @@ return nil if it does not exist.
1367
1395
 
1368
1396
 
1369
1397
  <div id="alert-evel-olor-method" class="method-detail ">
1370
- <a name="M001267"></a>
1398
+ <a name="method-i-alertLevelColor"></a>
1371
1399
 
1372
1400
  <div class="method-heading">
1373
1401
 
@@ -1391,11 +1419,11 @@ pound sign.
1391
1419
  <div class="method-source-code"
1392
1420
  id="alert-evel-olor-source">
1393
1421
  <pre>
1394
- <span class="ruby-comment cmt"># File lib/Project.rb, line 462</span>
1395
- 462: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
1396
- 463: <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>]
1397
- 464: <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>]
1398
- 465: <span class="ruby-keyword kw">end</span></pre>
1422
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 470</span>
1423
+ 470: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
1424
+ 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>]
1425
+ 472: <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>]
1426
+ 473: <span class="ruby-keyword kw">end</span></pre>
1399
1427
  </div>
1400
1428
 
1401
1429
  </div>
@@ -1407,7 +1435,7 @@ pound sign.
1407
1435
 
1408
1436
 
1409
1437
  <div id="alert-evel-d-method" class="method-detail ">
1410
- <a name="M001265"></a>
1438
+ <a name="method-i-alertLevelId"></a>
1411
1439
 
1412
1440
  <div class="method-heading">
1413
1441
 
@@ -1429,11 +1457,11 @@ Return the ID or keyword of the alert level with the given
1429
1457
  <div class="method-source-code"
1430
1458
  id="alert-evel-d-source">
1431
1459
  <pre>
1432
- <span class="ruby-comment cmt"># File lib/Project.rb, line 447</span>
1433
- 447: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
1434
- 448: <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>]
1435
- 449: <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>]
1436
- 450: <span class="ruby-keyword kw">end</span></pre>
1460
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 455</span>
1461
+ 455: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
1462
+ 456: <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>]
1463
+ 457: <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>]
1464
+ 458: <span class="ruby-keyword kw">end</span></pre>
1437
1465
  </div>
1438
1466
 
1439
1467
  </div>
@@ -1445,7 +1473,7 @@ Return the ID or keyword of the alert level with the given
1445
1473
 
1446
1474
 
1447
1475
  <div id="alert-evel-ndex-method" class="method-detail ">
1448
- <a name="M001264"></a>
1476
+ <a name="method-i-alertLevelIndex"></a>
1449
1477
 
1450
1478
  <div class="method-heading">
1451
1479
 
@@ -1467,15 +1495,15 @@ the index of it. If no level is found, nil is returned.
1467
1495
  <div class="method-source-code"
1468
1496
  id="alert-evel-ndex-source">
1469
1497
  <pre>
1470
- <span class="ruby-comment cmt"># File lib/Project.rb, line 436</span>
1471
- 436: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
1472
- 437: <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>
1473
- 438: <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>
1474
- 439: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
1475
- 440: <span class="ruby-keyword kw">end</span>
1476
- 441: <span class="ruby-keyword kw">end</span>
1477
- 442: <span class="ruby-keyword kw">nil</span>
1478
- 443: <span class="ruby-keyword kw">end</span></pre>
1498
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 444</span>
1499
+ 444: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
1500
+ 445: <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>
1501
+ 446: <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>
1502
+ 447: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
1503
+ 448: <span class="ruby-keyword kw">end</span>
1504
+ 449: <span class="ruby-keyword kw">end</span>
1505
+ 450: <span class="ruby-keyword kw">nil</span>
1506
+ 451: <span class="ruby-keyword kw">end</span></pre>
1479
1507
  </div>
1480
1508
 
1481
1509
  </div>
@@ -1487,7 +1515,7 @@ the index of it. If no level is found, nil is returned.
1487
1515
 
1488
1516
 
1489
1517
  <div id="alert-evel-ame-method" class="method-detail ">
1490
- <a name="M001266"></a>
1518
+ <a name="method-i-alertLevelName"></a>
1491
1519
 
1492
1520
  <div class="method-heading">
1493
1521
 
@@ -1509,11 +1537,11 @@ Return the user readable name of the alert level with the given
1509
1537
  <div class="method-source-code"
1510
1538
  id="alert-evel-ame-source">
1511
1539
  <pre>
1512
- <span class="ruby-comment cmt"># File lib/Project.rb, line 454</span>
1513
- 454: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
1514
- 455: <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>]
1515
- 456: <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>]
1516
- 457: <span class="ruby-keyword kw">end</span></pre>
1540
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 462</span>
1541
+ 462: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
1542
+ 463: <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>]
1543
+ 464: <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>]
1544
+ 465: <span class="ruby-keyword kw">end</span></pre>
1517
1545
  </div>
1518
1546
 
1519
1547
  </div>
@@ -1525,7 +1553,7 @@ Return the user readable name of the alert level with the given
1525
1553
 
1526
1554
 
1527
1555
  <div id="attribute-ame-method" class="method-detail ">
1528
- <a name="M001298"></a>
1556
+ <a name="method-i-attributeName"></a>
1529
1557
 
1530
1558
  <div class="method-heading">
1531
1559
 
@@ -1548,14 +1576,14 @@ tasks over resources here.
1548
1576
  <div class="method-source-code"
1549
1577
  id="attribute-ame-source">
1550
1578
  <pre>
1551
- <span class="ruby-comment cmt"># File lib/Project.rb, line 812</span>
1552
- 812: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
1553
- 813: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
1554
- 814: <span class="ruby-comment cmt"># return it's name.</span>
1555
- 815: (<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>
1556
- 816: (<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>
1557
- 817: <span class="ruby-identifier">name</span>
1558
- 818: <span class="ruby-keyword kw">end</span></pre>
1579
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 840</span>
1580
+ 840: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
1581
+ 841: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
1582
+ 842: <span class="ruby-comment cmt"># return it's name.</span>
1583
+ 843: (<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>
1584
+ 844: (<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>
1585
+ 845: <span class="ruby-identifier">name</span>
1586
+ 846: <span class="ruby-keyword kw">end</span></pre>
1559
1587
  </div>
1560
1588
 
1561
1589
  </div>
@@ -1567,7 +1595,7 @@ tasks over resources here.
1567
1595
 
1568
1596
 
1569
1597
  <div id="check-ime-heets-method" class="method-detail ">
1570
- <a name="M001285"></a>
1598
+ <a name="method-i-checkTimeSheets"></a>
1571
1599
 
1572
1600
  <div class="method-heading">
1573
1601
 
@@ -1586,10 +1614,10 @@ tasks over resources here.
1586
1614
  <div class="method-source-code"
1587
1615
  id="check-ime-heets-source">
1588
1616
  <pre>
1589
- <span class="ruby-comment cmt"># File lib/Project.rb, line 676</span>
1590
- 676: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheets</span>
1591
- 677: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
1592
- 678: <span class="ruby-keyword kw">end</span></pre>
1617
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 704</span>
1618
+ 704: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheets</span>
1619
+ 705: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
1620
+ 706: <span class="ruby-keyword kw">end</span></pre>
1593
1621
  </div>
1594
1622
 
1595
1623
  </div>
@@ -1601,7 +1629,7 @@ tasks over resources here.
1601
1629
 
1602
1630
 
1603
1631
  <div id="convert-o-aily-oad-method" class="method-detail ">
1604
- <a name="M001293"></a>
1632
+ <a name="method-i-convertToDailyLoad"></a>
1605
1633
 
1606
1634
  <div class="method-heading">
1607
1635
 
@@ -1623,10 +1651,10 @@ setting of the global &#8216;dailyworkinghours&#8217; attribute.
1623
1651
  <div class="method-source-code"
1624
1652
  id="convert-o-aily-oad-source">
1625
1653
  <pre>
1626
- <span class="ruby-comment cmt"># File lib/Project.rb, line 746</span>
1627
- 746: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1628
- 747: <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>)
1629
- 748: <span class="ruby-keyword kw">end</span></pre>
1654
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 774</span>
1655
+ 774: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1656
+ 775: <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>)
1657
+ 776: <span class="ruby-keyword kw">end</span></pre>
1630
1658
  </div>
1631
1659
 
1632
1660
  </div>
@@ -1638,7 +1666,7 @@ setting of the global &#8216;dailyworkinghours&#8217; attribute.
1638
1666
 
1639
1667
 
1640
1668
  <div id="daily-orking-ours-method" class="method-detail ">
1641
- <a name="M001268"></a>
1669
+ <a name="method-i-dailyWorkingHours"></a>
1642
1670
 
1643
1671
  <div class="method-heading">
1644
1672
 
@@ -1660,10 +1688,10 @@ can be set to other values by the user.
1660
1688
  <div class="method-source-code"
1661
1689
  id="daily-orking-ours-source">
1662
1690
  <pre>
1663
- <span class="ruby-comment cmt"># File lib/Project.rb, line 469</span>
1664
- 469: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1665
- 470: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1666
- 471: <span class="ruby-keyword kw">end</span></pre>
1691
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 477</span>
1692
+ 477: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1693
+ 478: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1694
+ 479: <span class="ruby-keyword kw">end</span></pre>
1667
1695
  </div>
1668
1696
 
1669
1697
  </div>
@@ -1675,7 +1703,7 @@ can be set to other values by the user.
1675
1703
 
1676
1704
 
1677
1705
  <div id="date-o-dx-method" class="method-detail ">
1678
- <a name="M001296"></a>
1706
+ <a name="method-i-dateToIdx"></a>
1679
1707
 
1680
1708
  <div class="method-heading">
1681
1709
 
@@ -1699,21 +1727,21 @@ time frame.
1699
1727
  <div class="method-source-code"
1700
1728
  id="date-o-dx-source">
1701
1729
  <pre>
1702
- <span class="ruby-comment cmt"># File lib/Project.rb, line 772</span>
1703
- 772: <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>)
1704
- 773: <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>])
1705
- 774: <span class="ruby-comment cmt"># Date is out of range.</span>
1706
- 775: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
1707
- 776: <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>]
1708
- 777: <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>]
1709
- 778: <span class="ruby-keyword kw">else</span>
1710
- 779: <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>
1711
- 780: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
1712
- 781: <span class="ruby-keyword kw">end</span>
1713
- 782: <span class="ruby-keyword kw">end</span>
1714
- 783: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
1715
- 784: ((<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>
1716
- 785: <span class="ruby-keyword kw">end</span></pre>
1730
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 800</span>
1731
+ 800: <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>)
1732
+ 801: <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>])
1733
+ 802: <span class="ruby-comment cmt"># Date is out of range.</span>
1734
+ 803: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
1735
+ 804: <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>]
1736
+ 805: <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>]
1737
+ 806: <span class="ruby-keyword kw">else</span>
1738
+ 807: <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>
1739
+ 808: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
1740
+ 809: <span class="ruby-keyword kw">end</span>
1741
+ 810: <span class="ruby-keyword kw">end</span>
1742
+ 811: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
1743
+ 812: ((<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>
1744
+ 813: <span class="ruby-keyword kw">end</span></pre>
1717
1745
  </div>
1718
1746
 
1719
1747
  </div>
@@ -1725,7 +1753,7 @@ time frame.
1725
1753
 
1726
1754
 
1727
1755
  <div id="deep-clone-method" class="method-detail ">
1728
- <a name="M001259"></a>
1756
+ <a name="method-i-deep_clone"></a>
1729
1757
 
1730
1758
  <div class="method-heading">
1731
1759
 
@@ -1738,9 +1766,9 @@ time frame.
1738
1766
  <div class="method-description">
1739
1767
 
1740
1768
  <p>
1741
- Overload the <a href="Project.html#M001259">deep_clone</a> function so that
1742
- references to the project don&#8217;t lead to deep copying of the whole
1743
- project.
1769
+ Overload the <a href="Project.html#method-i-deep_clone">deep_clone</a>
1770
+ function so that references to the project don&#8217;t lead to deep copying
1771
+ of the whole project.
1744
1772
  </p>
1745
1773
 
1746
1774
 
@@ -1748,10 +1776,10 @@ project.
1748
1776
  <div class="method-source-code"
1749
1777
  id="deep-clone-source">
1750
1778
  <pre>
1751
- <span class="ruby-comment cmt"># File lib/Project.rb, line 403</span>
1752
- 403: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
1753
- 404: <span class="ruby-keyword kw">self</span>
1754
- 405: <span class="ruby-keyword kw">end</span></pre>
1779
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 411</span>
1780
+ 411: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
1781
+ 412: <span class="ruby-keyword kw">self</span>
1782
+ 413: <span class="ruby-keyword kw">end</span></pre>
1755
1783
  </div>
1756
1784
 
1757
1785
  </div>
@@ -1763,7 +1791,7 @@ project.
1763
1791
 
1764
1792
 
1765
1793
  <div id="error-method" class="method-detail ">
1766
- <a name="M001300"></a>
1794
+ <a name="method-i-error"></a>
1767
1795
 
1768
1796
  <div class="method-heading">
1769
1797
 
@@ -1784,12 +1812,12 @@ This function sends an error message to the message handler.
1784
1812
  <div class="method-source-code"
1785
1813
  id="error-source">
1786
1814
  <pre>
1787
- <span class="ruby-comment cmt"># File lib/Project.rb, line 832</span>
1788
- 832: <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>)
1789
- 833: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">id</span>, <span class="ruby-value str">'error'</span>, <span class="ruby-identifier">text</span>)
1790
- 834: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
1791
- 835: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>
1792
- 836: <span class="ruby-keyword kw">end</span></pre>
1815
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 860</span>
1816
+ 860: <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>)
1817
+ 861: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">id</span>, <span class="ruby-value str">'error'</span>, <span class="ruby-identifier">text</span>)
1818
+ 862: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
1819
+ 863: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>
1820
+ 864: <span class="ruby-keyword kw">end</span></pre>
1793
1821
  </div>
1794
1822
 
1795
1823
  </div>
@@ -1801,12 +1829,12 @@ This function sends an error message to the message handler.
1801
1829
 
1802
1830
 
1803
1831
  <div id="generate-eport-method" class="method-detail ">
1804
- <a name="M001283"></a>
1832
+ <a name="method-i-generateReport"></a>
1805
1833
 
1806
1834
  <div class="method-heading">
1807
1835
 
1808
1836
  <span class="method-name">generateReport</span><span
1809
- class="method-args">(reportId, regExpMode)</span>
1837
+ class="method-args">(reportId, regExpMode, dynamicAttributes = nil)</span>
1810
1838
  <span class="method-click-advice">click to toggle source</span>
1811
1839
 
1812
1840
  </div>
@@ -1820,21 +1848,38 @@ This function sends an error message to the message handler.
1820
1848
  <div class="method-source-code"
1821
1849
  id="generate-eport-source">
1822
1850
  <pre>
1823
- <span class="ruby-comment cmt"># File lib/Project.rb, line 648</span>
1824
- 648: <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>)
1825
- 649: <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>
1826
- 650: [ <span class="ruby-identifier">reportId</span> ]
1827
- 651: <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>
1828
- 652: <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>])
1829
- 653: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
1830
- 654: <span class="ruby-node">&quot;Request to generate unknown report #{id}&quot;</span>)
1831
- 655: <span class="ruby-keyword kw">end</span>
1832
- 656: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1833
- 657: <span class="ruby-ivar">@reportContext</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>)
1834
- 658: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1835
- 659: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1836
- 660: <span class="ruby-keyword kw">end</span>
1837
- 661: <span class="ruby-keyword kw">end</span></pre>
1851
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 659</span>
1852
+ 659: <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>)
1853
+ 660: <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>
1854
+ 661: [ <span class="ruby-identifier">reportId</span> ]
1855
+ 662: <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>
1856
+ 663: <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>])
1857
+ 664: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
1858
+ 665: <span class="ruby-node">&quot;Request to generate unknown report #{id}&quot;</span>)
1859
+ 666: <span class="ruby-keyword kw">end</span>
1860
+ 667: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1861
+ 668: <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>))
1862
+ 669:
1863
+ 670: <span class="ruby-identifier">name</span> = <span class="ruby-keyword kw">nil</span>
1864
+ 671: <span class="ruby-comment cmt"># If we have dynamic attributes we need to backup the old attributes</span>
1865
+ 672: <span class="ruby-comment cmt"># first, then parse the dynamicAttributes String replacing the</span>
1866
+ 673: <span class="ruby-comment cmt"># original values.</span>
1867
+ 674: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1868
+ 675: <span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">backupAttributes</span>
1869
+ 676: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
1870
+ 677: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parseReportAttributes</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">dynamicAttributes</span>)
1871
+ 678: <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>)
1872
+ 679: <span class="ruby-keyword kw">end</span>
1873
+ 680:
1874
+ 681: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1875
+ 682:
1876
+ 683: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1877
+ 684: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span>)
1878
+ 685: <span class="ruby-keyword kw">end</span>
1879
+ 686: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1880
+ 687: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1881
+ 688: <span class="ruby-keyword kw">end</span>
1882
+ 689: <span class="ruby-keyword kw">end</span></pre>
1838
1883
  </div>
1839
1884
 
1840
1885
  </div>
@@ -1846,7 +1891,7 @@ This function sends an error message to the message handler.
1846
1891
 
1847
1892
 
1848
1893
  <div id="generate-eports-method" class="method-detail ">
1849
- <a name="M001282"></a>
1894
+ <a name="method-i-generateReports"></a>
1850
1895
 
1851
1896
  <div class="method-heading">
1852
1897
 
@@ -1861,7 +1906,7 @@ This function sends an error message to the message handler.
1861
1906
  <p>
1862
1907
  Call this function to generate the reports based on the scheduling result.
1863
1908
  This function may only be called after <a
1864
- href="Project.html#M001281">Project#schedule</a> has been called.
1909
+ href="Project.html#method-i-schedule">Project#schedule</a> has been called.
1865
1910
  </p>
1866
1911
 
1867
1912
 
@@ -1869,47 +1914,50 @@ href="Project.html#M001281">Project#schedule</a> has been called.
1869
1914
  <div class="method-source-code"
1870
1915
  id="generate-eports-source">
1871
1916
  <pre>
1872
- <span class="ruby-comment cmt"># File lib/Project.rb, line 607</span>
1873
- 607: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
1874
- 608: <span class="ruby-keyword kw">begin</span>
1875
- 609: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
1876
- 610: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1877
- 611: <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>
1878
- 612: <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>
1879
- 613: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1880
- 614: <span class="ruby-ivar">@reportContext</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>)
1881
- 615: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1882
- 616: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1883
- 617: <span class="ruby-keyword kw">end</span>
1884
- 618: <span class="ruby-keyword kw">else</span>
1885
- 619: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
1886
- 620: <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>
1887
- 621: <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>
1888
- 622: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
1889
- 623: <span class="ruby-ivar">@reportContext</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>)
1890
- 624: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1891
- 625: }
1917
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 615</span>
1918
+ 615: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
1919
+ 616: <span class="ruby-keyword kw">begin</span>
1920
+ 617: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
1921
+ 618: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1922
+ 619: <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>
1923
+ 620: <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>
1924
+ 621: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1925
+ 622: <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>))
1926
+ 623: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1927
+ 624: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1928
+ 625: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1892
1929
  626: <span class="ruby-keyword kw">end</span>
1893
- 627: <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>
1894
- 628: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
1895
- 629: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
1896
- 630: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
1897
- 631: <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>
1898
- 632: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">&quot;Signal raised&quot;</span>
1899
- 633: <span class="ruby-keyword kw">end</span>
1900
- 634: <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>
1901
- 635: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">&quot;Process aborted&quot;</span>
1902
- 636: <span class="ruby-keyword kw">end</span>
1903
- 637: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1904
- 638: <span class="ruby-keyword kw">end</span>
1905
- 639: <span class="ruby-keyword kw">end</span>
1906
- 640: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1907
- 641: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Report Generation Error: #{$!}&quot;</span>
1908
- 642: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1909
- 643: <span class="ruby-keyword kw">end</span>
1910
- 644:
1911
- 645: <span class="ruby-keyword kw">true</span>
1912
- 646: <span class="ruby-keyword kw">end</span></pre>
1930
+ 627: <span class="ruby-keyword kw">else</span>
1931
+ 628: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
1932
+ 629: <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>
1933
+ 630: <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>
1934
+ 631: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
1935
+ 632: <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>))
1936
+ 633: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1937
+ 634: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1938
+ 635: <span class="ruby-identifier">res</span>
1939
+ 636: }
1940
+ 637: <span class="ruby-keyword kw">end</span>
1941
+ 638: <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>
1942
+ 639: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
1943
+ 640: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
1944
+ 641: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
1945
+ 642: <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>
1946
+ 643: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">&quot;Signal raised&quot;</span>
1947
+ 644: <span class="ruby-keyword kw">end</span>
1948
+ 645: <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>
1949
+ 646: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">&quot;Process aborted&quot;</span>
1950
+ 647: <span class="ruby-keyword kw">end</span>
1951
+ 648: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1952
+ 649: <span class="ruby-keyword kw">end</span>
1953
+ 650: <span class="ruby-keyword kw">end</span>
1954
+ 651: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1955
+ 652: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Report Generation Error: #{$!}&quot;</span>
1956
+ 653: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1957
+ 654: <span class="ruby-keyword kw">end</span>
1958
+ 655:
1959
+ 656: <span class="ruby-keyword kw">true</span>
1960
+ 657: <span class="ruby-keyword kw">end</span></pre>
1913
1961
  </div>
1914
1962
 
1915
1963
  </div>
@@ -1921,7 +1969,7 @@ href="Project.html#M001281">Project#schedule</a> has been called.
1921
1969
 
1922
1970
 
1923
1971
  <div id="idx-o-ate-method" class="method-detail ">
1924
- <a name="M001295"></a>
1972
+ <a name="method-i-idxToDate"></a>
1925
1973
 
1926
1974
  <div class="method-heading">
1927
1975
 
@@ -1945,13 +1993,13 @@ raised.
1945
1993
  <div class="method-source-code"
1946
1994
  id="idx-o-ate-source">
1947
1995
  <pre>
1948
- <span class="ruby-comment cmt"># File lib/Project.rb, line 762</span>
1949
- 762: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1950
- 763: <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>)
1951
- 764: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
1952
- 765: <span class="ruby-keyword kw">end</span>
1953
- 766: <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>]
1954
- 767: <span class="ruby-keyword kw">end</span></pre>
1996
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 790</span>
1997
+ 790: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1998
+ 791: <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>)
1999
+ 792: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
2000
+ 793: <span class="ruby-keyword kw">end</span>
2001
+ 794: <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>]
2002
+ 795: <span class="ruby-keyword kw">end</span></pre>
1955
2003
  </div>
1956
2004
 
1957
2005
  </div>
@@ -1963,7 +2011,7 @@ raised.
1963
2011
 
1964
2012
 
1965
2013
  <div id="is-orking-ime-method" class="method-detail ">
1966
- <a name="M001292"></a>
2014
+ <a name="method-i-isWorkingTime"></a>
1967
2015
 
1968
2016
  <div class="method-heading">
1969
2017
 
@@ -1989,29 +2037,29 @@ defined and the slot lies within a defined working time period.
1989
2037
  <div class="method-source-code"
1990
2038
  id="is-orking-ime-source">
1991
2039
  <pre>
1992
- <span class="ruby-comment cmt"># File lib/Project.rb, line 721</span>
1993
- 721: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(*<span class="ruby-identifier">args</span>)
1994
- 722: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
1995
- 723: <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>
1996
- 724: <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>)
1997
- 725: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
1998
- 726: <span class="ruby-keyword kw">else</span>
1999
- 727: <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>
2000
- 728: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
2001
- 729: <span class="ruby-keyword kw">end</span>
2002
- 730: <span class="ruby-keyword kw">else</span>
2003
- 731: <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>])
2004
- 732: <span class="ruby-keyword kw">end</span>
2005
- 733:
2006
- 734: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
2007
- 735: <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>
2008
- 736: <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>)
2009
- 737: <span class="ruby-keyword kw">end</span>
2010
- 738:
2011
- 739: <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>)
2012
- 740:
2013
- 741: <span class="ruby-keyword kw">true</span>
2014
- 742: <span class="ruby-keyword kw">end</span></pre>
2040
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 749</span>
2041
+ 749: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(*<span class="ruby-identifier">args</span>)
2042
+ 750: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
2043
+ 751: <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>
2044
+ 752: <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>)
2045
+ 753: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
2046
+ 754: <span class="ruby-keyword kw">else</span>
2047
+ 755: <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>
2048
+ 756: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
2049
+ 757: <span class="ruby-keyword kw">end</span>
2050
+ 758: <span class="ruby-keyword kw">else</span>
2051
+ 759: <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>])
2052
+ 760: <span class="ruby-keyword kw">end</span>
2053
+ 761:
2054
+ 762: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
2055
+ 763: <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>
2056
+ 764: <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>)
2057
+ 765: <span class="ruby-keyword kw">end</span>
2058
+ 766:
2059
+ 767: <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>)
2060
+ 768:
2061
+ 769: <span class="ruby-keyword kw">true</span>
2062
+ 770: <span class="ruby-keyword kw">end</span></pre>
2015
2063
  </div>
2016
2064
 
2017
2065
  </div>
@@ -2023,7 +2071,7 @@ defined and the slot lies within a defined working time period.
2023
2071
 
2024
2072
 
2025
2073
  <div id="list-eports-method" class="method-detail ">
2026
- <a name="M001284"></a>
2074
+ <a name="method-i-listReports"></a>
2027
2075
 
2028
2076
  <div class="method-heading">
2029
2077
 
@@ -2042,19 +2090,19 @@ defined and the slot lies within a defined working time period.
2042
2090
  <div class="method-source-code"
2043
2091
  id="list-eports-source">
2044
2092
  <pre>
2045
- <span class="ruby-comment cmt"># File lib/Project.rb, line 663</span>
2046
- 663: <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>)
2047
- 664: <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>
2048
- 665: <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> []
2049
- 666: <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>
2050
- 667: <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>
2051
- 668: <span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2052
- 669: <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>)
2053
- 670: <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>
2054
- 671:
2055
- 672: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%-20s %-15s %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>)
2056
- 673: <span class="ruby-keyword kw">end</span>
2057
- 674: <span class="ruby-keyword kw">end</span></pre>
2093
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 691</span>
2094
+ 691: <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>)
2095
+ 692: <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>
2096
+ 693: <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> []
2097
+ 694: <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>
2098
+ 695: <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>
2099
+ 696: <span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2100
+ 697: <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>)
2101
+ 698: <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>
2102
+ 699:
2103
+ 700: <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>)
2104
+ 701: <span class="ruby-keyword kw">end</span>
2105
+ 702: <span class="ruby-keyword kw">end</span></pre>
2058
2106
  </div>
2059
2107
 
2060
2108
  </div>
@@ -2066,7 +2114,7 @@ defined and the slot lies within a defined working time period.
2066
2114
 
2067
2115
 
2068
2116
  <div id="monthly-orking-ays-method" class="method-detail ">
2069
- <a name="M001270"></a>
2117
+ <a name="method-i-monthlyWorkingDays"></a>
2070
2118
 
2071
2119
  <div class="method-heading">
2072
2120
 
@@ -2087,10 +2135,10 @@ Return the average number of working days per month.
2087
2135
  <div class="method-source-code"
2088
2136
  id="monthly-orking-ays-source">
2089
2137
  <pre>
2090
- <span class="ruby-comment cmt"># File lib/Project.rb, line 479</span>
2091
- 479: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
2092
- 480: <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>
2093
- 481: <span class="ruby-keyword kw">end</span></pre>
2138
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 487</span>
2139
+ 487: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
2140
+ 488: <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>
2141
+ 489: <span class="ruby-keyword kw">end</span></pre>
2094
2142
  </div>
2095
2143
 
2096
2144
  </div>
@@ -2102,7 +2150,7 @@ Return the average number of working days per month.
2102
2150
 
2103
2151
 
2104
2152
  <div id="report-method" class="method-detail ">
2105
- <a name="M001279"></a>
2153
+ <a name="method-i-report"></a>
2106
2154
 
2107
2155
  <div class="method-heading">
2108
2156
 
@@ -2124,10 +2172,10 @@ return nil if it does not exist.
2124
2172
  <div class="method-source-code"
2125
2173
  id="report-source">
2126
2174
  <pre>
2127
- <span class="ruby-comment cmt"># File lib/Project.rb, line 545</span>
2128
- 545: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
2129
- 546: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2130
- 547: <span class="ruby-keyword kw">end</span></pre>
2175
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 553</span>
2176
+ 553: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
2177
+ 554: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2178
+ 555: <span class="ruby-keyword kw">end</span></pre>
2131
2179
  </div>
2132
2180
 
2133
2181
  </div>
@@ -2139,7 +2187,7 @@ return nil if it does not exist.
2139
2187
 
2140
2188
 
2141
2189
  <div id="report-y-ame-method" class="method-detail ">
2142
- <a name="M001280"></a>
2190
+ <a name="method-i-reportByName"></a>
2143
2191
 
2144
2192
  <div class="method-heading">
2145
2193
 
@@ -2161,13 +2209,13 @@ return nil if it does not exist.
2161
2209
  <div class="method-source-code"
2162
2210
  id="report-y-ame-source">
2163
2211
  <pre>
2164
- <span class="ruby-comment cmt"># File lib/Project.rb, line 551</span>
2165
- 551: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
2166
- 552: <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>
2167
- 553: <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>
2168
- 554: <span class="ruby-keyword kw">end</span>
2169
- 555: <span class="ruby-keyword kw">nil</span>
2170
- 556: <span class="ruby-keyword kw">end</span></pre>
2212
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 559</span>
2213
+ 559: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
2214
+ 560: <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>
2215
+ 561: <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>
2216
+ 562: <span class="ruby-keyword kw">end</span>
2217
+ 563: <span class="ruby-keyword kw">nil</span>
2218
+ 564: <span class="ruby-keyword kw">end</span></pre>
2171
2219
  </div>
2172
2220
 
2173
2221
  </div>
@@ -2179,7 +2227,7 @@ return nil if it does not exist.
2179
2227
 
2180
2228
 
2181
2229
  <div id="resource-method" class="method-detail ">
2182
- <a name="M001278"></a>
2230
+ <a name="method-i-resource"></a>
2183
2231
 
2184
2232
  <div class="method-heading">
2185
2233
 
@@ -2201,10 +2249,10 @@ return nil if it does not exist.
2201
2249
  <div class="method-source-code"
2202
2250
  id="resource-source">
2203
2251
  <pre>
2204
- <span class="ruby-comment cmt"># File lib/Project.rb, line 540</span>
2205
- 540: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
2206
- 541: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
2207
- 542: <span class="ruby-keyword kw">end</span></pre>
2252
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 548</span>
2253
+ 548: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
2254
+ 549: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
2255
+ 550: <span class="ruby-keyword kw">end</span></pre>
2208
2256
  </div>
2209
2257
 
2210
2258
  </div>
@@ -2216,7 +2264,7 @@ return nil if it does not exist.
2216
2264
 
2217
2265
 
2218
2266
  <div id="scenario-method" class="method-detail ">
2219
- <a name="M001273"></a>
2267
+ <a name="method-i-scenario"></a>
2220
2268
 
2221
2269
  <div class="method-heading">
2222
2270
 
@@ -2238,17 +2286,17 @@ or <em>index</em>.
2238
2286
  <div class="method-source-code"
2239
2287
  id="scenario-source">
2240
2288
  <pre>
2241
- <span class="ruby-comment cmt"># File lib/Project.rb, line 498</span>
2242
- 498: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
2243
- 499: <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>)
2244
- 500: <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>
2245
- 501: <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>
2246
- 502: <span class="ruby-keyword kw">end</span>
2247
- 503: <span class="ruby-keyword kw">else</span>
2248
- 504: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
2249
- 505: <span class="ruby-keyword kw">end</span>
2250
- 506: <span class="ruby-keyword kw">nil</span>
2251
- 507: <span class="ruby-keyword kw">end</span></pre>
2289
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 506</span>
2290
+ 506: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
2291
+ 507: <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>)
2292
+ 508: <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>
2293
+ 509: <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>
2294
+ 510: <span class="ruby-keyword kw">end</span>
2295
+ 511: <span class="ruby-keyword kw">else</span>
2296
+ 512: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
2297
+ 513: <span class="ruby-keyword kw">end</span>
2298
+ 514: <span class="ruby-keyword kw">nil</span>
2299
+ 515: <span class="ruby-keyword kw">end</span></pre>
2252
2300
  </div>
2253
2301
 
2254
2302
  </div>
@@ -2260,7 +2308,7 @@ or <em>index</em>.
2260
2308
 
2261
2309
 
2262
2310
  <div id="scenario-ount-method" class="method-detail ">
2263
- <a name="M001263"></a>
2311
+ <a name="method-i-scenarioCount"></a>
2264
2312
 
2265
2313
  <div class="method-heading">
2266
2314
 
@@ -2281,10 +2329,10 @@ Return the number of defined scenarios for the project.
2281
2329
  <div class="method-source-code"
2282
2330
  id="scenario-ount-source">
2283
2331
  <pre>
2284
- <span class="ruby-comment cmt"># File lib/Project.rb, line 430</span>
2285
- 430: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
2286
- 431: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
2287
- 432: <span class="ruby-keyword kw">end</span></pre>
2332
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 438</span>
2333
+ 438: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
2334
+ 439: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
2335
+ 440: <span class="ruby-keyword kw">end</span></pre>
2288
2336
  </div>
2289
2337
 
2290
2338
  </div>
@@ -2296,7 +2344,7 @@ Return the number of defined scenarios for the project.
2296
2344
 
2297
2345
 
2298
2346
  <div id="scenario-dx-method" class="method-detail ">
2299
- <a name="M001274"></a>
2347
+ <a name="method-i-scenarioIdx"></a>
2300
2348
 
2301
2349
  <div class="method-heading">
2302
2350
 
@@ -2318,16 +2366,16 @@ specified by <em>scenario</em> or <em>id</em>.
2318
2366
  <div class="method-source-code"
2319
2367
  id="scenario-dx-source">
2320
2368
  <pre>
2321
- <span class="ruby-comment cmt"># File lib/Project.rb, line 514</span>
2322
- 514: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2323
- 515: <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>)
2324
- 516: <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>
2325
- 517: <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>
2326
- 518: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2327
- 519: <span class="ruby-keyword kw">else</span>
2328
- 520: <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>
2329
- 521: <span class="ruby-keyword kw">end</span>
2330
- 522: <span class="ruby-keyword kw">end</span></pre>
2369
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 522</span>
2370
+ 522: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2371
+ 523: <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>)
2372
+ 524: <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>
2373
+ 525: <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>
2374
+ 526: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2375
+ 527: <span class="ruby-keyword kw">else</span>
2376
+ 528: <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>
2377
+ 529: <span class="ruby-keyword kw">end</span>
2378
+ 530: <span class="ruby-keyword kw">end</span></pre>
2331
2379
  </div>
2332
2380
 
2333
2381
  </div>
@@ -2339,7 +2387,7 @@ specified by <em>scenario</em> or <em>id</em>.
2339
2387
 
2340
2388
 
2341
2389
  <div id="schedule-method" class="method-detail ">
2342
- <a name="M001281"></a>
2390
+ <a name="method-i-schedule"></a>
2343
2391
 
2344
2392
  <div class="method-heading">
2345
2393
 
@@ -2362,50 +2410,50 @@ stores the result in the data structures again.
2362
2410
  <div class="method-source-code"
2363
2411
  id="schedule-source">
2364
2412
  <pre>
2365
- <span class="ruby-comment cmt"># File lib/Project.rb, line 561</span>
2366
- 561: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
2367
- 562: [ <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>
2368
- 563: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">inheritAttributesFromScenario</span>
2369
- 564: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
2370
- 565: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
2371
- 566: <span class="ruby-keyword kw">end</span>
2372
- 567:
2373
- 568: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
2374
- 569: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'no_tasks'</span>, <span class="ruby-value str">'error'</span>, <span class="ruby-value str">&quot;No tasks defined&quot;</span>)
2375
- 570: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2376
- 571: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2377
- 572: <span class="ruby-keyword kw">end</span>
2378
- 573:
2379
- 574: <span class="ruby-keyword kw">begin</span>
2380
- 575: <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>
2381
- 576: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
2382
- 577: <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>)
2383
- 578:
2384
- 579: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2385
- 580:
2386
- 581: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
2387
- 582: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
2388
- 583: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
2389
- 584: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
2390
- 585: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
2391
- 586: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2392
- 587:
2393
- 588: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
2394
- 589: <span class="ruby-comment cmt"># as computed.</span>
2395
- 590: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
2396
- 591: <span class="ruby-comment cmt"># Schedule the scenario.</span>
2397
- 592: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2398
- 593:
2399
- 594: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
2400
- 595: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2401
- 596: <span class="ruby-keyword kw">end</span>
2402
- 597: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
2403
- 598: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2404
- 599: <span class="ruby-keyword kw">end</span>
2405
- 600:
2406
- 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>
2407
- 602: <span class="ruby-keyword kw">true</span>
2408
- 603: <span class="ruby-keyword kw">end</span></pre>
2413
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 569</span>
2414
+ 569: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
2415
+ 570: [ <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>
2416
+ 571: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">inheritAttributesFromScenario</span>
2417
+ 572: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
2418
+ 573: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
2419
+ 574: <span class="ruby-keyword kw">end</span>
2420
+ 575:
2421
+ 576: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
2422
+ 577: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'no_tasks'</span>, <span class="ruby-value str">'error'</span>, <span class="ruby-value str">&quot;No tasks defined&quot;</span>)
2423
+ 578: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2424
+ 579: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2425
+ 580: <span class="ruby-keyword kw">end</span>
2426
+ 581:
2427
+ 582: <span class="ruby-keyword kw">begin</span>
2428
+ 583: <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>
2429
+ 584: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
2430
+ 585: <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>)
2431
+ 586:
2432
+ 587: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2433
+ 588:
2434
+ 589: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
2435
+ 590: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
2436
+ 591: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
2437
+ 592: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
2438
+ 593: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
2439
+ 594: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2440
+ 595:
2441
+ 596: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
2442
+ 597: <span class="ruby-comment cmt"># as computed.</span>
2443
+ 598: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
2444
+ 599: <span class="ruby-comment cmt"># Schedule the scenario.</span>
2445
+ 600: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2446
+ 601:
2447
+ 602: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
2448
+ 603: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2449
+ 604: <span class="ruby-keyword kw">end</span>
2450
+ 605: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
2451
+ 606: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2452
+ 607: <span class="ruby-keyword kw">end</span>
2453
+ 608:
2454
+ 609: <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>
2455
+ 610: <span class="ruby-keyword kw">true</span>
2456
+ 611: <span class="ruby-keyword kw">end</span></pre>
2409
2457
  </div>
2410
2458
 
2411
2459
  </div>
@@ -2417,7 +2465,7 @@ stores the result in the data structures again.
2417
2465
 
2418
2466
 
2419
2467
  <div id="scoreboard-ize-method" class="method-detail ">
2420
- <a name="M001294"></a>
2468
+ <a name="method-i-scoreboardSize"></a>
2421
2469
 
2422
2470
  <div class="method-heading">
2423
2471
 
@@ -2441,11 +2489,11 @@ number of entries in the scoreboards.
2441
2489
  <div class="method-source-code"
2442
2490
  id="scoreboard-ize-source">
2443
2491
  <pre>
2444
- <span class="ruby-comment cmt"># File lib/Project.rb, line 754</span>
2445
- 754: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
2446
- 755: ((<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>
2447
- 756: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2448
- 757: <span class="ruby-keyword kw">end</span></pre>
2492
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 782</span>
2493
+ 782: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
2494
+ 783: ((<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>
2495
+ 784: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2496
+ 785: <span class="ruby-keyword kw">end</span></pre>
2449
2497
  </div>
2450
2498
 
2451
2499
  </div>
@@ -2457,7 +2505,7 @@ number of entries in the scoreboards.
2457
2505
 
2458
2506
 
2459
2507
  <div id="send-essage-method" class="method-detail ">
2460
- <a name="M001260"></a>
2508
+ <a name="method-i-sendMessage"></a>
2461
2509
 
2462
2510
  <div class="method-heading">
2463
2511
 
@@ -2479,10 +2527,10 @@ is a <a href="../String.html">String</a> that contains the message.
2479
2527
  <div class="method-source-code"
2480
2528
  id="send-essage-source">
2481
2529
  <pre>
2482
- <span class="ruby-comment cmt"># File lib/Project.rb, line 409</span>
2483
- 409: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2484
- 410: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
2485
- 411: <span class="ruby-keyword kw">end</span></pre>
2530
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 417</span>
2531
+ 417: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2532
+ 418: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
2533
+ 419: <span class="ruby-keyword kw">end</span></pre>
2486
2534
  </div>
2487
2535
 
2488
2536
  </div>
@@ -2494,7 +2542,7 @@ is a <a href="../String.html">String</a> that contains the message.
2494
2542
 
2495
2543
 
2496
2544
  <div id="shift-method" class="method-detail ">
2497
- <a name="M001275"></a>
2545
+ <a name="method-i-shift"></a>
2498
2546
 
2499
2547
  <div class="method-heading">
2500
2548
 
@@ -2516,10 +2564,10 @@ nil if it does not exist.
2516
2564
  <div class="method-source-code"
2517
2565
  id="shift-source">
2518
2566
  <pre>
2519
- <span class="ruby-comment cmt"># File lib/Project.rb, line 525</span>
2520
- 525: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
2521
- 526: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
2522
- 527: <span class="ruby-keyword kw">end</span></pre>
2567
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 533</span>
2568
+ 533: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
2569
+ 534: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
2570
+ 535: <span class="ruby-keyword kw">end</span></pre>
2523
2571
  </div>
2524
2572
 
2525
2573
  </div>
@@ -2531,7 +2579,7 @@ nil if it does not exist.
2531
2579
 
2532
2580
 
2533
2581
  <div id="slots-o-ays-method" class="method-detail ">
2534
- <a name="M001272"></a>
2582
+ <a name="method-i-slotsToDays"></a>
2535
2583
 
2536
2584
  <div class="method-heading">
2537
2585
 
@@ -2552,10 +2600,10 @@ Convert timeSlots to working days.
2552
2600
  <div class="method-source-code"
2553
2601
  id="slots-o-ays-source">
2554
2602
  <pre>
2555
- <span class="ruby-comment cmt"># File lib/Project.rb, line 489</span>
2556
- 489: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
2557
- 490: <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>)
2558
- 491: <span class="ruby-keyword kw">end</span></pre>
2603
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 497</span>
2604
+ 497: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
2605
+ 498: <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>)
2606
+ 499: <span class="ruby-keyword kw">end</span></pre>
2559
2607
  </div>
2560
2608
 
2561
2609
  </div>
@@ -2567,7 +2615,7 @@ Convert timeSlots to working days.
2567
2615
 
2568
2616
 
2569
2617
  <div id="task-method" class="method-detail ">
2570
- <a name="M001277"></a>
2618
+ <a name="method-i-task"></a>
2571
2619
 
2572
2620
  <div class="method-heading">
2573
2621
 
@@ -2589,10 +2637,10 @@ nil if it does not exist.
2589
2637
  <div class="method-source-code"
2590
2638
  id="task-source">
2591
2639
  <pre>
2592
- <span class="ruby-comment cmt"># File lib/Project.rb, line 535</span>
2593
- 535: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
2594
- 536: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
2595
- 537: <span class="ruby-keyword kw">end</span></pre>
2640
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 543</span>
2641
+ 543: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
2642
+ 544: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
2643
+ 545: <span class="ruby-keyword kw">end</span></pre>
2596
2644
  </div>
2597
2645
 
2598
2646
  </div>
@@ -2604,7 +2652,7 @@ nil if it does not exist.
2604
2652
 
2605
2653
 
2606
2654
  <div id="to-s-method" class="method-detail ">
2607
- <a name="M001299"></a>
2655
+ <a name="method-i-to_s"></a>
2608
2656
 
2609
2657
  <div class="method-heading">
2610
2658
 
@@ -2625,16 +2673,16 @@ Print the attribute values. It&#8217;s used for debugging only.
2625
2673
  <div class="method-source-code"
2626
2674
  id="to-s-source">
2627
2675
  <pre>
2628
- <span class="ruby-comment cmt"># File lib/Project.rb, line 821</span>
2629
- 821: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
2630
- 822: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;STOP!&quot;</span>
2631
- 823: <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>
2632
- 824: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
2633
- 825: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
2634
- 826: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
2635
- 827: <span class="ruby-keyword kw">end</span>
2636
- 828: <span class="ruby-keyword kw">end</span>
2637
- 829: <span class="ruby-keyword kw">end</span></pre>
2676
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 849</span>
2677
+ 849: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
2678
+ 850: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;STOP!&quot;</span>
2679
+ 851: <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>
2680
+ 852: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
2681
+ 853: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
2682
+ 854: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
2683
+ 855: <span class="ruby-keyword kw">end</span>
2684
+ 856: <span class="ruby-keyword kw">end</span>
2685
+ 857: <span class="ruby-keyword kw">end</span></pre>
2638
2686
  </div>
2639
2687
 
2640
2688
  </div>
@@ -2646,7 +2694,7 @@ Print the attribute values. It&#8217;s used for debugging only.
2646
2694
 
2647
2695
 
2648
2696
  <div id="weekly-orking-ays-method" class="method-detail ">
2649
- <a name="M001269"></a>
2697
+ <a name="method-i-weeklyWorkingDays"></a>
2650
2698
 
2651
2699
  <div class="method-heading">
2652
2700
 
@@ -2667,10 +2715,10 @@ Return the average number of working days per week.
2667
2715
  <div class="method-source-code"
2668
2716
  id="weekly-orking-ays-source">
2669
2717
  <pre>
2670
- <span class="ruby-comment cmt"># File lib/Project.rb, line 474</span>
2671
- 474: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
2672
- 475: <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>
2673
- 476: <span class="ruby-keyword kw">end</span></pre>
2718
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 482</span>
2719
+ 482: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
2720
+ 483: <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>
2721
+ 484: <span class="ruby-keyword kw">end</span></pre>
2674
2722
  </div>
2675
2723
 
2676
2724
  </div>
@@ -2682,7 +2730,7 @@ Return the average number of working days per week.
2682
2730
 
2683
2731
 
2684
2732
  <div id="yearly-orking-ays-method" class="method-detail ">
2685
- <a name="M001271"></a>
2733
+ <a name="method-i-yearlyWorkingDays"></a>
2686
2734
 
2687
2735
  <div class="method-heading">
2688
2736
 
@@ -2703,10 +2751,10 @@ Return the average number of working days per year.
2703
2751
  <div class="method-source-code"
2704
2752
  id="yearly-orking-ays-source">
2705
2753
  <pre>
2706
- <span class="ruby-comment cmt"># File lib/Project.rb, line 484</span>
2707
- 484: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
2708
- 485: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
2709
- 486: <span class="ruby-keyword kw">end</span></pre>
2754
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 492</span>
2755
+ 492: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
2756
+ 493: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
2757
+ 494: <span class="ruby-keyword kw">end</span></pre>
2710
2758
  </div>
2711
2759
 
2712
2760
  </div>
@@ -2724,7 +2772,7 @@ Return the average number of working days per year.
2724
2772
 
2725
2773
 
2726
2774
  <div id="finish-cenario-method" class="method-detail ">
2727
- <a name="M001302"></a>
2775
+ <a name="method-i-finishScenario"></a>
2728
2776
 
2729
2777
  <div class="method-heading">
2730
2778
 
@@ -2743,31 +2791,31 @@ Return the average number of working days per year.
2743
2791
  <div class="method-source-code"
2744
2792
  id="finish-cenario-source">
2745
2793
  <pre>
2746
- <span class="ruby-comment cmt"># File lib/Project.rb, line 906</span>
2747
- 906: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2748
- 907: <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>)
2749
- 908: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
2750
- 909: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2751
- 910: <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>
2752
- 911: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2753
- 912: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2754
- 913: <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>)
2755
- 914: <span class="ruby-keyword kw">end</span>
2756
- 915:
2757
- 916: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2758
- 917: <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>
2759
- 918: <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>
2760
- 919: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2761
- 920: <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>)
2762
- 921: <span class="ruby-keyword kw">end</span>
2763
- 922:
2764
- 923: <span class="ruby-comment cmt"># This should be really fast so we don't log progess.</span>
2765
- 924: <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>
2766
- 925: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2767
- 926: <span class="ruby-keyword kw">end</span>
2768
- 927:
2769
- 928: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2770
- 929: <span class="ruby-keyword kw">end</span></pre>
2794
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 934</span>
2795
+ 934: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2796
+ 935: <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>)
2797
+ 936: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
2798
+ 937: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2799
+ 938: <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>
2800
+ 939: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2801
+ 940: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2802
+ 941: <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>)
2803
+ 942: <span class="ruby-keyword kw">end</span>
2804
+ 943:
2805
+ 944: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2806
+ 945: <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>
2807
+ 946: <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>
2808
+ 947: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2809
+ 948: <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>)
2810
+ 949: <span class="ruby-keyword kw">end</span>
2811
+ 950:
2812
+ 951: <span class="ruby-comment cmt"># This should be really fast so we don't log progess.</span>
2813
+ 952: <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>
2814
+ 953: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2815
+ 954: <span class="ruby-keyword kw">end</span>
2816
+ 955:
2817
+ 956: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2818
+ 957: <span class="ruby-keyword kw">end</span></pre>
2771
2819
  </div>
2772
2820
 
2773
2821
  </div>
@@ -2779,7 +2827,7 @@ Return the average number of working days per year.
2779
2827
 
2780
2828
 
2781
2829
  <div id="prepare-cenario-method" class="method-detail ">
2782
- <a name="M001301"></a>
2830
+ <a name="method-i-prepareScenario"></a>
2783
2831
 
2784
2832
  <div class="method-heading">
2785
2833
 
@@ -2798,72 +2846,72 @@ Return the average number of working days per year.
2798
2846
  <div class="method-source-code"
2799
2847
  id="prepare-cenario-source">
2800
2848
  <pre>
2801
- <span class="ruby-comment cmt"># File lib/Project.rb, line 840</span>
2802
- 840: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2803
- 841: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Preparing scenario #{scenario(scIdx).get('name')}&quot;</span>)
2804
- 842: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
2805
- 843: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2806
- 844:
2807
- 845: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
2808
- 846: <span class="ruby-comment cmt"># project.</span>
2809
- 847: <span class="ruby-identifier">usedResources</span> = []
2810
- 848: <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>
2811
- 849: <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>
2812
- 850: <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>)
2813
- 851: <span class="ruby-keyword kw">end</span>
2814
- 852: <span class="ruby-keyword kw">end</span>
2815
- 853: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
2816
- 854: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2817
- 855: <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>
2818
- 856: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2819
- 857: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2820
- 858: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2821
- 859: <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>)
2822
- 860: <span class="ruby-keyword kw">end</span>
2823
- 861:
2824
- 862: <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>) }
2825
- 863: <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>) }
2826
- 864:
2827
- 865: <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>) }
2828
- 866: <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>) }
2829
- 867: <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>) }
2830
- 868: <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>) }
2831
- 869:
2832
- 870: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
2833
- 871: <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>) }
2834
- 872: <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>
2835
- 873: <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>
2836
- 874: <span class="ruby-keyword kw">end</span>
2837
- 875: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.85</span>)
2838
- 876: <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>) }
2839
- 877: <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>
2840
- 878: <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>
2841
- 879: <span class="ruby-keyword kw">end</span>
2842
- 880: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.87</span>)
2843
- 881:
2844
- 882: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
2845
- 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">countResourceAllocations</span>(<span class="ruby-identifier">scIdx</span>) }
2846
- 884: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.88</span>)
2847
- 885: <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>) }
2848
- 886: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.9</span>)
2849
- 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">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
2850
- 888: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.95</span>)
2851
- 889: <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>) }
2852
- 890: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.99</span>)
2853
- 891: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
2854
- 892: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
2855
- 893:
2856
- 894: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2857
- 895: <span class="ruby-comment cmt"># This is used for debugging only</span>
2858
- 896: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
2859
- 897: <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>
2860
- 898: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{resource}&quot;</span>
2861
- 899: <span class="ruby-keyword kw">end</span>
2862
- 900: <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
- 901: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{task}&quot;</span>
2864
- 902: <span class="ruby-keyword kw">end</span>
2865
- 903: <span class="ruby-keyword kw">end</span>
2866
- 904: <span class="ruby-keyword kw">end</span></pre>
2849
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 868</span>
2850
+ 868: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2851
+ 869: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Preparing scenario #{scenario(scIdx).get('name')}&quot;</span>)
2852
+ 870: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
2853
+ 871: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2854
+ 872:
2855
+ 873: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
2856
+ 874: <span class="ruby-comment cmt"># project.</span>
2857
+ 875: <span class="ruby-identifier">usedResources</span> = []
2858
+ 876: <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>
2859
+ 877: <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>
2860
+ 878: <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>)
2861
+ 879: <span class="ruby-keyword kw">end</span>
2862
+ 880: <span class="ruby-keyword kw">end</span>
2863
+ 881: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
2864
+ 882: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2865
+ 883: <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>
2866
+ 884: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2867
+ 885: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2868
+ 886: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2869
+ 887: <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>)
2870
+ 888: <span class="ruby-keyword kw">end</span>
2871
+ 889:
2872
+ 890: <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>) }
2873
+ 891: <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>) }
2874
+ 892:
2875
+ 893: <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>) }
2876
+ 894: <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>) }
2877
+ 895: <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>) }
2878
+ 896: <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>) }
2879
+ 897:
2880
+ 898: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
2881
+ 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">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
2882
+ 900: <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>
2883
+ 901: <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>
2884
+ 902: <span class="ruby-keyword kw">end</span>
2885
+ 903: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.85</span>)
2886
+ 904: <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>) }
2887
+ 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>
2888
+ 906: <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>
2889
+ 907: <span class="ruby-keyword kw">end</span>
2890
+ 908: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.87</span>)
2891
+ 909:
2892
+ 910: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
2893
+ 911: <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>) }
2894
+ 912: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.88</span>)
2895
+ 913: <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>) }
2896
+ 914: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.9</span>)
2897
+ 915: <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>) }
2898
+ 916: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.95</span>)
2899
+ 917: <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>) }
2900
+ 918: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.99</span>)
2901
+ 919: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
2902
+ 920: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
2903
+ 921:
2904
+ 922: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2905
+ 923: <span class="ruby-comment cmt"># This is used for debugging only</span>
2906
+ 924: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
2907
+ 925: <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>
2908
+ 926: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{resource}&quot;</span>
2909
+ 927: <span class="ruby-keyword kw">end</span>
2910
+ 928: <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>
2911
+ 929: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{task}&quot;</span>
2912
+ 930: <span class="ruby-keyword kw">end</span>
2913
+ 931: <span class="ruby-keyword kw">end</span>
2914
+ 932: <span class="ruby-keyword kw">end</span></pre>
2867
2915
  </div>
2868
2916
 
2869
2917
  </div>
@@ -2875,7 +2923,7 @@ Return the average number of working days per year.
2875
2923
 
2876
2924
 
2877
2925
  <div id="schedule-cenario-method" class="method-detail ">
2878
- <a name="M001303"></a>
2926
+ <a name="method-i-scheduleScenario"></a>
2879
2927
 
2880
2928
  <div class="method-heading">
2881
2929
 
@@ -2897,87 +2945,87 @@ index <tt>scIdx</tt>.
2897
2945
  <div class="method-source-code"
2898
2946
  id="schedule-cenario-source">
2899
2947
  <pre>
2900
- <span class="ruby-comment cmt"># File lib/Project.rb, line 932</span>
2901
- 932: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2902
- 933: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2903
- 934: <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> }
2904
- 935:
2905
- 936: <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>)
2906
- 937: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
2907
- 938: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
2908
- 939: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
2909
- 940: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
2910
- 941: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
2911
- 942: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
2912
- 943: <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> ],
2913
- 944: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
2914
- 945: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ] ])
2915
- 946: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
2916
- 947: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
2917
- 948:
2918
- 949: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
2919
- 950: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
2920
- 951: <span class="ruby-comment cmt"># true.</span>
2921
- 952: <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>
2922
- 953: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
2923
- 954: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
2924
- 955: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
2925
- 956: <span class="ruby-comment cmt"># ready to be scheduled.</span>
2926
- 957: <span class="ruby-identifier">workItems</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">to_ary</span>
2927
- 958:
2928
- 959: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
2929
- 960: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
2930
- 961: <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>
2931
- 962: <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>]
2932
- 963: <span class="ruby-keyword kw">end</span>
2933
- 964:
2934
- 965: <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>)
2935
- 966: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
2936
- 967: <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>) }
2937
- 968:
2938
- 969: <span class="ruby-comment cmt"># Check if we are done.</span>
2939
- 970: <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>
2940
- 971:
2941
- 972: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
2942
- 973: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
2943
- 974: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
2944
- 975: <span class="ruby-comment cmt"># Schedule it.</span>
2945
- 976: <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>)
2946
- 977: <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>
2947
- 978: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
2948
- 979: <span class="ruby-keyword kw">end</span>
2949
- 980: <span class="ruby-keyword kw">end</span>
2950
- 981: <span class="ruby-identifier">unscheduledTasks</span> = []
2951
- 982: <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>] }
2952
- 983:
2953
- 984: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
2954
- 985: <span class="ruby-comment cmt"># warnings.</span>
2955
- 986: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
2956
- 987: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'unscheduled_tasks'</span>, <span class="ruby-value str">'warning'</span>,
2957
- 988: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be &quot;</span> <span class="ruby-operator">+</span>
2958
- 989: <span class="ruby-value str">&quot;scheduled&quot;</span>)
2959
- 990: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2960
- 991: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2961
- 992: <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>
2962
- 993: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(
2963
- 994: <span class="ruby-value str">'unscheduled_task'</span>, <span class="ruby-value str">'warning'</span>,
2964
- 995: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
2965
- 996: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
2966
- 997: <span class="ruby-node">&quot;#{t['end', scIdx] ? t['end', scIdx] : '&lt;?&gt;'}&quot;</span>, <span class="ruby-identifier">t</span>,
2967
- 998: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
2968
- 999: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2969
- 1000:
2970
- 1001: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2971
- 1002: <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>
2972
- 1003: <span class="ruby-keyword kw">end</span>
2973
- 1004: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2974
- 1005: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2975
- 1006: <span class="ruby-keyword kw">end</span>
2976
- 1007:
2977
- 1008: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2978
- 1009: <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>)
2979
- 1010: <span class="ruby-keyword kw">true</span>
2980
- 1011: <span class="ruby-keyword kw">end</span></pre>
2948
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 960</span>
2949
+ 960: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2950
+ 961: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2951
+ 962: <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> }
2952
+ 963:
2953
+ 964: <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>)
2954
+ 965: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
2955
+ 966: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
2956
+ 967: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
2957
+ 968: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
2958
+ 969: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
2959
+ 970: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
2960
+ 971: <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> ],
2961
+ 972: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
2962
+ 973: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ] ])
2963
+ 974: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
2964
+ 975: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
2965
+ 976:
2966
+ 977: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
2967
+ 978: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
2968
+ 979: <span class="ruby-comment cmt"># true.</span>
2969
+ 980: <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>
2970
+ 981: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
2971
+ 982: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
2972
+ 983: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
2973
+ 984: <span class="ruby-comment cmt"># ready to be scheduled.</span>
2974
+ 985: <span class="ruby-identifier">workItems</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">to_ary</span>
2975
+ 986:
2976
+ 987: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
2977
+ 988: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
2978
+ 989: <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>
2979
+ 990: <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>]
2980
+ 991: <span class="ruby-keyword kw">end</span>
2981
+ 992:
2982
+ 993: <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>)
2983
+ 994: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
2984
+ 995: <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>) }
2985
+ 996:
2986
+ 997: <span class="ruby-comment cmt"># Check if we are done.</span>
2987
+ 998: <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>
2988
+ 999:
2989
+ 1000: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
2990
+ 1001: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
2991
+ 1002: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
2992
+ 1003: <span class="ruby-comment cmt"># Schedule it.</span>
2993
+ 1004: <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>)
2994
+ 1005: <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>
2995
+ 1006: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
2996
+ 1007: <span class="ruby-keyword kw">end</span>
2997
+ 1008: <span class="ruby-keyword kw">end</span>
2998
+ 1009: <span class="ruby-identifier">unscheduledTasks</span> = []
2999
+ 1010: <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>] }
3000
+ 1011:
3001
+ 1012: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
3002
+ 1013: <span class="ruby-comment cmt"># warnings.</span>
3003
+ 1014: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
3004
+ 1015: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'unscheduled_tasks'</span>, <span class="ruby-value str">'warning'</span>,
3005
+ 1016: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be &quot;</span> <span class="ruby-operator">+</span>
3006
+ 1017: <span class="ruby-value str">&quot;scheduled&quot;</span>)
3007
+ 1018: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
3008
+ 1019: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3009
+ 1020: <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>
3010
+ 1021: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(
3011
+ 1022: <span class="ruby-value str">'unscheduled_task'</span>, <span class="ruby-value str">'warning'</span>,
3012
+ 1023: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
3013
+ 1024: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
3014
+ 1025: <span class="ruby-node">&quot;#{t['end', scIdx] ? t['end', scIdx] : '&lt;?&gt;'}&quot;</span>, <span class="ruby-identifier">t</span>,
3015
+ 1026: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
3016
+ 1027: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
3017
+ 1028:
3018
+ 1029: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3019
+ 1030: <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>
3020
+ 1031: <span class="ruby-keyword kw">end</span>
3021
+ 1032: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3022
+ 1033: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
3023
+ 1034: <span class="ruby-keyword kw">end</span>
3024
+ 1035:
3025
+ 1036: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3026
+ 1037: <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>)
3027
+ 1038: <span class="ruby-keyword kw">true</span>
3028
+ 1039: <span class="ruby-keyword kw">end</span></pre>
2981
3029
  </div>
2982
3030
 
2983
3031
  </div>
@@ -2995,7 +3043,7 @@ index <tt>scIdx</tt>.
2995
3043
 
2996
3044
 
2997
3045
  <div id="matching-eports-method" class="method-detail ">
2998
- <a name="M001304"></a>
3046
+ <a name="method-i-matchingReports"></a>
2999
3047
 
3000
3048
  <div class="method-heading">
3001
3049
 
@@ -3014,15 +3062,15 @@ index <tt>scIdx</tt>.
3014
3062
  <div class="method-source-code"
3015
3063
  id="matching-eports-source">
3016
3064
  <pre>
3017
- <span class="ruby-comment cmt"># File lib/Project.rb, line 1015</span>
3018
- 1015: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>)
3019
- 1016: <span class="ruby-identifier">list</span> = []
3020
- 1017: <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>
3021
- 1018: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>
3022
- 1019: <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>
3023
- 1020: <span class="ruby-keyword kw">end</span>
3024
- 1021: <span class="ruby-identifier">list</span>
3025
- 1022: <span class="ruby-keyword kw">end</span></pre>
3065
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 1043</span>
3066
+ 1043: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>)
3067
+ 1044: <span class="ruby-identifier">list</span> = []
3068
+ 1045: <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>
3069
+ 1046: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>
3070
+ 1047: <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>
3071
+ 1048: <span class="ruby-keyword kw">end</span>
3072
+ 1049: <span class="ruby-identifier">list</span>
3073
+ 1050: <span class="ruby-keyword kw">end</span></pre>
3026
3074
  </div>
3027
3075
 
3028
3076
  </div>