taskjuggler 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. data/benchmarks/UTF-8-Strings.rb +58 -0
  2. data/data/css/tjmanual.css +52 -0
  3. data/data/css/tjreport.css +195 -0
  4. data/data/icons/details.png +0 -0
  5. data/data/icons/flag-green.png +0 -0
  6. data/data/icons/flag-red.png +0 -0
  7. data/data/icons/flag-yellow.png +0 -0
  8. data/data/icons/resource.png +0 -0
  9. data/data/icons/resourcegroup.png +0 -0
  10. data/data/icons/task.png +0 -0
  11. data/data/icons/taskgroup.png +0 -0
  12. data/data/icons/trend-down.png +0 -0
  13. data/data/icons/trend-flat.png +0 -0
  14. data/data/icons/trend-up.png +0 -0
  15. data/data/scripts/wz_tooltip.js +1301 -0
  16. data/doc/classes/AppConfig.html +298 -230
  17. data/doc/classes/Arguments.html +8 -8
  18. data/doc/classes/Object.html +7 -7
  19. data/doc/classes/String.html +89 -89
  20. data/doc/classes/TaskJuggler.html +396 -264
  21. data/doc/classes/TaskJuggler/Account.html +18 -18
  22. data/doc/classes/TaskJuggler/AccountAttribute.html +26 -26
  23. data/doc/classes/TaskJuggler/AccountScenario.html +12 -12
  24. data/doc/classes/TaskJuggler/Allocation.html +30 -30
  25. data/doc/classes/TaskJuggler/AllocationAttribute.html +26 -26
  26. data/doc/classes/TaskJuggler/AttributeBase.html +227 -115
  27. data/doc/classes/TaskJuggler/AttributeDefinition.html +6 -6
  28. data/doc/classes/TaskJuggler/BatchProcessor.html +117 -83
  29. data/doc/classes/TaskJuggler/Booking.html +18 -18
  30. data/doc/classes/TaskJuggler/BookingListAttribute.html +26 -26
  31. data/doc/classes/TaskJuggler/BooleanAttribute.html +26 -26
  32. data/doc/classes/TaskJuggler/CSVFile.html +24 -24
  33. data/doc/classes/TaskJuggler/CellSettingPattern.html +201 -0
  34. data/doc/classes/TaskJuggler/CellSettingPatternList.html +253 -0
  35. data/doc/classes/TaskJuggler/Charge.html +18 -18
  36. data/doc/classes/TaskJuggler/ChargeListAttribute.html +20 -20
  37. data/doc/classes/TaskJuggler/ChargeSet.html +37 -37
  38. data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +26 -26
  39. data/doc/classes/TaskJuggler/ColumnListAttribute.html +20 -20
  40. data/doc/classes/TaskJuggler/ColumnTable.html +40 -40
  41. data/doc/classes/TaskJuggler/DateAttribute.html +54 -15
  42. data/doc/classes/TaskJuggler/DefinitionListAttribute.html +10 -10
  43. data/doc/classes/TaskJuggler/DependencyListAttribute.html +47 -47
  44. data/doc/classes/TaskJuggler/DurationAttribute.html +30 -30
  45. data/doc/classes/TaskJuggler/FixnumAttribute.html +20 -20
  46. data/doc/classes/TaskJuggler/FlagListAttribute.html +43 -43
  47. data/doc/classes/TaskJuggler/FloatAttribute.html +30 -30
  48. data/doc/classes/TaskJuggler/FormatListAttribute.html +21 -21
  49. data/doc/classes/TaskJuggler/GanttChart.html +48 -48
  50. data/doc/classes/TaskJuggler/GanttContainer.html +42 -42
  51. data/doc/classes/TaskJuggler/GanttHeader.html +12 -12
  52. data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +12 -12
  53. data/doc/classes/TaskJuggler/GanttLine.html +24 -24
  54. data/doc/classes/TaskJuggler/GanttLoadStack.html +18 -18
  55. data/doc/classes/TaskJuggler/GanttMilestone.html +42 -42
  56. data/doc/classes/TaskJuggler/GanttRouter.html +24 -24
  57. data/doc/classes/TaskJuggler/GanttTaskBar.html +42 -42
  58. data/doc/classes/TaskJuggler/HTMLDocument.html +13 -13
  59. data/doc/classes/TaskJuggler/HTMLGraphics.html +12 -12
  60. data/doc/classes/TaskJuggler/Interval.html +57 -57
  61. data/doc/classes/TaskJuggler/IntervalListAttribute.html +47 -47
  62. data/doc/classes/TaskJuggler/JobInfo.html +68 -12
  63. data/doc/classes/TaskJuggler/Journal.html +266 -20
  64. data/doc/classes/TaskJuggler/JournalEntry.html +79 -23
  65. data/doc/classes/TaskJuggler/JournalEntryList.html +454 -0
  66. data/doc/classes/TaskJuggler/KeywordArray.html +10 -10
  67. data/doc/classes/TaskJuggler/KeywordDocumentation.html +171 -170
  68. data/doc/classes/TaskJuggler/Limits.html +36 -36
  69. data/doc/classes/TaskJuggler/Limits/Limit.html +30 -30
  70. data/doc/classes/TaskJuggler/LimitsAttribute.html +40 -40
  71. data/doc/classes/TaskJuggler/ListAttributeBase.html +20 -20
  72. data/doc/classes/TaskJuggler/Log.html +145 -107
  73. data/doc/classes/TaskJuggler/LogicalAttribute.html +65 -36
  74. data/doc/classes/TaskJuggler/LogicalExpression.html +61 -24
  75. data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +20 -20
  76. data/doc/classes/TaskJuggler/LogicalFlag.html +31 -51
  77. data/doc/classes/TaskJuggler/LogicalFunction.html +64 -53
  78. data/doc/classes/TaskJuggler/LogicalOperation.html +103 -55
  79. data/doc/classes/TaskJuggler/Macro.html +6 -6
  80. data/doc/classes/TaskJuggler/MacroParser.html +36 -36
  81. data/doc/classes/TaskJuggler/MacroTable.html +37 -37
  82. data/doc/classes/TaskJuggler/Message.html +12 -12
  83. data/doc/classes/TaskJuggler/MessageHandler.html +32 -20
  84. data/doc/classes/TaskJuggler/Navigator.html +110 -46
  85. data/doc/classes/TaskJuggler/NavigatorElement.html +449 -0
  86. data/doc/classes/TaskJuggler/OnShiftCache.html +24 -24
  87. data/doc/classes/TaskJuggler/Project.html +1158 -893
  88. data/doc/classes/TaskJuggler/ProjectFileParser.html +94 -91
  89. data/doc/classes/TaskJuggler/PropertyAttribute.html +20 -20
  90. data/doc/classes/TaskJuggler/PropertyList.html +225 -155
  91. data/doc/classes/TaskJuggler/PropertySet.html +375 -332
  92. data/doc/classes/TaskJuggler/PropertyTreeNode.html +750 -510
  93. data/doc/classes/TaskJuggler/Query.html +404 -139
  94. data/doc/classes/TaskJuggler/{RTPNavigator.html → RTFNavigator.html} +57 -56
  95. data/doc/classes/TaskJuggler/RTFQuery.html +343 -0
  96. data/doc/classes/TaskJuggler/{RTPReport.html → RTFReport.html} +70 -67
  97. data/doc/classes/TaskJuggler/RealFormat.html +18 -18
  98. data/doc/classes/TaskJuggler/RealFormatAttribute.html +10 -10
  99. data/doc/classes/TaskJuggler/ReferenceAttribute.html +107 -40
  100. data/doc/classes/TaskJuggler/RemoteServiceManager.html +335 -0
  101. data/doc/classes/TaskJuggler/Report.html +66 -64
  102. data/doc/classes/TaskJuggler/ReportBase.html +112 -123
  103. data/doc/classes/TaskJuggler/ReportContext.html +43 -38
  104. data/doc/classes/TaskJuggler/ReportServer.html +320 -0
  105. data/doc/classes/TaskJuggler/ReportTable.html +42 -42
  106. data/doc/classes/TaskJuggler/ReportTableCell.html +221 -129
  107. data/doc/classes/TaskJuggler/ReportTableColumn.html +27 -27
  108. data/doc/classes/TaskJuggler/ReportTableLegend.html +24 -24
  109. data/doc/classes/TaskJuggler/ReportTableLine.html +126 -80
  110. data/doc/classes/TaskJuggler/Resource.html +12 -12
  111. data/doc/classes/TaskJuggler/ResourceListAttribute.html +82 -47
  112. data/doc/classes/TaskJuggler/ResourceListRE.html +43 -39
  113. data/doc/classes/TaskJuggler/ResourceScenario.html +413 -321
  114. data/doc/classes/TaskJuggler/RichText.html +64 -248
  115. data/doc/classes/TaskJuggler/RichTextAttribute.html +94 -30
  116. data/doc/classes/TaskJuggler/RichTextDocument.html +87 -85
  117. data/doc/classes/TaskJuggler/RichTextElement.html +456 -363
  118. data/doc/classes/TaskJuggler/RichTextException.html +13 -13
  119. data/doc/classes/TaskJuggler/{RichTextProtocolExample.html → RichTextFunctionExample.html} +64 -63
  120. data/doc/classes/TaskJuggler/{RichTextProtocolHandler.html → RichTextFunctionHandler.html} +42 -36
  121. data/doc/classes/TaskJuggler/RichTextIntermediate.html +563 -0
  122. data/doc/classes/TaskJuggler/RichTextParser.html +54 -51
  123. data/doc/classes/TaskJuggler/RichTextScanner.html +94 -92
  124. data/doc/classes/TaskJuggler/RichTextSnip.html +96 -60
  125. data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +369 -227
  126. data/doc/classes/TaskJuggler/Scenario.html +6 -6
  127. data/doc/classes/TaskJuggler/ScenarioData.html +37 -37
  128. data/doc/classes/TaskJuggler/ScenarioListAttribute.html +31 -31
  129. data/doc/classes/TaskJuggler/Scoreboard.html +66 -66
  130. data/doc/classes/TaskJuggler/Shift.html +18 -18
  131. data/doc/classes/TaskJuggler/ShiftAssignment.html +54 -54
  132. data/doc/classes/TaskJuggler/ShiftAssignments.html +78 -78
  133. data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +40 -40
  134. data/doc/classes/TaskJuggler/ShiftScenario.html +24 -24
  135. data/doc/classes/TaskJuggler/SortListAttribute.html +22 -22
  136. data/doc/classes/TaskJuggler/SourceFileInfo.html +12 -12
  137. data/doc/classes/TaskJuggler/StringAttribute.html +30 -30
  138. data/doc/classes/TaskJuggler/SymbolAttribute.html +20 -20
  139. data/doc/classes/TaskJuggler/SyntaxReference.html +42 -42
  140. data/doc/classes/TaskJuggler/TOCEntry.html +12 -12
  141. data/doc/classes/TaskJuggler/TSResourceRecord.html +197 -0
  142. data/doc/classes/TaskJuggler/TSTaskRecord.html +215 -0
  143. data/doc/classes/TaskJuggler/TableColumnDefinition.html +64 -43
  144. data/doc/classes/TaskJuggler/TableOfContents.html +18 -18
  145. data/doc/classes/TaskJuggler/TableReport.html +447 -468
  146. data/doc/classes/TaskJuggler/Task.html +12 -12
  147. data/doc/classes/TaskJuggler/TaskDependency.html +12 -12
  148. data/doc/classes/TaskJuggler/TaskListAttribute.html +47 -47
  149. data/doc/classes/TaskJuggler/TaskListRE.html +43 -39
  150. data/doc/classes/TaskJuggler/TaskScenario.html +529 -282
  151. data/doc/classes/TaskJuggler/TextParser.html +215 -194
  152. data/doc/classes/TaskJuggler/TextParser/Pattern.html +97 -97
  153. data/doc/classes/TaskJuggler/TextParser/Rule.html +84 -84
  154. data/doc/classes/TaskJuggler/TextParser/StackElement.html +16 -15
  155. data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +12 -12
  156. data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +6 -6
  157. data/doc/classes/TaskJuggler/TextReport.html +77 -74
  158. data/doc/classes/TaskJuggler/TextScanner.html +294 -281
  159. data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +70 -70
  160. data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +59 -60
  161. data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +12 -12
  162. data/doc/classes/TaskJuggler/TimeSheetReport.html +406 -0
  163. data/doc/classes/TaskJuggler/TjException.html +6 -6
  164. data/doc/classes/TaskJuggler/TjTime.html +522 -513
  165. data/doc/classes/TaskJuggler/TjpExample.html +25 -25
  166. data/doc/classes/TaskJuggler/TjpExportRE.html +21 -24
  167. data/doc/classes/TaskJuggler/TjpSyntaxRules.html +6177 -4318
  168. data/doc/classes/TaskJuggler/UserManual.html +212 -213
  169. data/doc/classes/TaskJuggler/WorkingHours.html +49 -49
  170. data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +53 -53
  171. data/doc/classes/TaskJuggler/XMLBlob.html +21 -21
  172. data/doc/classes/TaskJuggler/XMLComment.html +21 -21
  173. data/doc/classes/TaskJuggler/XMLDocument.html +27 -26
  174. data/doc/classes/TaskJuggler/XMLElement.html +86 -50
  175. data/doc/classes/TaskJuggler/XMLNamedText.html +11 -11
  176. data/doc/classes/TaskJuggler/XMLText.html +36 -36
  177. data/doc/files/COPYING.html +1 -1
  178. data/doc/files/README.html +1 -1
  179. data/doc/files/lib/AccountScenario_rb.html +3 -2
  180. data/doc/files/lib/Account_rb.html +3 -2
  181. data/doc/files/lib/Allocation_rb.html +3 -2
  182. data/doc/files/lib/AppConfig_rb.html +5 -2
  183. data/doc/files/lib/AttributeBase_rb.html +3 -2
  184. data/doc/files/lib/AttributeDefinition_rb.html +3 -2
  185. data/doc/files/lib/Attributes_rb.html +3 -2
  186. data/doc/files/lib/BatchProcessor_rb.html +4 -3
  187. data/doc/files/lib/Booking_rb.html +3 -2
  188. data/doc/files/lib/ChargeSet_rb.html +3 -2
  189. data/doc/files/lib/Charge_rb.html +3 -2
  190. data/doc/files/lib/HTMLDocument_rb.html +3 -2
  191. data/doc/files/lib/Interval_rb.html +3 -2
  192. data/doc/files/lib/Journal_rb.html +4 -3
  193. data/doc/files/lib/KeywordArray_rb.html +3 -2
  194. data/doc/files/lib/KeywordDocumentation_rb.html +3 -2
  195. data/doc/files/lib/Limits_rb.html +3 -2
  196. data/doc/files/lib/Log_rb.html +3 -2
  197. data/doc/files/lib/LogicalExpression_rb.html +3 -2
  198. data/doc/files/lib/LogicalFunction_rb.html +3 -2
  199. data/doc/files/lib/LogicalOperation_rb.html +3 -2
  200. data/doc/files/lib/MacroParser_rb.html +3 -2
  201. data/doc/files/lib/MacroTable_rb.html +3 -2
  202. data/doc/files/lib/MessageHandler_rb.html +3 -2
  203. data/doc/files/lib/Message_rb.html +3 -2
  204. data/doc/files/lib/ProjectFileParser_rb.html +7 -4
  205. data/doc/files/lib/Project_rb.html +3 -2
  206. data/doc/files/lib/PropertyList_rb.html +3 -2
  207. data/doc/files/lib/PropertySet_rb.html +3 -2
  208. data/doc/files/lib/PropertyTreeNode_rb.html +3 -2
  209. data/doc/files/lib/Query_rb.html +3 -2
  210. data/doc/files/lib/{RTPNavigator_rb.html → RTFNavigator_rb.html} +8 -7
  211. data/doc/files/lib/RTFQuery_rb.html +121 -0
  212. data/doc/files/lib/{RTPReport_rb.html → RTFReport_rb.html} +8 -7
  213. data/doc/files/lib/RealFormat_rb.html +3 -2
  214. data/doc/files/lib/RemoteServiceManager_rb.html +117 -0
  215. data/doc/files/lib/ReportServer_rb.html +107 -0
  216. data/doc/files/lib/ResourceScenario_rb.html +3 -2
  217. data/doc/files/lib/Resource_rb.html +3 -2
  218. data/doc/files/lib/RichTextDocument_rb.html +4 -3
  219. data/doc/files/lib/RichTextElement_rb.html +3 -2
  220. data/doc/files/lib/{RichTextProtocolExample_rb.html → RichTextFunctionExample_rb.html} +8 -7
  221. data/doc/files/lib/{RichTextProtocolHandler_rb.html → RichTextFunctionHandler_rb.html} +7 -6
  222. data/doc/files/lib/RichTextParser_rb.html +3 -2
  223. data/doc/files/lib/RichTextScanner_rb.html +3 -2
  224. data/doc/files/lib/RichTextSnip_rb.html +3 -2
  225. data/doc/files/lib/RichTextSyntaxRules_rb.html +3 -2
  226. data/doc/files/lib/RichText_rb.html +3 -2
  227. data/doc/files/lib/ScenarioData_rb.html +3 -2
  228. data/doc/files/lib/Scenario_rb.html +3 -2
  229. data/doc/files/lib/Scoreboard_rb.html +3 -2
  230. data/doc/files/lib/ShiftAssignments_rb.html +3 -2
  231. data/doc/files/lib/ShiftScenario_rb.html +3 -2
  232. data/doc/files/lib/Shift_rb.html +3 -2
  233. data/doc/files/lib/SourceFileInfo_rb.html +3 -2
  234. data/doc/files/lib/SyntaxReference_rb.html +3 -2
  235. data/doc/files/lib/TOCEntry_rb.html +3 -2
  236. data/doc/files/lib/TableColumnDefinition_rb.html +3 -2
  237. data/doc/files/lib/TableOfContents_rb.html +3 -2
  238. data/doc/files/lib/TaskDependency_rb.html +3 -2
  239. data/doc/files/lib/TaskJuggler_rb.html +7 -2
  240. data/doc/files/lib/TaskScenario_rb.html +3 -2
  241. data/doc/files/lib/Task_rb.html +3 -2
  242. data/doc/files/lib/TextParser/Pattern_rb.html +4 -3
  243. data/doc/files/lib/TextParser/Rule_rb.html +4 -3
  244. data/doc/files/lib/TextParser/StackElement_rb.html +4 -3
  245. data/doc/files/lib/TextParser/TokenDoc_rb.html +4 -3
  246. data/doc/files/lib/TextParser_rb.html +3 -2
  247. data/doc/files/lib/TextScanner_rb.html +3 -2
  248. data/doc/files/lib/Tj3Config_rb.html +3 -2
  249. data/doc/files/lib/TjException_rb.html +3 -2
  250. data/doc/files/lib/TjTime_rb.html +3 -2
  251. data/doc/files/lib/TjpExample_rb.html +3 -2
  252. data/doc/files/lib/TjpSyntaxRules_rb.html +3 -2
  253. data/doc/files/lib/UTF8String_rb.html +14 -6
  254. data/doc/files/lib/UserManual_rb.html +6 -3
  255. data/doc/files/lib/WorkingHours_rb.html +3 -2
  256. data/doc/files/lib/XMLDocument_rb.html +3 -2
  257. data/doc/files/lib/XMLElement_rb.html +3 -2
  258. data/doc/files/lib/deep_copy_rb.html +3 -2
  259. data/doc/files/lib/reports/CSVFile_rb.html +3 -2
  260. data/doc/files/lib/reports/ColumnTable_rb.html +3 -2
  261. data/doc/files/lib/reports/GanttChart_rb.html +3 -2
  262. data/doc/files/lib/reports/GanttContainer_rb.html +3 -2
  263. data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +3 -2
  264. data/doc/files/lib/reports/GanttHeader_rb.html +3 -2
  265. data/doc/files/lib/reports/GanttLine_rb.html +3 -2
  266. data/doc/files/lib/reports/GanttLoadStack_rb.html +3 -2
  267. data/doc/files/lib/reports/GanttMilestone_rb.html +3 -2
  268. data/doc/files/lib/reports/GanttRouter_rb.html +3 -2
  269. data/doc/files/lib/reports/GanttTaskBar_rb.html +3 -2
  270. data/doc/files/lib/reports/HTMLGraphics_rb.html +3 -2
  271. data/doc/files/lib/reports/Navigator_rb.html +3 -2
  272. data/doc/files/lib/reports/ReportBase_rb.html +3 -2
  273. data/doc/files/lib/reports/ReportContext_rb.html +3 -2
  274. data/doc/files/lib/reports/ReportTableCell_rb.html +3 -2
  275. data/doc/files/lib/reports/ReportTableColumn_rb.html +3 -2
  276. data/doc/files/lib/reports/ReportTableLegend_rb.html +3 -2
  277. data/doc/files/lib/reports/ReportTableLine_rb.html +3 -2
  278. data/doc/files/lib/reports/ReportTable_rb.html +3 -2
  279. data/doc/files/lib/reports/Report_rb.html +7 -2
  280. data/doc/files/lib/reports/ResourceListRE_rb.html +3 -2
  281. data/doc/files/lib/reports/TableReport_rb.html +3 -2
  282. data/doc/files/lib/reports/TaskListRE_rb.html +3 -2
  283. data/doc/files/lib/reports/TextReport_rb.html +4 -3
  284. data/doc/files/lib/reports/TimeSheetReport_rb.html +117 -0
  285. data/doc/files/lib/reports/TjpExportRE_rb.html +3 -2
  286. data/doc/files/lib/taskjuggler3_rb.html +94 -77
  287. data/doc/files/lib/tj3client_rb.html +280 -0
  288. data/doc/files/lib/tj3man_rb.html +10 -9
  289. data/doc/fr_class_index.html +27 -5
  290. data/doc/fr_file_index.html +15 -7
  291. data/doc/fr_method_index.html +1312 -1020
  292. data/examples/tutorial.tjp +113 -14
  293. data/gem_spec.rb +2 -1
  294. data/lib/Account.rb +1 -1
  295. data/lib/AccountScenario.rb +1 -1
  296. data/lib/Allocation.rb +1 -1
  297. data/lib/AppConfig.rb +23 -10
  298. data/lib/AttributeBase.rb +34 -6
  299. data/lib/AttributeDefinition.rb +1 -1
  300. data/lib/Attributes.rb +51 -16
  301. data/lib/BatchProcessor.rb +204 -77
  302. data/lib/Booking.rb +1 -1
  303. data/lib/Charge.rb +1 -1
  304. data/lib/ChargeSet.rb +1 -1
  305. data/lib/HTMLDocument.rb +2 -2
  306. data/lib/Interval.rb +1 -1
  307. data/lib/Journal.rb +231 -9
  308. data/lib/KeywordArray.rb +1 -1
  309. data/lib/KeywordDocumentation.rb +6 -4
  310. data/lib/Limits.rb +1 -1
  311. data/lib/Log.rb +8 -1
  312. data/lib/LogicalExpression.rb +14 -13
  313. data/lib/LogicalFunction.rb +88 -14
  314. data/lib/LogicalOperation.rb +124 -53
  315. data/lib/MacroParser.rb +1 -1
  316. data/lib/MacroTable.rb +2 -2
  317. data/lib/Message.rb +1 -1
  318. data/lib/MessageHandler.rb +7 -3
  319. data/lib/Project.rb +93 -14
  320. data/lib/ProjectFileParser.rb +30 -15
  321. data/lib/PropertyList.rb +103 -36
  322. data/lib/PropertySet.rb +22 -10
  323. data/lib/PropertyTreeNode.rb +120 -15
  324. data/lib/Query.rb +119 -48
  325. data/lib/{RTPNavigator.rb → RTFNavigator.rb} +11 -10
  326. data/lib/RTFQuery.rb +166 -0
  327. data/lib/{RTPReport.rb → RTFReport.rb} +11 -8
  328. data/lib/RealFormat.rb +1 -1
  329. data/lib/RemoteServiceManager.rb +80 -0
  330. data/lib/ReportServer.rb +66 -0
  331. data/lib/Resource.rb +1 -1
  332. data/lib/ResourceScenario.rb +48 -19
  333. data/lib/RichText.rb +98 -41
  334. data/lib/RichTextDocument.rb +10 -8
  335. data/lib/RichTextElement.rb +72 -28
  336. data/lib/{RichTextProtocolExample.rb → RichTextFunctionExample.rb} +8 -7
  337. data/lib/{RichTextProtocolHandler.rb → RichTextFunctionHandler.rb} +12 -14
  338. data/lib/RichTextParser.rb +6 -3
  339. data/lib/RichTextScanner.rb +91 -19
  340. data/lib/RichTextSnip.rb +8 -3
  341. data/lib/RichTextSyntaxRules.rb +103 -45
  342. data/lib/Scenario.rb +1 -1
  343. data/lib/ScenarioData.rb +2 -2
  344. data/lib/Scoreboard.rb +1 -1
  345. data/lib/Shift.rb +1 -1
  346. data/lib/ShiftAssignments.rb +1 -1
  347. data/lib/ShiftScenario.rb +1 -1
  348. data/lib/SourceFileInfo.rb +1 -1
  349. data/lib/SyntaxReference.rb +2 -2
  350. data/lib/TOCEntry.rb +1 -1
  351. data/lib/TableColumnDefinition.rb +59 -16
  352. data/lib/TableOfContents.rb +1 -1
  353. data/lib/Task.rb +1 -1
  354. data/lib/TaskDependency.rb +1 -1
  355. data/lib/TaskJuggler.rb +31 -8
  356. data/lib/TaskScenario.rb +165 -16
  357. data/lib/TextParser.rb +36 -22
  358. data/lib/TextParser/Pattern.rb +3 -3
  359. data/lib/TextParser/Rule.rb +2 -2
  360. data/lib/TextParser/StackElement.rb +4 -3
  361. data/lib/TextParser/TokenDoc.rb +2 -2
  362. data/lib/TextScanner.rb +52 -37
  363. data/lib/Tj3Config.rb +6 -5
  364. data/lib/TjException.rb +1 -1
  365. data/lib/TjTime.rb +12 -3
  366. data/lib/TjpExample.rb +1 -1
  367. data/lib/TjpSyntaxRules.rb +1044 -150
  368. data/lib/UTF8String.rb +2 -1
  369. data/lib/UserManual.rb +18 -70
  370. data/lib/WorkingHours.rb +3 -3
  371. data/lib/XMLDocument.rb +3 -2
  372. data/lib/XMLElement.rb +6 -1
  373. data/lib/deep_copy.rb +1 -1
  374. data/lib/reports/CSVFile.rb +1 -1
  375. data/lib/reports/ColumnTable.rb +9 -9
  376. data/lib/reports/GanttChart.rb +1 -1
  377. data/lib/reports/GanttContainer.rb +1 -1
  378. data/lib/reports/GanttHeader.rb +1 -1
  379. data/lib/reports/GanttHeaderScaleItem.rb +1 -1
  380. data/lib/reports/GanttLine.rb +40 -40
  381. data/lib/reports/GanttLoadStack.rb +1 -1
  382. data/lib/reports/GanttMilestone.rb +1 -1
  383. data/lib/reports/GanttRouter.rb +1 -1
  384. data/lib/reports/GanttTaskBar.rb +1 -1
  385. data/lib/reports/HTMLGraphics.rb +1 -1
  386. data/lib/reports/Navigator.rb +149 -22
  387. data/lib/reports/Report.rb +115 -172
  388. data/lib/reports/ReportBase.rb +22 -27
  389. data/lib/reports/ReportContext.rb +29 -15
  390. data/lib/reports/ReportTable.rb +1 -1
  391. data/lib/reports/ReportTableCell.rb +120 -27
  392. data/lib/reports/ReportTableColumn.rb +3 -3
  393. data/lib/reports/ReportTableLegend.rb +1 -1
  394. data/lib/reports/ReportTableLine.rb +10 -2
  395. data/lib/reports/ResourceListRE.rb +5 -1
  396. data/lib/reports/TableReport.rb +237 -287
  397. data/lib/reports/TaskListRE.rb +5 -1
  398. data/lib/reports/TextReport.rb +7 -4
  399. data/lib/reports/TimeSheetReport.rb +233 -0
  400. data/lib/reports/TjpExportRE.rb +2 -2
  401. data/lib/taskjuggler3.rb +27 -11
  402. data/lib/tj3client.rb +110 -0
  403. data/lib/tj3man.rb +4 -4
  404. data/manual/Getting_Started +0 -50
  405. data/manual/How_To_Contribute +6 -13
  406. data/manual/Installation +102 -28
  407. data/manual/Intro +11 -1
  408. data/manual/Reporting_Bugs +23 -7
  409. data/manual/Rich_Text_Attributes +59 -6
  410. data/manual/TaskJuggler_2x_Migration +27 -0
  411. data/manual/The_TaskJuggler_Syntax +104 -0
  412. data/manual/Tutorial +10 -9
  413. data/prj_cfg.rb +8 -2
  414. data/tasks/csts.rake +1 -1
  415. data/tasks/manual.rake +5 -3
  416. data/test/MessageChecker.rb +1 -1
  417. data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
  418. data/test/TestSuite/HTML-Reports/Alerts.tjp +77 -0
  419. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  420. data/test/TestSuite/HTML-Reports/CellText.tjp +75 -0
  421. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  422. data/test/TestSuite/HTML-Reports/ColumnPeriods.tjp +44 -0
  423. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  424. data/test/TestSuite/HTML-Reports/IsOngoing.tjp +34 -0
  425. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +80 -0
  426. data/test/TestSuite/HTML-Reports/LogicalFunctions.tjp +20 -0
  427. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  428. data/test/TestSuite/HTML-Reports/Query.tjp +28 -0
  429. data/test/TestSuite/HTML-Reports/Sorting.tjp +68 -0
  430. data/test/TestSuite/HTML-Reports/TimeSheet.tjp +69 -0
  431. data/test/TestSuite/HTML-Reports/UDAQuery.tjp +27 -0
  432. data/test/TestSuite/HTML-Reports/css/tjmanual.css +52 -0
  433. data/test/TestSuite/HTML-Reports/css/tjreport.css +195 -0
  434. data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
  435. data/test/TestSuite/HTML-Reports/icons/details.png +0 -0
  436. data/test/TestSuite/HTML-Reports/icons/flag-green.png +0 -0
  437. data/test/TestSuite/HTML-Reports/icons/flag-red.png +0 -0
  438. data/test/TestSuite/HTML-Reports/icons/flag-yellow.png +0 -0
  439. data/test/TestSuite/HTML-Reports/icons/resource.png +0 -0
  440. data/test/TestSuite/HTML-Reports/icons/resourcegroup.png +0 -0
  441. data/test/TestSuite/HTML-Reports/icons/task.png +0 -0
  442. data/test/TestSuite/HTML-Reports/icons/taskgroup.png +0 -0
  443. data/test/TestSuite/HTML-Reports/reference.tjp +7 -8
  444. data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
  445. data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +1301 -0
  446. data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +34 -0
  447. data/test/TestSuite/Syntax/Correct/Celltext.tjp +2 -1
  448. data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -2
  449. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +2 -1
  450. data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +20 -0
  451. data/test/TestSuite/Syntax/Correct/Query.tjp +18 -0
  452. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +45 -0
  453. data/test/TestSuite/Syntax/Correct/TimeSheet.tjp +49 -0
  454. data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
  455. data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
  456. data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
  457. data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
  458. data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
  459. data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
  460. data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
  461. data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
  462. data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
  463. data/test/TestSuite/Syntax/Correct/tutorial.tjp +113 -14
  464. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +28 -0
  465. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +12 -0
  466. data/test/all.rb +2 -2
  467. data/test/test_BatchProcessor.rb +42 -13
  468. data/test/test_CSV-Reports.rb +1 -1
  469. data/test/test_Journal.rb +176 -0
  470. data/test/test_Limits.rb +1 -1
  471. data/test/test_LogicalExpression.rb +14 -5
  472. data/test/test_MacroTable.rb +1 -1
  473. data/test/test_Project.rb +1 -1
  474. data/test/test_PropertySet.rb +1 -1
  475. data/test/test_Query.rb +1 -1
  476. data/test/test_RealFormat.rb +1 -1
  477. data/test/test_RichText.rb +30 -20
  478. data/test/test_Scheduler.rb +1 -1
  479. data/test/test_ShiftAssignments.rb +2 -2
  480. data/test/test_Syntax.rb +1 -1
  481. data/test/test_TextScanner.rb +1 -1
  482. data/test/test_TjTime.rb +1 -1
  483. data/test/test_TjpExample.rb +1 -1
  484. data/test/test_UTF8String.rb +1 -1
  485. data/test/test_WorkingHours.rb +1 -1
  486. data/test/test_deep_copy.rb +2 -2
  487. metadata +610 -532
  488. data/doc/files/lib/ms_test_rb.html +0 -90
  489. data/examples/ContactList.html +0 -1467
  490. data/examples/Deliveries.html +0 -485
  491. data/examples/Development.html +0 -2525
  492. data/examples/Overview.html +0 -747
  493. data/examples/Resource Graph.html +0 -616
  494. data/lib/ms_test.rb +0 -27
  495. data/test/TestSuite/HTML-Reports/reference-export.html +0 -187
@@ -117,67 +117,79 @@ list of known Attributes.
117
117
 
118
118
  <div class="name-list">
119
119
 
120
- <a href="#M000794">[]</a>&nbsp;&nbsp;
120
+ <a href="#M000756">[]</a>&nbsp;&nbsp;
121
121
 
122
- <a href="#M000795">[]=</a>&nbsp;&nbsp;
122
+ <a href="#M000757">[]=</a>&nbsp;&nbsp;
123
123
 
124
- <a href="#M000804">account</a>&nbsp;&nbsp;
124
+ <a href="#M000770">account</a>&nbsp;&nbsp;
125
125
 
126
- <a href="#M000817">attributeName</a>&nbsp;&nbsp;
126
+ <a href="#M000762">alertLevelColor</a>&nbsp;&nbsp;
127
127
 
128
- <a href="#M000812">convertToDailyLoad</a>&nbsp;&nbsp;
128
+ <a href="#M000760">alertLevelId</a>&nbsp;&nbsp;
129
129
 
130
- <a href="#M000797">dailyWorkingHours</a>&nbsp;&nbsp;
130
+ <a href="#M000759">alertLevelIndex</a>&nbsp;&nbsp;
131
131
 
132
- <a href="#M000815">dateToIdx</a>&nbsp;&nbsp;
132
+ <a href="#M000761">alertLevelName</a>&nbsp;&nbsp;
133
133
 
134
- <a href="#M000792">deep_clone</a>&nbsp;&nbsp;
134
+ <a href="#M000784">attributeName</a>&nbsp;&nbsp;
135
135
 
136
- <a href="#M000820">finishScenario</a>&nbsp;&nbsp;
136
+ <a href="#M000779">convertToDailyLoad</a>&nbsp;&nbsp;
137
137
 
138
- <a href="#M000810">generateReports</a>&nbsp;&nbsp;
138
+ <a href="#M000763">dailyWorkingHours</a>&nbsp;&nbsp;
139
139
 
140
- <a href="#M000814">idxToDate</a>&nbsp;&nbsp;
140
+ <a href="#M000782">dateToIdx</a>&nbsp;&nbsp;
141
141
 
142
- <a href="#M000811">isWorkingTime</a>&nbsp;&nbsp;
142
+ <a href="#M000754">deep_clone</a>&nbsp;&nbsp;
143
143
 
144
- <a href="#M000816">maxScheduleGranularity</a>&nbsp;&nbsp;
144
+ <a href="#M000786">error</a>&nbsp;&nbsp;
145
145
 
146
- <a href="#M000799">monthlyWorkingDays</a>&nbsp;&nbsp;
146
+ <a href="#M000788">finishScenario</a>&nbsp;&nbsp;
147
147
 
148
- <a href="#M000791">new</a>&nbsp;&nbsp;
148
+ <a href="#M000777">generateReport</a>&nbsp;&nbsp;
149
149
 
150
- <a href="#M000819">prepareScenario</a>&nbsp;&nbsp;
150
+ <a href="#M000776">generateReports</a>&nbsp;&nbsp;
151
151
 
152
- <a href="#M000807">report</a>&nbsp;&nbsp;
152
+ <a href="#M000781">idxToDate</a>&nbsp;&nbsp;
153
153
 
154
- <a href="#M000808">reportByName</a>&nbsp;&nbsp;
154
+ <a href="#M000778">isWorkingTime</a>&nbsp;&nbsp;
155
155
 
156
- <a href="#M000806">resource</a>&nbsp;&nbsp;
156
+ <a href="#M000783">maxScheduleGranularity</a>&nbsp;&nbsp;
157
157
 
158
- <a href="#M000801">scenario</a>&nbsp;&nbsp;
158
+ <a href="#M000765">monthlyWorkingDays</a>&nbsp;&nbsp;
159
159
 
160
- <a href="#M000796">scenarioCount</a>&nbsp;&nbsp;
160
+ <a href="#M000753">new</a>&nbsp;&nbsp;
161
161
 
162
- <a href="#M000802">scenarioIdx</a>&nbsp;&nbsp;
162
+ <a href="#M000787">prepareScenario</a>&nbsp;&nbsp;
163
163
 
164
- <a href="#M000809">schedule</a>&nbsp;&nbsp;
164
+ <a href="#M000773">report</a>&nbsp;&nbsp;
165
165
 
166
- <a href="#M000821">scheduleScenario</a>&nbsp;&nbsp;
166
+ <a href="#M000774">reportByName</a>&nbsp;&nbsp;
167
167
 
168
- <a href="#M000813">scoreboardSize</a>&nbsp;&nbsp;
168
+ <a href="#M000772">resource</a>&nbsp;&nbsp;
169
169
 
170
- <a href="#M000793">sendMessage</a>&nbsp;&nbsp;
170
+ <a href="#M000767">scenario</a>&nbsp;&nbsp;
171
171
 
172
- <a href="#M000803">shift</a>&nbsp;&nbsp;
172
+ <a href="#M000758">scenarioCount</a>&nbsp;&nbsp;
173
173
 
174
- <a href="#M000805">task</a>&nbsp;&nbsp;
174
+ <a href="#M000768">scenarioIdx</a>&nbsp;&nbsp;
175
175
 
176
- <a href="#M000818">to_s</a>&nbsp;&nbsp;
176
+ <a href="#M000775">schedule</a>&nbsp;&nbsp;
177
177
 
178
- <a href="#M000798">weeklyWorkingDays</a>&nbsp;&nbsp;
178
+ <a href="#M000789">scheduleScenario</a>&nbsp;&nbsp;
179
179
 
180
- <a href="#M000800">yearlyWorkingDays</a>&nbsp;&nbsp;
180
+ <a href="#M000780">scoreboardSize</a>&nbsp;&nbsp;
181
+
182
+ <a href="#M000755">sendMessage</a>&nbsp;&nbsp;
183
+
184
+ <a href="#M000769">shift</a>&nbsp;&nbsp;
185
+
186
+ <a href="#M000771">task</a>&nbsp;&nbsp;
187
+
188
+ <a href="#M000785">to_s</a>&nbsp;&nbsp;
189
+
190
+ <a href="#M000764">weeklyWorkingDays</a>&nbsp;&nbsp;
191
+
192
+ <a href="#M000766">yearlyWorkingDays</a>&nbsp;&nbsp;
181
193
 
182
194
  </div>
183
195
  </div>
@@ -280,12 +292,12 @@ list of known Attributes.
280
292
  <h3 class="section-bar">Public Class methods</h3>
281
293
 
282
294
 
283
- <div id="method-M000816" class="method-detail">
284
- <a name="M000816"></a>
295
+ <div id="method-M000783" class="method-detail">
296
+ <a name="M000783"></a>
285
297
 
286
298
  <div class="method-heading">
287
299
 
288
- <a href="#M000816" class="method-signature">
300
+ <a href="#M000783" class="method-signature">
289
301
 
290
302
  <span class="method-name">maxScheduleGranularity</span><span class="method-args">()</span>
291
303
 
@@ -303,27 +315,27 @@ granularity is reduced.
303
315
  </p>
304
316
 
305
317
  <p><a class="source-toggle" href="#"
306
- onclick="toggleCode('M000816-source');return false;">[Source]</a></p>
307
- <div class="method-source-code" id="M000816-source">
318
+ onclick="toggleCode('M000783-source');return false;">[Source]</a></p>
319
+ <div class="method-source-code" id="M000783-source">
308
320
  <pre>
309
- <span class="ruby-comment cmt"># File lib/Project.rb, line 669</span>
310
- 669: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
311
- 670: <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>)
312
- 671: <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>)
313
- 672: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
314
- 673: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
315
- 674: <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
316
- 675: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
317
- 676: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
318
- 677: <span class="ruby-value">30</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
319
- 678: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
320
- 679: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
321
- 680: <span class="ruby-comment cmt"># minutes</span>
322
- 681: <span class="ruby-value">15</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
323
- 682: <span class="ruby-keyword kw">else</span>
324
- 683: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
325
- 684: <span class="ruby-keyword kw">end</span>
326
- 685: <span class="ruby-keyword kw">end</span>
321
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 743</span>
322
+ 743: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
323
+ 744: <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>)
324
+ 745: <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>)
325
+ 746: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
326
+ 747: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
327
+ 748: <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
328
+ 749: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
329
+ 750: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
330
+ 751: <span class="ruby-value">30</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
331
+ 752: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
332
+ 753: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
333
+ 754: <span class="ruby-comment cmt"># minutes</span>
334
+ 755: <span class="ruby-value">15</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
335
+ 756: <span class="ruby-keyword kw">else</span>
336
+ 757: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
337
+ 758: <span class="ruby-keyword kw">end</span>
338
+ 759: <span class="ruby-keyword kw">end</span>
327
339
  </pre>
328
340
  </div>
329
341
 
@@ -331,12 +343,12 @@ granularity is reduced.
331
343
  </div>
332
344
 
333
345
 
334
- <div id="method-M000791" class="method-detail">
335
- <a name="M000791"></a>
346
+ <div id="method-M000753" class="method-detail">
347
+ <a name="M000753"></a>
336
348
 
337
349
  <div class="method-heading">
338
350
 
339
- <a href="#M000791" class="method-signature">
351
+ <a href="#M000753" class="method-signature">
340
352
 
341
353
  <span class="method-name">new</span><span class="method-args">(id, name, version, messageHandler)</span>
342
354
 
@@ -355,313 +367,334 @@ The constructor will set default values for all project attributes.
355
367
  </p>
356
368
 
357
369
  <p><a class="source-toggle" href="#"
358
- onclick="toggleCode('M000791-source');return false;">[Source]</a></p>
359
- <div class="method-source-code" id="M000791-source">
370
+ onclick="toggleCode('M000753-source');return false;">[Source]</a></p>
371
+ <div class="method-source-code" id="M000753-source">
360
372
  <pre>
361
373
  <span class="ruby-comment cmt"># File lib/Project.rb, line 56</span>
362
374
  56: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span>, <span class="ruby-identifier">messageHandler</span>)
363
375
  57: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
364
376
  58: <span class="ruby-ivar">@attributes</span> = {
365
- 59: <span class="ruby-value str">'projectid'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;prj&quot;</span>,
366
- 60: <span class="ruby-value str">'projectids'</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-identifier">id</span> ],
367
- 61: <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>,
368
- 62: <span class="ruby-value str">'version'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">version</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;1.0&quot;</span>,
369
- 63: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
370
- 64: <span class="ruby-value str">'copyright'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
371
- 65: <span class="ruby-value str">'currency'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;EUR&quot;</span>,
372
- 66: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">RealFormat</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'-'</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">','</span>, <span class="ruby-value">2</span> ]),
373
- 67: <span class="ruby-value str">'dailyworkinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">8.0</span>,
374
- 68: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
375
- 69: <span class="ruby-value str">'flags'</span> =<span class="ruby-operator">&gt;</span> [],
376
- 70: <span class="ruby-value str">'journal'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Journal</span>.<span class="ruby-identifier">new</span>,
377
- 71: <span class="ruby-value str">'limits'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
378
- 72: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:shortauto</span>,
379
- 73: <span class="ruby-value str">'navigators'</span> =<span class="ruby-operator">&gt;</span> {},
380
- 74: <span class="ruby-value str">'now'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">align</span>(<span class="ruby-value">3600</span>),
381
- 75: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">RealFormat</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'-'</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">'.'</span>, <span class="ruby-value">1</span>]),
382
- 76: <span class="ruby-value str">'priority'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">500</span>,
383
- 77: <span class="ruby-value str">'rate'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span><span class="ruby-value">.0</span>,
384
- 78: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
385
- 79: <span class="ruby-value str">'scheduleGranularity'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>,
386
- 80: <span class="ruby-value str">'shortTimeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%H:%M&quot;</span>,
387
- 81: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
388
- 82: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%Y-%m-%d&quot;</span>,
389
- 83: <span class="ruby-value str">'timezone'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
390
- 84: <span class="ruby-value str">'vacations'</span> =<span class="ruby-operator">&gt;</span> [],
391
- 85: <span class="ruby-value str">'weekStartsMonday'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>,
392
- 86: <span class="ruby-value str">'workinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">WorkingHours</span>.<span class="ruby-identifier">new</span>,
393
- 87: <span class="ruby-value str">'yearlyworkingdays'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">260.714</span>
394
- 88: }
395
- 89:
396
- 90: <span class="ruby-comment cmt"># Before we can add any properties to this project, we need to define the</span>
397
- 91: <span class="ruby-comment cmt"># attributes that each of the property types will be using. In TaskJuggler</span>
398
- 92: <span class="ruby-comment cmt"># lingo, properties of a project are resources, tasks, accounts, shifts</span>
399
- 93: <span class="ruby-comment cmt"># and scenarios. Each of these properties can have lots of further</span>
400
- 94: <span class="ruby-comment cmt"># information attached to it. These bits of information are called</span>
401
- 95: <span class="ruby-comment cmt"># attributes. An attribute is defined by the AttributeDefinition class.</span>
402
- 96: <span class="ruby-comment cmt"># The PropertySet objects need to be fed with a list of such attribute</span>
403
- 97: <span class="ruby-comment cmt"># definitions to register the attributes with the properties.</span>
404
- 98: <span class="ruby-ivar">@scenarios</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
405
- 99: <span class="ruby-identifier">attrs</span> = [
406
- 100: <span class="ruby-comment cmt"># ID Name Type</span>
407
- 101: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
408
- 102: [ <span class="ruby-value str">'enabled'</span>, <span class="ruby-value str">'Enabled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
409
- 103: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
410
- 104: [ <span class="ruby-value str">'minslackrate'</span>, <span class="ruby-value str">'Min. Slack Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
411
- 105: <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">1.0</span> ],
412
- 106: [ <span class="ruby-value str">'projection'</span>, <span class="ruby-value str">'Projection Mode'</span>, <span class="ruby-constant">BooleanAttribute</span>,
413
- 107: <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> ],
414
- 108: [ <span class="ruby-value str">'strict'</span>, <span class="ruby-value str">'Strict Bookings'</span>, <span class="ruby-constant">BooleanAttribute</span>,
415
- 109: <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> ]
416
- 110: ]
417
- 111: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
418
- 112:
419
- 113: <span class="ruby-ivar">@shifts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
420
- 114: <span class="ruby-identifier">attrs</span> = [
421
- 115: <span class="ruby-comment cmt"># ID Name Type</span>
422
- 116: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
423
- 117: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
424
- 118: <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> ],
425
- 119: [ <span class="ruby-value str">'replace'</span>, <span class="ruby-value str">'Replace'</span>, <span class="ruby-constant">BooleanAttribute</span>,
426
- 120: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
427
- 121: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
428
- 122: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
429
- 123: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
430
- 124: <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> ],
431
- 125: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
432
- 126: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
433
- 127: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
434
- 128: <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> ],
435
- 129: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
436
- 130: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
437
- 131: ]
438
- 132: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
439
- 133:
440
- 134: <span class="ruby-ivar">@accounts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
441
- 135: <span class="ruby-identifier">attrs</span> = [
442
- 136: <span class="ruby-comment cmt"># ID Name Type</span>
443
- 137: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
444
- 138: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
445
- 139: <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> ],
446
- 140: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
447
- 141: <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> ],
448
- 142: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
449
- 143: <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> ]
450
- 144: ]
451
- 145: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@accounts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
452
- 146:
453
- 147: <span class="ruby-ivar">@resources</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
454
- 148: <span class="ruby-identifier">attrs</span> = [
455
- 149: <span class="ruby-comment cmt"># ID Name Type</span>
456
- 150: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
457
- 151: [ <span class="ruby-value str">'alloctdeffort'</span>, <span class="ruby-value str">'Alloctd. Effort'</span>, <span class="ruby-constant">FloatAttribute</span>,
458
- 152: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
459
- 153: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
460
- 154: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
461
- 155: [ <span class="ruby-value str">'duties'</span>, <span class="ruby-value str">'Duties'</span>, <span class="ruby-constant">TaskListAttribute</span>,
462
- 156: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
463
- 157: [ <span class="ruby-value str">'efficiency'</span>,<span class="ruby-value str">'Efficiency'</span>, <span class="ruby-constant">FloatAttribute</span>,
464
- 158: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
465
- 159: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Total Effort'</span>, <span class="ruby-constant">FixnumAttribute</span>,
466
- 160: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
467
- 161: [ <span class="ruby-value str">'email'</span>, <span class="ruby-value str">'Email'</span>, <span class="ruby-constant">StringAttribute</span>,
468
- 162: <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> ],
469
- 163: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
470
- 164: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
471
- 165: [ <span class="ruby-value str">'fte'</span>, <span class="ruby-value str">'FTE'</span>, <span class="ruby-constant">FloatAttribute</span>,
472
- 166: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
473
- 167: [ <span class="ruby-value str">'headcount'</span>, <span class="ruby-value str">'Headcount'</span>, <span class="ruby-constant">FixnumAttribute</span>,
474
- 168: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ],
475
- 169: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
476
- 170: <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> ],
477
- 171: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
478
- 172: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
479
- 173: [ <span class="ruby-value str">'rate'</span>, <span class="ruby-value str">'Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
480
- 174: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
481
- 175: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
482
- 176: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
483
- 177: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
484
- 178: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
485
- 179: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
486
- 180: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
487
- 181: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
488
- 182: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
489
- 183: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
490
- 184: <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> ],
491
- 185: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
492
- 186: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
493
- 187: ]
494
- 188: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
495
- 189:
496
- 190: <span class="ruby-ivar">@tasks</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
497
- 191: <span class="ruby-identifier">attrs</span> = [
498
- 192: <span class="ruby-comment cmt"># ID Name Type</span>
499
- 193: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
500
- 194: [ <span class="ruby-value str">'allocate'</span>, <span class="ruby-value str">'Allocations'</span>, <span class="ruby-constant">AllocationAttribute</span>,
501
- 195: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
502
- 196: [ <span class="ruby-value str">'assignedresources'</span>, <span class="ruby-value str">'Assigned Resources'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
503
- 197: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
504
- 198: [ <span class="ruby-value str">'booking'</span>, <span class="ruby-value str">'Bookings'</span>, <span class="ruby-constant">BookingListAttribute</span>,
505
- 199: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
506
- 200: [ <span class="ruby-value str">'charge'</span>, <span class="ruby-value str">'Charges'</span>, <span class="ruby-constant">ChargeListAttribute</span>,
507
- 201: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
508
- 202: [ <span class="ruby-value str">'chargeset'</span>, <span class="ruby-value str">'Charge Sets'</span>, <span class="ruby-constant">ChargeSetListAttribute</span>,
509
- 203: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
510
- 204: [ <span class="ruby-value str">'complete'</span>, <span class="ruby-value str">'Completion'</span>, <span class="ruby-constant">FloatAttribute</span>,
511
- 205: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
512
- 206: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
513
- 207: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
514
- 208: [ <span class="ruby-value str">'depends'</span>, <span class="ruby-value str">'Preceding tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
515
- 209: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
516
- 210: [ <span class="ruby-value str">'duration'</span>, <span class="ruby-value str">'Duration'</span>, <span class="ruby-constant">DurationAttribute</span>,
517
- 211: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
518
- 212: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Effort'</span>, <span class="ruby-constant">DurationAttribute</span>,
519
- 213: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
520
- 214: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
521
- 215: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
522
- 216: [ <span class="ruby-value str">'endpreds'</span>, <span class="ruby-value str">'End Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
523
- 217: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
524
- 218: [ <span class="ruby-value str">'endsuccs'</span>, <span class="ruby-value str">'End Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
525
- 219: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
526
- 220: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
377
+ 59: <span class="ruby-comment cmt"># This nested Array defines the supported alert levels. The lowest</span>
378
+ 60: <span class="ruby-comment cmt"># level comes first at index 0 and the level rises from there on.</span>
379
+ 61: <span class="ruby-comment cmt"># Currently, these levels are hardcoded. Each level entry has 3</span>
380
+ 62: <span class="ruby-comment cmt"># members: the tjp syntax token, the user visible name and the</span>
381
+ 63: <span class="ruby-comment cmt"># associated color as RGB byte array.</span>
382
+ 64: <span class="ruby-value str">'alertLevels'</span> =<span class="ruby-operator">&gt;</span> [
383
+ 65: [ <span class="ruby-value str">'green'</span>, <span class="ruby-value str">'Green'</span>, <span class="ruby-value str">'#008000'</span> ],
384
+ 66: [ <span class="ruby-value str">'yellow'</span>, <span class="ruby-value str">'Yellow'</span>, <span class="ruby-value str">'#BEA800'</span> ],
385
+ 67: [ <span class="ruby-value str">'red'</span>, <span class="ruby-value str">'Red'</span>, <span class="ruby-value str">'#C00000'</span> ] ],
386
+ 68: <span class="ruby-value str">'copyright'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
387
+ 69: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
388
+ 70: <span class="ruby-value str">'currency'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;EUR&quot;</span>,
389
+ 71: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">RealFormat</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'-'</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">','</span>, <span class="ruby-value">2</span> ]),
390
+ 72: <span class="ruby-value str">'dailyworkinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">8.0</span>,
391
+ 73: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
392
+ 74: <span class="ruby-value str">'flags'</span> =<span class="ruby-operator">&gt;</span> [],
393
+ 75: <span class="ruby-value str">'journal'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Journal</span>.<span class="ruby-identifier">new</span>,
394
+ 76: <span class="ruby-value str">'limits'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
395
+ 77: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:shortauto</span>,
396
+ 78: <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>,
397
+ 79: <span class="ruby-value str">'navigators'</span> =<span class="ruby-operator">&gt;</span> {},
398
+ 80: <span class="ruby-value str">'now'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">align</span>(<span class="ruby-value">3600</span>),
399
+ 81: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">RealFormat</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'-'</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">'.'</span>, <span class="ruby-value">1</span>]),
400
+ 82: <span class="ruby-value str">'priority'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">500</span>,
401
+ 83: <span class="ruby-value str">'projectid'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;prj&quot;</span>,
402
+ 84: <span class="ruby-value str">'projectids'</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-identifier">id</span> ],
403
+ 85: <span class="ruby-value str">'rate'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span><span class="ruby-value">.0</span>,
404
+ 86: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
405
+ 87: <span class="ruby-value str">'scheduleGranularity'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>,
406
+ 88: <span class="ruby-value str">'shortTimeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%H:%M&quot;</span>,
407
+ 89: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
408
+ 90: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%Y-%m-%d&quot;</span>,
409
+ 91: <span class="ruby-value str">'timezone'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
410
+ 92: <span class="ruby-value str">'trackingScenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>,
411
+ 93: <span class="ruby-value str">'vacations'</span> =<span class="ruby-operator">&gt;</span> [],
412
+ 94: <span class="ruby-value str">'version'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">version</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;1.0&quot;</span>,
413
+ 95: <span class="ruby-value str">'weekStartsMonday'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>,
414
+ 96: <span class="ruby-value str">'workinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">WorkingHours</span>.<span class="ruby-identifier">new</span>,
415
+ 97: <span class="ruby-value str">'yearlyworkingdays'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">260.714</span>
416
+ 98: }
417
+ 99:
418
+ 100: <span class="ruby-comment cmt"># Before we can add any properties to this project, we need to define the</span>
419
+ 101: <span class="ruby-comment cmt"># attributes that each of the property types will be using. In TaskJuggler</span>
420
+ 102: <span class="ruby-comment cmt"># lingo, properties of a project are resources, tasks, accounts, shifts</span>
421
+ 103: <span class="ruby-comment cmt"># and scenarios. Each of these properties can have lots of further</span>
422
+ 104: <span class="ruby-comment cmt"># information attached to it. These bits of information are called</span>
423
+ 105: <span class="ruby-comment cmt"># attributes. An attribute is defined by the AttributeDefinition class.</span>
424
+ 106: <span class="ruby-comment cmt"># The PropertySet objects need to be fed with a list of such attribute</span>
425
+ 107: <span class="ruby-comment cmt"># definitions to register the attributes with the properties.</span>
426
+ 108: <span class="ruby-ivar">@scenarios</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
427
+ 109: <span class="ruby-identifier">attrs</span> = [
428
+ 110: <span class="ruby-comment cmt"># ID Name Type</span>
429
+ 111: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
430
+ 112: [ <span class="ruby-value str">'enabled'</span>, <span class="ruby-value str">'Enabled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
431
+ 113: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
432
+ 114: [ <span class="ruby-value str">'minslackrate'</span>, <span class="ruby-value str">'Min. Slack Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
433
+ 115: <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">1.0</span> ],
434
+ 116: [ <span class="ruby-value str">'projection'</span>, <span class="ruby-value str">'Projection Mode'</span>, <span class="ruby-constant">BooleanAttribute</span>,
435
+ 117: <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> ],
436
+ 118: [ <span class="ruby-value str">'strict'</span>, <span class="ruby-value str">'Strict Bookings'</span>, <span class="ruby-constant">BooleanAttribute</span>,
437
+ 119: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
438
+ 120: ]
439
+ 121: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
440
+ 122:
441
+ 123: <span class="ruby-ivar">@shifts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
442
+ 124: <span class="ruby-identifier">attrs</span> = [
443
+ 125: <span class="ruby-comment cmt"># ID Name Type</span>
444
+ 126: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
445
+ 127: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
446
+ 128: <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> ],
447
+ 129: [ <span class="ruby-value str">'replace'</span>, <span class="ruby-value str">'Replace'</span>, <span class="ruby-constant">BooleanAttribute</span>,
448
+ 130: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
449
+ 131: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
450
+ 132: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
451
+ 133: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
452
+ 134: <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> ],
453
+ 135: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
454
+ 136: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
455
+ 137: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
456
+ 138: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
457
+ 139: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
458
+ 140: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
459
+ 141: ]
460
+ 142: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
461
+ 143:
462
+ 144: <span class="ruby-ivar">@accounts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
463
+ 145: <span class="ruby-identifier">attrs</span> = [
464
+ 146: <span class="ruby-comment cmt"># ID Name Type</span>
465
+ 147: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
466
+ 148: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
467
+ 149: <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> ],
468
+ 150: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
469
+ 151: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
470
+ 152: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
471
+ 153: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
472
+ 154: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
473
+ 155: <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> ]
474
+ 156: ]
475
+ 157: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@accounts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
476
+ 158:
477
+ 159: <span class="ruby-ivar">@resources</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
478
+ 160: <span class="ruby-identifier">attrs</span> = [
479
+ 161: <span class="ruby-comment cmt"># ID Name Type</span>
480
+ 162: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
481
+ 163: [ <span class="ruby-value str">'alloctdeffort'</span>, <span class="ruby-value str">'Alloctd. Effort'</span>, <span class="ruby-constant">FloatAttribute</span>,
482
+ 164: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
483
+ 165: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
484
+ 166: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
485
+ 167: [ <span class="ruby-value str">'duties'</span>, <span class="ruby-value str">'Duties'</span>, <span class="ruby-constant">TaskListAttribute</span>,
486
+ 168: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
487
+ 169: [ <span class="ruby-value str">'efficiency'</span>,<span class="ruby-value str">'Efficiency'</span>, <span class="ruby-constant">FloatAttribute</span>,
488
+ 170: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
489
+ 171: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Total Effort'</span>, <span class="ruby-constant">FixnumAttribute</span>,
490
+ 172: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
491
+ 173: [ <span class="ruby-value str">'email'</span>, <span class="ruby-value str">'Email'</span>, <span class="ruby-constant">StringAttribute</span>,
492
+ 174: <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> ],
493
+ 175: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
494
+ 176: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
495
+ 177: [ <span class="ruby-value str">'fte'</span>, <span class="ruby-value str">'FTE'</span>, <span class="ruby-constant">FloatAttribute</span>,
496
+ 178: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
497
+ 179: [ <span class="ruby-value str">'headcount'</span>, <span class="ruby-value str">'Headcount'</span>, <span class="ruby-constant">FixnumAttribute</span>,
498
+ 180: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ],
499
+ 181: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
500
+ 182: <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> ],
501
+ 183: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
502
+ 184: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
503
+ 185: [ <span class="ruby-value str">'rate'</span>, <span class="ruby-value str">'Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
504
+ 186: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
505
+ 187: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
506
+ 188: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
507
+ 189: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
508
+ 190: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
509
+ 191: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
510
+ 192: <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> ],
511
+ 193: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
512
+ 194: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
513
+ 195: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
514
+ 196: <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> ],
515
+ 197: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
516
+ 198: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
517
+ 199: ]
518
+ 200: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
519
+ 201:
520
+ 202: <span class="ruby-ivar">@tasks</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
521
+ 203: <span class="ruby-identifier">attrs</span> = [
522
+ 204: <span class="ruby-comment cmt"># ID Name Type</span>
523
+ 205: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
524
+ 206: [ <span class="ruby-value str">'allocate'</span>, <span class="ruby-value str">'Allocations'</span>, <span class="ruby-constant">AllocationAttribute</span>,
525
+ 207: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
526
+ 208: [ <span class="ruby-value str">'assignedresources'</span>, <span class="ruby-value str">'Assigned Resources'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
527
+ 209: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
528
+ 210: [ <span class="ruby-value str">'booking'</span>, <span class="ruby-value str">'Bookings'</span>, <span class="ruby-constant">BookingListAttribute</span>,
529
+ 211: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
530
+ 212: [ <span class="ruby-value str">'charge'</span>, <span class="ruby-value str">'Charges'</span>, <span class="ruby-constant">ChargeListAttribute</span>,
531
+ 213: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
532
+ 214: [ <span class="ruby-value str">'chargeset'</span>, <span class="ruby-value str">'Charge Sets'</span>, <span class="ruby-constant">ChargeSetListAttribute</span>,
533
+ 215: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
534
+ 216: [ <span class="ruby-value str">'complete'</span>, <span class="ruby-value str">'Completion'</span>, <span class="ruby-constant">FloatAttribute</span>,
535
+ 217: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
536
+ 218: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
537
+ 219: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
538
+ 220: [ <span class="ruby-value str">'depends'</span>, <span class="ruby-value str">'Preceding tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
527
539
  221: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
528
- 222: [ <span class="ruby-value str">'forward'</span>, <span class="ruby-value str">'Scheduling'</span>, <span class="ruby-constant">BooleanAttribute</span>,
529
- 223: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span> ],
530
- 224: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
531
- 225: <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> ],
532
- 226: [ <span class="ruby-value str">'length'</span>, <span class="ruby-value str">'Length'</span>, <span class="ruby-constant">DurationAttribute</span>,
533
- 227: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
534
- 228: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
535
- 229: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
536
- 230: [ <span class="ruby-value str">'maxend'</span>, <span class="ruby-value str">'Max. End'</span>, <span class="ruby-constant">DateAttribute</span>,
537
- 231: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
538
- 232: [ <span class="ruby-value str">'maxstart'</span>, <span class="ruby-value str">'Max. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
539
- 233: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
540
- 234: [ <span class="ruby-value str">'milestone'</span>, <span class="ruby-value str">'Milestone'</span>, <span class="ruby-constant">BooleanAttribute</span>,
541
- 235: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
542
- 236: [ <span class="ruby-value str">'minend'</span>, <span class="ruby-value str">'Min. End'</span>, <span class="ruby-constant">DateAttribute</span>,
543
- 237: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
544
- 238: [ <span class="ruby-value str">'minstart'</span>, <span class="ruby-value str">'Min. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
545
- 239: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
546
- 240: [ <span class="ruby-value str">'note'</span>, <span class="ruby-value str">'Note'</span>, <span class="ruby-constant">RichTextAttribute</span>,
547
- 241: <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> ],
548
- 242: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-value str">'Path Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
549
- 243: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
550
- 244: [ <span class="ruby-value str">'precedes'</span>, <span class="ruby-value str">'Following tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
551
- 245: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
552
- 246: [ <span class="ruby-value str">'priority'</span>, <span class="ruby-value str">'Priority'</span>, <span class="ruby-constant">FixnumAttribute</span>,
553
- 247: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">500</span> ],
554
- 248: [ <span class="ruby-value str">'projectid'</span>, <span class="ruby-value str">'Project ID'</span>, <span class="ruby-constant">SymbolAttribute</span>,
555
- 249: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
556
- 250: [ <span class="ruby-value str">'responsible'</span>, <span class="ruby-value str">'Responsible'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
557
- 251: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
558
- 252: [ <span class="ruby-value str">'scheduled'</span>, <span class="ruby-value str">'Scheduled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
559
- 253: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
560
- 254: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
561
- 255: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
562
- 256: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
563
- 257: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
564
- 258: [ <span class="ruby-value str">'startpreds'</span>, <span class="ruby-value str">'Start Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
565
- 259: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
566
- 260: [ <span class="ruby-value str">'startsuccs'</span>, <span class="ruby-value str">'Start Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
567
- 261: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
568
- 262: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
569
- 263: <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> ],
570
- 264: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
571
- 265: <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> ]
572
- 266: ]
573
- 267: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
574
- 268:
575
- 269: <span class="ruby-ivar">@reports</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
576
- 270: <span class="ruby-identifier">attrs</span> = [
577
- 271: <span class="ruby-comment cmt"># ID Name Type</span>
578
- 272: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
579
- 273: [ <span class="ruby-value str">'caption'</span>, <span class="ruby-value str">'Caption'</span>, <span class="ruby-constant">RichTextAttribute</span>,
580
- 274: <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> ],
581
- 275: [ <span class="ruby-value str">'center'</span>, <span class="ruby-value str">'Center'</span>, <span class="ruby-constant">RichTextAttribute</span>,
582
- 276: <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> ],
583
- 277: [ <span class="ruby-value str">'columns'</span>, <span class="ruby-value str">'Columns'</span>, <span class="ruby-constant">ColumnListAttribute</span>,
584
- 278: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
585
- 279: [ <span class="ruby-value str">'costAccount'</span>, <span class="ruby-value str">'Cost Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
586
- 280: <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> ],
587
- 281: [ <span class="ruby-value str">'currencyFormat'</span>, <span class="ruby-value str">'Currency Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
588
- 282: <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> ],
589
- 283: [ <span class="ruby-value str">'definitions'</span>, <span class="ruby-value str">'Definitions'</span>, <span class="ruby-constant">DefinitionListAttribute</span>,
590
- 284: <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> ]) ],
591
- 285: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
592
- 286: <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> ],
593
- 287: [ <span class="ruby-value str">'epilog'</span>, <span class="ruby-value str">'Epilog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
540
+ 222: [ <span class="ruby-value str">'duration'</span>, <span class="ruby-value str">'Duration'</span>, <span class="ruby-constant">DurationAttribute</span>,
541
+ 223: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
542
+ 224: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Effort'</span>, <span class="ruby-constant">DurationAttribute</span>,
543
+ 225: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
544
+ 226: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
545
+ 227: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
546
+ 228: [ <span class="ruby-value str">'endpreds'</span>, <span class="ruby-value str">'End Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
547
+ 229: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
548
+ 230: [ <span class="ruby-value str">'endsuccs'</span>, <span class="ruby-value str">'End Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
549
+ 231: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
550
+ 232: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
551
+ 233: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
552
+ 234: [ <span class="ruby-value str">'forward'</span>, <span class="ruby-value str">'Scheduling'</span>, <span class="ruby-constant">BooleanAttribute</span>,
553
+ 235: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span> ],
554
+ 236: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
555
+ 237: <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> ],
556
+ 238: [ <span class="ruby-value str">'length'</span>, <span class="ruby-value str">'Length'</span>, <span class="ruby-constant">DurationAttribute</span>,
557
+ 239: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
558
+ 240: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
559
+ 241: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
560
+ 242: [ <span class="ruby-value str">'maxend'</span>, <span class="ruby-value str">'Max. End'</span>, <span class="ruby-constant">DateAttribute</span>,
561
+ 243: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
562
+ 244: [ <span class="ruby-value str">'maxstart'</span>, <span class="ruby-value str">'Max. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
563
+ 245: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
564
+ 246: [ <span class="ruby-value str">'milestone'</span>, <span class="ruby-value str">'Milestone'</span>, <span class="ruby-constant">BooleanAttribute</span>,
565
+ 247: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
566
+ 248: [ <span class="ruby-value str">'minend'</span>, <span class="ruby-value str">'Min. End'</span>, <span class="ruby-constant">DateAttribute</span>,
567
+ 249: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
568
+ 250: [ <span class="ruby-value str">'minstart'</span>, <span class="ruby-value str">'Min. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
569
+ 251: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
570
+ 252: [ <span class="ruby-value str">'note'</span>, <span class="ruby-value str">'Note'</span>, <span class="ruby-constant">RichTextAttribute</span>,
571
+ 253: <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> ],
572
+ 254: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-value str">'Path Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
573
+ 255: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span><span class="ruby-value">.0</span> ],
574
+ 256: [ <span class="ruby-value str">'precedes'</span>, <span class="ruby-value str">'Following tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
575
+ 257: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
576
+ 258: [ <span class="ruby-value str">'priority'</span>, <span class="ruby-value str">'Priority'</span>, <span class="ruby-constant">FixnumAttribute</span>,
577
+ 259: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">500</span> ],
578
+ 260: [ <span class="ruby-value str">'projectid'</span>, <span class="ruby-value str">'Project ID'</span>, <span class="ruby-constant">SymbolAttribute</span>,
579
+ 261: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
580
+ 262: [ <span class="ruby-value str">'responsible'</span>, <span class="ruby-value str">'Responsible'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
581
+ 263: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
582
+ 264: [ <span class="ruby-value str">'scheduled'</span>, <span class="ruby-value str">'Scheduled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
583
+ 265: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
584
+ 266: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
585
+ 267: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
586
+ 268: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
587
+ 269: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
588
+ 270: [ <span class="ruby-value str">'startpreds'</span>, <span class="ruby-value str">'Start Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
589
+ 271: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
590
+ 272: [ <span class="ruby-value str">'startsuccs'</span>, <span class="ruby-value str">'Start Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
591
+ 273: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
592
+ 274: [ <span class="ruby-value str">'status'</span>, <span class="ruby-value str">'Task Status'</span>, <span class="ruby-constant">StringAttribute</span>,
593
+ 275: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value str">&quot;&quot;</span> ],
594
+ 276: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
595
+ 277: <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> ],
596
+ 278: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
597
+ 279: <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> ]
598
+ 280: ]
599
+ 281: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)) }
600
+ 282:
601
+ 283: <span class="ruby-ivar">@reports</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
602
+ 284: <span class="ruby-identifier">attrs</span> = [
603
+ 285: <span class="ruby-comment cmt"># ID Name Type</span>
604
+ 286: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
605
+ 287: [ <span class="ruby-value str">'caption'</span>, <span class="ruby-value str">'Caption'</span>, <span class="ruby-constant">RichTextAttribute</span>,
594
606
  288: <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> ],
595
- 289: [ <span class="ruby-value str">'footer'</span>, <span class="ruby-value str">'Footer'</span>, <span class="ruby-constant">RichTextAttribute</span>,
607
+ 289: [ <span class="ruby-value str">'center'</span>, <span class="ruby-value str">'Center'</span>, <span class="ruby-constant">RichTextAttribute</span>,
596
608
  290: <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> ],
597
- 291: [ <span class="ruby-value str">'formats'</span>, <span class="ruby-value str">'Formats'</span>, <span class="ruby-constant">FormatListAttribute</span>,
609
+ 291: [ <span class="ruby-value str">'columns'</span>, <span class="ruby-value str">'Columns'</span>, <span class="ruby-constant">ColumnListAttribute</span>,
598
610
  292: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
599
- 293: [ <span class="ruby-value str">'ganttBars'</span>, <span class="ruby-value str">'Gantt Bars'</span>, <span class="ruby-constant">BooleanAttribute</span>,
600
- 294: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
601
- 295: [ <span class="ruby-value str">'header'</span>, <span class="ruby-value str">'Header'</span>, <span class="ruby-constant">RichTextAttribute</span>,
602
- 296: <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> ],
603
- 297: [ <span class="ruby-value str">'headline'</span>, <span class="ruby-value str">'Headline'</span>, <span class="ruby-constant">StringAttribute</span>,
604
- 298: <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">''</span> ],
605
- 299: [ <span class="ruby-value str">'hideResource'</span>, <span class="ruby-value str">'Hide Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
606
- 300: <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> ],
607
- 301: [ <span class="ruby-value str">'hideTask'</span>, <span class="ruby-value str">'Hide Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
608
- 302: <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> ],
609
- 303: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
610
- 304: <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> ],
611
- 305: [ <span class="ruby-value str">'left'</span>, <span class="ruby-value str">'Left'</span>, <span class="ruby-constant">RichTextAttribute</span>,
611
+ 293: [ <span class="ruby-value str">'costAccount'</span>, <span class="ruby-value str">'Cost Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
612
+ 294: <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> ],
613
+ 295: [ <span class="ruby-value str">'currencyFormat'</span>, <span class="ruby-value str">'Currency Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
614
+ 296: <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> ],
615
+ 297: [ <span class="ruby-value str">'definitions'</span>, <span class="ruby-value str">'Definitions'</span>, <span class="ruby-constant">DefinitionListAttribute</span>,
616
+ 298: <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> ]) ],
617
+ 299: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
618
+ 300: <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> ],
619
+ 301: [ <span class="ruby-value str">'epilog'</span>, <span class="ruby-value str">'Epilog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
620
+ 302: <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> ],
621
+ 303: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
622
+ 304: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
623
+ 305: [ <span class="ruby-value str">'footer'</span>, <span class="ruby-value str">'Footer'</span>, <span class="ruby-constant">RichTextAttribute</span>,
612
624
  306: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
613
- 307: [ <span class="ruby-value str">'loadUnit'</span>, <span class="ruby-value str">'Load Unit'</span>, <span class="ruby-constant">StringAttribute</span>,
614
- 308: <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> ],
615
- 309: [ <span class="ruby-value str">'now'</span>, <span class="ruby-value str">'Now'</span>, <span class="ruby-constant">DateAttribute</span>,
616
- 310: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
617
- 311: [ <span class="ruby-value str">'numberFormat'</span>, <span class="ruby-value str">'Number Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
618
- 312: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
619
- 313: [ <span class="ruby-value str">'prolog'</span>, <span class="ruby-value str">'Prolog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
620
- 314: <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>],
621
- 315: [ <span class="ruby-value str">'resourceAttributes'</span>, <span class="ruby-value str">'Resource Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
622
- 316: <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> ]) ],
623
- 317: [ <span class="ruby-value str">'resourceRoot'</span>, <span class="ruby-value str">'resource Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
625
+ 307: [ <span class="ruby-value str">'formats'</span>, <span class="ruby-value str">'Formats'</span>, <span class="ruby-constant">FormatListAttribute</span>,
626
+ 308: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
627
+ 309: [ <span class="ruby-value str">'ganttBars'</span>, <span class="ruby-value str">'Gantt Bars'</span>, <span class="ruby-constant">BooleanAttribute</span>,
628
+ 310: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
629
+ 311: [ <span class="ruby-value str">'header'</span>, <span class="ruby-value str">'Header'</span>, <span class="ruby-constant">RichTextAttribute</span>,
630
+ 312: <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> ],
631
+ 313: [ <span class="ruby-value str">'headline'</span>, <span class="ruby-value str">'Headline'</span>, <span class="ruby-constant">RichTextAttribute</span>,
632
+ 314: <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> ],
633
+ 315: [ <span class="ruby-value str">'hideResource'</span>, <span class="ruby-value str">'Hide Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
634
+ 316: <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> ],
635
+ 317: [ <span class="ruby-value str">'hideTask'</span>, <span class="ruby-value str">'Hide Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
624
636
  318: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
625
- 319: [ <span class="ruby-value str">'revenueAccount'</span>, <span class="ruby-value str">'Revenue Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
626
- 320: <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> ],
627
- 321: [ <span class="ruby-value str">'right'</span>, <span class="ruby-value str">'Right'</span>, <span class="ruby-constant">RichTextAttribute</span>,
637
+ 319: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
638
+ 320: <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> ],
639
+ 321: [ <span class="ruby-value str">'left'</span>, <span class="ruby-value str">'Left'</span>, <span class="ruby-constant">RichTextAttribute</span>,
628
640
  322: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
629
- 323: [ <span class="ruby-value str">'rollupResource'</span>, <span class="ruby-value str">'Rollup Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
630
- 324: <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> ],
631
- 325: [ <span class="ruby-value str">'rollupTask'</span>, <span class="ruby-value str">'Rollup Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
632
- 326: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
633
- 327: [ <span class="ruby-value str">'scenarios'</span>, <span class="ruby-value str">'Scenarios'</span>, <span class="ruby-constant">ScenarioListAttribute</span>,
634
- 328: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [ <span class="ruby-value">0</span> ] ],
635
- 329: [ <span class="ruby-value str">'shortTimeFormat'</span>, <span class="ruby-value str">'Short Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
636
- 330: <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> ],
637
- 331: [ <span class="ruby-value str">'sortResources'</span>, <span class="ruby-value str">'Sort Resources'</span>, <span class="ruby-constant">SortListAttribute</span>,
638
- 332: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">-1</span> ]] ],
639
- 333: [ <span class="ruby-value str">'sortTasks'</span>, <span class="ruby-value str">'Sort Tasks'</span>, <span class="ruby-constant">SortListAttribute</span>,
640
- 334: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">-1</span> ]] ],
641
- 335: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
641
+ 323: [ <span class="ruby-value str">'loadUnit'</span>, <span class="ruby-value str">'Load Unit'</span>, <span class="ruby-constant">StringAttribute</span>,
642
+ 324: <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> ],
643
+ 325: [ <span class="ruby-value str">'now'</span>, <span class="ruby-value str">'Now'</span>, <span class="ruby-constant">DateAttribute</span>,
644
+ 326: <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> ],
645
+ 327: [ <span class="ruby-value str">'numberFormat'</span>, <span class="ruby-value str">'Number Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
646
+ 328: <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> ],
647
+ 329: [ <span class="ruby-value str">'prolog'</span>, <span class="ruby-value str">'Prolog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
648
+ 330: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span>],
649
+ 331: [ <span class="ruby-value str">'resourceAttributes'</span>, <span class="ruby-value str">'Resource Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
650
+ 332: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
651
+ 333: [ <span class="ruby-value str">'resourceRoot'</span>, <span class="ruby-value str">'resource Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
652
+ 334: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
653
+ 335: [ <span class="ruby-value str">'revenueAccount'</span>, <span class="ruby-value str">'Revenue Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
642
654
  336: <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> ],
643
- 337: [ <span class="ruby-value str">'taskAttributes'</span>, <span class="ruby-value str">'Task Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
644
- 338: <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> ]) ],
645
- 339: [ <span class="ruby-value str">'taskRoot'</span>, <span class="ruby-value str">'Task Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
655
+ 337: [ <span class="ruby-value str">'right'</span>, <span class="ruby-value str">'Right'</span>, <span class="ruby-constant">RichTextAttribute</span>,
656
+ 338: <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> ],
657
+ 339: [ <span class="ruby-value str">'rollupResource'</span>, <span class="ruby-value str">'Rollup Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
646
658
  340: <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> ],
647
- 341: [ <span class="ruby-value str">'timeFormat'</span>, <span class="ruby-value str">'Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
648
- 342: <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> ],
649
- 343: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
650
- 344: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
651
- 345: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
652
- 346: <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> ],
653
- 347: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
654
- 348: <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> ],
655
- 349: [ <span class="ruby-value str">'weekStartsMonday'</span>, <span class="ruby-value str">'Week Starts Monday'</span>, <span class="ruby-constant">BooleanAttribute</span>,
656
- 350: <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> ]
657
- 351: ]
658
- 352: <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-operator">*</span><span class="ruby-identifier">a</span>)) }
659
- 353:
660
- 354: <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>)
661
- 355:
662
- 356: <span class="ruby-ivar">@reportContext</span> = <span class="ruby-keyword kw">nil</span>
663
- 357: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
664
- 358: <span class="ruby-keyword kw">end</span>
659
+ 341: [ <span class="ruby-value str">'rollupTask'</span>, <span class="ruby-value str">'Rollup Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
660
+ 342: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
661
+ 343: [ <span class="ruby-value str">'scenarios'</span>, <span class="ruby-value str">'Scenarios'</span>, <span class="ruby-constant">ScenarioListAttribute</span>,
662
+ 344: <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> ] ],
663
+ 345: [ <span class="ruby-value str">'selfcontained'</span>, <span class="ruby-value str">'Selfcontained'</span>, <span class="ruby-constant">BooleanAttribute</span>,
664
+ 346: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
665
+ 347: [ <span class="ruby-value str">'shortTimeFormat'</span>, <span class="ruby-value str">'Short Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
666
+ 348: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
667
+ 349: [ <span class="ruby-value str">'sortResources'</span>, <span class="ruby-value str">'Sort Resources'</span>, <span class="ruby-constant">SortListAttribute</span>,
668
+ 350: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">-1</span> ]] ],
669
+ 351: [ <span class="ruby-value str">'sortTasks'</span>, <span class="ruby-value str">'Sort Tasks'</span>, <span class="ruby-constant">SortListAttribute</span>,
670
+ 352: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">-1</span> ]] ],
671
+ 353: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
672
+ 354: <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> ],
673
+ 355: [ <span class="ruby-value str">'taskAttributes'</span>, <span class="ruby-value str">'Task Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
674
+ 356: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
675
+ 357: [ <span class="ruby-value str">'taskRoot'</span>, <span class="ruby-value str">'Task Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
676
+ 358: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
677
+ 359: [ <span class="ruby-value str">'timeFormat'</span>, <span class="ruby-value str">'Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
678
+ 360: <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> ],
679
+ 361: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
680
+ 362: <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> ],
681
+ 363: [ <span class="ruby-value str">'title'</span>, <span class="ruby-value str">'Title'</span>, <span class="ruby-constant">StringAttribute</span>,
682
+ 364: <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> ],
683
+ 365: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
684
+ 366: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
685
+ 367: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
686
+ 368: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
687
+ 369: [ <span class="ruby-value str">'weekStartsMonday'</span>, <span class="ruby-value str">'Week Starts Monday'</span>, <span class="ruby-constant">BooleanAttribute</span>,
688
+ 370: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
689
+ 371: ]
690
+ 372: <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-operator">*</span><span class="ruby-identifier">a</span>)) }
691
+ 373:
692
+ 374: <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>)
693
+ 375:
694
+ 376: <span class="ruby-comment cmt"># This holds a reference to the ReportContext for each Thread.</span>
695
+ 377: <span class="ruby-ivar">@reportContext</span> = <span class="ruby-keyword kw">nil</span>
696
+ 378: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
697
+ 379: <span class="ruby-keyword kw">end</span>
665
698
  </pre>
666
699
  </div>
667
700
 
@@ -672,12 +705,12 @@ The constructor will set default values for all project attributes.
672
705
  <h3 class="section-bar">Public Instance methods</h3>
673
706
 
674
707
 
675
- <div id="method-M000794" class="method-detail">
676
- <a name="M000794"></a>
708
+ <div id="method-M000756" class="method-detail">
709
+ <a name="M000756"></a>
677
710
 
678
711
  <div class="method-heading">
679
712
 
680
- <a href="#M000794" class="method-signature">
713
+ <a href="#M000756" class="method-signature">
681
714
 
682
715
  <span class="method-name">[]</span><span class="method-args">(name)</span>
683
716
 
@@ -694,16 +727,16 @@ attribute.
694
727
  </p>
695
728
 
696
729
  <p><a class="source-toggle" href="#"
697
- onclick="toggleCode('M000794-source');return false;">[Source]</a></p>
698
- <div class="method-source-code" id="M000794-source">
730
+ onclick="toggleCode('M000756-source');return false;">[Source]</a></p>
731
+ <div class="method-source-code" id="M000756-source">
699
732
  <pre>
700
- <span class="ruby-comment cmt"># File lib/Project.rb, line 373</span>
701
- 373: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
702
- 374: <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>)
703
- 375: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
704
- 376: <span class="ruby-keyword kw">end</span>
705
- 377: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>]
706
- 378: <span class="ruby-keyword kw">end</span>
733
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 394</span>
734
+ 394: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
735
+ 395: <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>)
736
+ 396: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
737
+ 397: <span class="ruby-keyword kw">end</span>
738
+ 398: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>]
739
+ 399: <span class="ruby-keyword kw">end</span>
707
740
  </pre>
708
741
  </div>
709
742
 
@@ -711,12 +744,12 @@ attribute.
711
744
  </div>
712
745
 
713
746
 
714
- <div id="method-M000795" class="method-detail">
715
- <a name="M000795"></a>
747
+ <div id="method-M000757" class="method-detail">
748
+ <a name="M000757"></a>
716
749
 
717
750
  <div class="method-heading">
718
751
 
719
- <a href="#M000795" class="method-signature">
752
+ <a href="#M000757" class="method-signature">
720
753
 
721
754
  <span class="method-name">[]=</span><span class="method-args">(name, value)</span>
722
755
 
@@ -732,16 +765,16 @@ to <em>value</em>.
732
765
  </p>
733
766
 
734
767
  <p><a class="source-toggle" href="#"
735
- onclick="toggleCode('M000795-source');return false;">[Source]</a></p>
736
- <div class="method-source-code" id="M000795-source">
768
+ onclick="toggleCode('M000757-source');return false;">[Source]</a></p>
769
+ <div class="method-source-code" id="M000757-source">
737
770
  <pre>
738
- <span class="ruby-comment cmt"># File lib/Project.rb, line 381</span>
739
- 381: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
740
- 382: <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>)
741
- 383: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
742
- 384: <span class="ruby-keyword kw">end</span>
743
- 385: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
744
- 386: <span class="ruby-keyword kw">end</span>
771
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 402</span>
772
+ 402: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
773
+ 403: <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>)
774
+ 404: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
775
+ 405: <span class="ruby-keyword kw">end</span>
776
+ 406: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
777
+ 407: <span class="ruby-keyword kw">end</span>
745
778
  </pre>
746
779
  </div>
747
780
 
@@ -749,12 +782,12 @@ to <em>value</em>.
749
782
  </div>
750
783
 
751
784
 
752
- <div id="method-M000804" class="method-detail">
753
- <a name="M000804"></a>
785
+ <div id="method-M000770" class="method-detail">
786
+ <a name="M000770"></a>
754
787
 
755
788
  <div class="method-heading">
756
789
 
757
- <a href="#M000804" class="method-signature">
790
+ <a href="#M000770" class="method-signature">
758
791
 
759
792
  <span class="method-name">account</span><span class="method-args">(id)</span>
760
793
 
@@ -770,13 +803,127 @@ return nil if it does not exist.
770
803
  </p>
771
804
 
772
805
  <p><a class="source-toggle" href="#"
773
- onclick="toggleCode('M000804-source');return false;">[Source]</a></p>
774
- <div class="method-source-code" id="M000804-source">
806
+ onclick="toggleCode('M000770-source');return false;">[Source]</a></p>
807
+ <div class="method-source-code" id="M000770-source">
808
+ <pre>
809
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 505</span>
810
+ 505: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
811
+ 506: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
812
+ 507: <span class="ruby-keyword kw">end</span>
813
+ </pre>
814
+ </div>
815
+
816
+ </div>
817
+ </div>
818
+
819
+
820
+ <div id="method-M000762" class="method-detail">
821
+ <a name="M000762"></a>
822
+
823
+ <div class="method-heading">
824
+
825
+ <a href="#M000762" class="method-signature">
826
+
827
+ <span class="method-name">alertLevelColor</span><span class="method-args">(levelIndex)</span>
828
+
829
+ </a>
830
+
831
+ </div>
832
+
833
+ <div class="method-description">
834
+
835
+ <p>
836
+ Return the color of the alert level with the given <em>levelIndex</em>. Or
837
+ nil if the level does not exist. The color is an RGB encoded byte array,
838
+ stored as hexadecimal <a href="../String.html">String</a>, prefixed with a
839
+ pound sign.
840
+ </p>
841
+
842
+ <p><a class="source-toggle" href="#"
843
+ onclick="toggleCode('M000762-source');return false;">[Source]</a></p>
844
+ <div class="method-source-code" id="M000762-source">
845
+ <pre>
846
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 442</span>
847
+ 442: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
848
+ 443: <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>]
849
+ 444: <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>]
850
+ 445: <span class="ruby-keyword kw">end</span>
851
+ </pre>
852
+ </div>
853
+
854
+ </div>
855
+ </div>
856
+
857
+
858
+ <div id="method-M000760" class="method-detail">
859
+ <a name="M000760"></a>
860
+
861
+ <div class="method-heading">
862
+
863
+ <a href="#M000760" class="method-signature">
864
+
865
+ <span class="method-name">alertLevelId</span><span class="method-args">(levelIndex)</span>
866
+
867
+ </a>
868
+
869
+ </div>
870
+
871
+ <div class="method-description">
872
+
873
+ <p>
874
+ Return the ID or keyword of the alert level with the given
875
+ <em>levelIndex</em>. Or nil if the level does not exist.
876
+ </p>
877
+
878
+ <p><a class="source-toggle" href="#"
879
+ onclick="toggleCode('M000760-source');return false;">[Source]</a></p>
880
+ <div class="method-source-code" id="M000760-source">
881
+ <pre>
882
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 427</span>
883
+ 427: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
884
+ 428: <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>]
885
+ 429: <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>]
886
+ 430: <span class="ruby-keyword kw">end</span>
887
+ </pre>
888
+ </div>
889
+
890
+ </div>
891
+ </div>
892
+
893
+
894
+ <div id="method-M000759" class="method-detail">
895
+ <a name="M000759"></a>
896
+
897
+ <div class="method-heading">
898
+
899
+ <a href="#M000759" class="method-signature">
900
+
901
+ <span class="method-name">alertLevelIndex</span><span class="method-args">(levelName)</span>
902
+
903
+ </a>
904
+
905
+ </div>
906
+
907
+ <div class="method-description">
908
+
909
+ <p>
910
+ Try to match <em>levelName</em> to a defined alert level name and return
911
+ the index of it. If no level is found, nil is returned.
912
+ </p>
913
+
914
+ <p><a class="source-toggle" href="#"
915
+ onclick="toggleCode('M000759-source');return false;">[Source]</a></p>
916
+ <div class="method-source-code" id="M000759-source">
775
917
  <pre>
776
- <span class="ruby-comment cmt"># File lib/Project.rb, line 451</span>
777
- 451: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
778
- 452: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
779
- 453: <span class="ruby-keyword kw">end</span>
918
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 416</span>
919
+ 416: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
920
+ 417: <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>
921
+ 418: <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>
922
+ 419: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
923
+ 420: <span class="ruby-keyword kw">end</span>
924
+ 421: <span class="ruby-keyword kw">end</span>
925
+ 422: <span class="ruby-keyword kw">nil</span>
926
+ 423: <span class="ruby-keyword kw">end</span>
780
927
  </pre>
781
928
  </div>
782
929
 
@@ -784,12 +931,48 @@ return nil if it does not exist.
784
931
  </div>
785
932
 
786
933
 
787
- <div id="method-M000817" class="method-detail">
788
- <a name="M000817"></a>
934
+ <div id="method-M000761" class="method-detail">
935
+ <a name="M000761"></a>
789
936
 
790
937
  <div class="method-heading">
791
938
 
792
- <a href="#M000817" class="method-signature">
939
+ <a href="#M000761" class="method-signature">
940
+
941
+ <span class="method-name">alertLevelName</span><span class="method-args">(levelIndex)</span>
942
+
943
+ </a>
944
+
945
+ </div>
946
+
947
+ <div class="method-description">
948
+
949
+ <p>
950
+ Return the user readable name of the alert level with the given
951
+ <em>levelIndex</em>. Or nil if the level does not exist.
952
+ </p>
953
+
954
+ <p><a class="source-toggle" href="#"
955
+ onclick="toggleCode('M000761-source');return false;">[Source]</a></p>
956
+ <div class="method-source-code" id="M000761-source">
957
+ <pre>
958
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 434</span>
959
+ 434: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
960
+ 435: <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>]
961
+ 436: <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>]
962
+ 437: <span class="ruby-keyword kw">end</span>
963
+ </pre>
964
+ </div>
965
+
966
+ </div>
967
+ </div>
968
+
969
+
970
+ <div id="method-M000784" class="method-detail">
971
+ <a name="M000784"></a>
972
+
973
+ <div class="method-heading">
974
+
975
+ <a href="#M000784" class="method-signature">
793
976
 
794
977
  <span class="method-name">attributeName</span><span class="method-args">(id)</span>
795
978
 
@@ -806,17 +989,17 @@ tasks over resources here.
806
989
  </p>
807
990
 
808
991
  <p><a class="source-toggle" href="#"
809
- onclick="toggleCode('M000817-source');return false;">[Source]</a></p>
810
- <div class="method-source-code" id="M000817-source">
992
+ onclick="toggleCode('M000784-source');return false;">[Source]</a></p>
993
+ <div class="method-source-code" id="M000784-source">
811
994
  <pre>
812
- <span class="ruby-comment cmt"># File lib/Project.rb, line 690</span>
813
- 690: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
814
- 691: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
815
- 692: <span class="ruby-comment cmt"># return it's name.</span>
816
- 693: (<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>
817
- 694: (<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>
818
- 695: <span class="ruby-identifier">name</span>
819
- 696: <span class="ruby-keyword kw">end</span>
995
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 764</span>
996
+ 764: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
997
+ 765: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
998
+ 766: <span class="ruby-comment cmt"># return it's name.</span>
999
+ 767: (<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>
1000
+ 768: (<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>
1001
+ 769: <span class="ruby-identifier">name</span>
1002
+ 770: <span class="ruby-keyword kw">end</span>
820
1003
  </pre>
821
1004
  </div>
822
1005
 
@@ -824,12 +1007,12 @@ tasks over resources here.
824
1007
  </div>
825
1008
 
826
1009
 
827
- <div id="method-M000812" class="method-detail">
828
- <a name="M000812"></a>
1010
+ <div id="method-M000779" class="method-detail">
1011
+ <a name="M000779"></a>
829
1012
 
830
1013
  <div class="method-heading">
831
1014
 
832
- <a href="#M000812" class="method-signature">
1015
+ <a href="#M000779" class="method-signature">
833
1016
 
834
1017
  <span class="method-name">convertToDailyLoad</span><span class="method-args">(seconds)</span>
835
1018
 
@@ -845,13 +1028,13 @@ setting of the global &#8216;dailyworkinghours&#8217; attribute.
845
1028
  </p>
846
1029
 
847
1030
  <p><a class="source-toggle" href="#"
848
- onclick="toggleCode('M000812-source');return false;">[Source]</a></p>
849
- <div class="method-source-code" id="M000812-source">
1031
+ onclick="toggleCode('M000779-source');return false;">[Source]</a></p>
1032
+ <div class="method-source-code" id="M000779-source">
850
1033
  <pre>
851
- <span class="ruby-comment cmt"># File lib/Project.rb, line 624</span>
852
- 624: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
853
- 625: <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-operator">*</span> <span class="ruby-value">3600.0</span>)
854
- 626: <span class="ruby-keyword kw">end</span>
1034
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 698</span>
1035
+ 698: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1036
+ 699: <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-operator">*</span> <span class="ruby-value">3600.0</span>)
1037
+ 700: <span class="ruby-keyword kw">end</span>
855
1038
  </pre>
856
1039
  </div>
857
1040
 
@@ -859,12 +1042,12 @@ setting of the global &#8216;dailyworkinghours&#8217; attribute.
859
1042
  </div>
860
1043
 
861
1044
 
862
- <div id="method-M000797" class="method-detail">
863
- <a name="M000797"></a>
1045
+ <div id="method-M000763" class="method-detail">
1046
+ <a name="M000763"></a>
864
1047
 
865
1048
  <div class="method-heading">
866
1049
 
867
- <a href="#M000797" class="method-signature">
1050
+ <a href="#M000763" class="method-signature">
868
1051
 
869
1052
  <span class="method-name">dailyWorkingHours</span><span class="method-args">()</span>
870
1053
 
@@ -880,13 +1063,13 @@ can be set to other values by the user.
880
1063
  </p>
881
1064
 
882
1065
  <p><a class="source-toggle" href="#"
883
- onclick="toggleCode('M000797-source');return false;">[Source]</a></p>
884
- <div class="method-source-code" id="M000797-source">
1066
+ onclick="toggleCode('M000763-source');return false;">[Source]</a></p>
1067
+ <div class="method-source-code" id="M000763-source">
885
1068
  <pre>
886
- <span class="ruby-comment cmt"># File lib/Project.rb, line 395</span>
887
- 395: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
888
- 396: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
889
- 397: <span class="ruby-keyword kw">end</span>
1069
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 449</span>
1070
+ 449: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1071
+ 450: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1072
+ 451: <span class="ruby-keyword kw">end</span>
890
1073
  </pre>
891
1074
  </div>
892
1075
 
@@ -894,12 +1077,12 @@ can be set to other values by the user.
894
1077
  </div>
895
1078
 
896
1079
 
897
- <div id="method-M000815" class="method-detail">
898
- <a name="M000815"></a>
1080
+ <div id="method-M000782" class="method-detail">
1081
+ <a name="M000782"></a>
899
1082
 
900
1083
  <div class="method-heading">
901
1084
 
902
- <a href="#M000815" class="method-signature">
1085
+ <a href="#M000782" class="method-signature">
903
1086
 
904
1087
  <span class="method-name">dateToIdx</span><span class="method-args">(date, forceIntoProject = false)</span>
905
1088
 
@@ -917,24 +1100,24 @@ time frame.
917
1100
  </p>
918
1101
 
919
1102
  <p><a class="source-toggle" href="#"
920
- onclick="toggleCode('M000815-source');return false;">[Source]</a></p>
921
- <div class="method-source-code" id="M000815-source">
1103
+ onclick="toggleCode('M000782-source');return false;">[Source]</a></p>
1104
+ <div class="method-source-code" id="M000782-source">
922
1105
  <pre>
923
- <span class="ruby-comment cmt"># File lib/Project.rb, line 650</span>
924
- 650: <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>)
925
- 651: <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>])
926
- 652: <span class="ruby-comment cmt"># Date is out of range.</span>
927
- 653: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
928
- 654: <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>]
929
- 655: <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>]
930
- 656: <span class="ruby-keyword kw">else</span>
931
- 657: <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>
932
- 658: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
933
- 659: <span class="ruby-keyword kw">end</span>
934
- 660: <span class="ruby-keyword kw">end</span>
935
- 661: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
936
- 662: ((<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>
937
- 663: <span class="ruby-keyword kw">end</span>
1106
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 724</span>
1107
+ 724: <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>)
1108
+ 725: <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>])
1109
+ 726: <span class="ruby-comment cmt"># Date is out of range.</span>
1110
+ 727: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
1111
+ 728: <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>]
1112
+ 729: <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>]
1113
+ 730: <span class="ruby-keyword kw">else</span>
1114
+ 731: <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>
1115
+ 732: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
1116
+ 733: <span class="ruby-keyword kw">end</span>
1117
+ 734: <span class="ruby-keyword kw">end</span>
1118
+ 735: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
1119
+ 736: ((<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>
1120
+ 737: <span class="ruby-keyword kw">end</span>
938
1121
  </pre>
939
1122
  </div>
940
1123
 
@@ -942,12 +1125,12 @@ time frame.
942
1125
  </div>
943
1126
 
944
1127
 
945
- <div id="method-M000792" class="method-detail">
946
- <a name="M000792"></a>
1128
+ <div id="method-M000754" class="method-detail">
1129
+ <a name="M000754"></a>
947
1130
 
948
1131
  <div class="method-heading">
949
1132
 
950
- <a href="#M000792" class="method-signature">
1133
+ <a href="#M000754" class="method-signature">
951
1134
 
952
1135
  <span class="method-name">deep_clone</span><span class="method-args">()</span>
953
1136
 
@@ -958,19 +1141,54 @@ time frame.
958
1141
  <div class="method-description">
959
1142
 
960
1143
  <p>
961
- Overload the <a href="Project.html#M000792">deep_clone</a> function so that
1144
+ Overload the <a href="Project.html#M000754">deep_clone</a> function so that
962
1145
  references to the project don&#8217;t lead to deep copying of the whole
963
1146
  project.
964
1147
  </p>
965
1148
 
966
1149
  <p><a class="source-toggle" href="#"
967
- onclick="toggleCode('M000792-source');return false;">[Source]</a></p>
968
- <div class="method-source-code" id="M000792-source">
1150
+ onclick="toggleCode('M000754-source');return false;">[Source]</a></p>
1151
+ <div class="method-source-code" id="M000754-source">
1152
+ <pre>
1153
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 383</span>
1154
+ 383: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
1155
+ 384: <span class="ruby-keyword kw">self</span>
1156
+ 385: <span class="ruby-keyword kw">end</span>
1157
+ </pre>
1158
+ </div>
1159
+
1160
+ </div>
1161
+ </div>
1162
+
1163
+
1164
+ <div id="method-M000786" class="method-detail">
1165
+ <a name="M000786"></a>
1166
+
1167
+ <div class="method-heading">
1168
+
1169
+ <a href="#M000786" class="method-signature">
1170
+
1171
+ <span class="method-name">error</span><span class="method-args">(id, text)</span>
1172
+
1173
+ </a>
1174
+
1175
+ </div>
1176
+
1177
+ <div class="method-description">
1178
+
1179
+ <p>
1180
+ This function sends an error message to the message handler.
1181
+ </p>
1182
+
1183
+ <p><a class="source-toggle" href="#"
1184
+ onclick="toggleCode('M000786-source');return false;">[Source]</a></p>
1185
+ <div class="method-source-code" id="M000786-source">
969
1186
  <pre>
970
- <span class="ruby-comment cmt"># File lib/Project.rb, line 362</span>
971
- 362: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
972
- 363: <span class="ruby-keyword kw">self</span>
973
- 364: <span class="ruby-keyword kw">end</span>
1187
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 784</span>
1188
+ 784: <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>)
1189
+ 785: <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>)
1190
+ 786: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
1191
+ 787: <span class="ruby-keyword kw">end</span>
974
1192
  </pre>
975
1193
  </div>
976
1194
 
@@ -978,12 +1196,49 @@ project.
978
1196
  </div>
979
1197
 
980
1198
 
981
- <div id="method-M000810" class="method-detail">
982
- <a name="M000810"></a>
1199
+ <div id="method-M000777" class="method-detail">
1200
+ <a name="M000777"></a>
983
1201
 
984
1202
  <div class="method-heading">
985
1203
 
986
- <a href="#M000810" class="method-signature">
1204
+ <a href="#M000777" class="method-signature">
1205
+
1206
+ <span class="method-name">generateReport</span><span class="method-args">(reportId)</span>
1207
+
1208
+ </a>
1209
+
1210
+ </div>
1211
+
1212
+ <div class="method-description">
1213
+
1214
+ <p><a class="source-toggle" href="#"
1215
+ onclick="toggleCode('M000777-source');return false;">[Source]</a></p>
1216
+ <div class="method-source-code" id="M000777-source">
1217
+ <pre>
1218
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 622</span>
1219
+ 622: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">reportId</span>)
1220
+ 623: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">reportId</span>])
1221
+ 624: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
1222
+ 625: <span class="ruby-node">&quot;Request to generate unknown report #{reportId}&quot;</span>)
1223
+ 626: <span class="ruby-keyword kw">end</span>
1224
+ 627: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1225
+ 628: <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>)
1226
+ 629: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1227
+ 630: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1228
+ 631: <span class="ruby-keyword kw">end</span>
1229
+ </pre>
1230
+ </div>
1231
+
1232
+ </div>
1233
+ </div>
1234
+
1235
+
1236
+ <div id="method-M000776" class="method-detail">
1237
+ <a name="M000776"></a>
1238
+
1239
+ <div class="method-heading">
1240
+
1241
+ <a href="#M000776" class="method-signature">
987
1242
 
988
1243
  <span class="method-name">generateReports</span><span class="method-args">(maxCpuCores)</span>
989
1244
 
@@ -996,45 +1251,54 @@ project.
996
1251
  <p>
997
1252
  Call this function to generate the reports based on the scheduling result.
998
1253
  This function may only be called after <a
999
- href="Project.html#M000809">Project#schedule</a> has been called.
1254
+ href="Project.html#M000775">Project#schedule</a> has been called.
1000
1255
  </p>
1001
1256
 
1002
1257
  <p><a class="source-toggle" href="#"
1003
- onclick="toggleCode('M000810-source');return false;">[Source]</a></p>
1004
- <div class="method-source-code" id="M000810-source">
1258
+ onclick="toggleCode('M000776-source');return false;">[Source]</a></p>
1259
+ <div class="method-source-code" id="M000776-source">
1005
1260
  <pre>
1006
- <span class="ruby-comment cmt"># File lib/Project.rb, line 527</span>
1007
- 527: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
1008
- 528: <span class="ruby-keyword kw">begin</span>
1009
- 529: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
1010
- 530: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1011
- 531: <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>
1012
- 532: <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>
1013
- 533: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1014
- 534: <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>)
1015
- 535: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1016
- 536: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1017
- 537: <span class="ruby-keyword kw">end</span>
1018
- 538: <span class="ruby-keyword kw">else</span>
1019
- 539: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
1020
- 540: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1021
- 541: <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>
1022
- 542: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) { <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span> }
1023
- 543: <span class="ruby-keyword kw">end</span>
1024
- 544: <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>
1025
- 545: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
1026
- 546: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
1027
- 547: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
1028
- 548: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1029
- 549: <span class="ruby-keyword kw">end</span>
1030
- 550: <span class="ruby-keyword kw">end</span>
1031
- 551: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1032
- 552: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Report Generation Error: #{$!}&quot;</span>
1033
- 553: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1034
- 554: <span class="ruby-keyword kw">end</span>
1035
- 555:
1036
- 556: <span class="ruby-keyword kw">true</span>
1037
- 557: <span class="ruby-keyword kw">end</span>
1261
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 581</span>
1262
+ 581: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
1263
+ 582: <span class="ruby-keyword kw">begin</span>
1264
+ 583: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
1265
+ 584: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1266
+ 585: <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>
1267
+ 586: <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>
1268
+ 587: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1269
+ 588: <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>)
1270
+ 589: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1271
+ 590: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1272
+ 591: <span class="ruby-keyword kw">end</span>
1273
+ 592: <span class="ruby-keyword kw">else</span>
1274
+ 593: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
1275
+ 594: <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>
1276
+ 595: <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>
1277
+ 596: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
1278
+ 597: <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>)
1279
+ 598: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1280
+ 599: }
1281
+ 600: <span class="ruby-keyword kw">end</span>
1282
+ 601: <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>
1283
+ 602: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
1284
+ 603: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
1285
+ 604: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
1286
+ 605: <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>
1287
+ 606: <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>
1288
+ 607: <span class="ruby-keyword kw">end</span>
1289
+ 608: <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>
1290
+ 609: <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>
1291
+ 610: <span class="ruby-keyword kw">end</span>
1292
+ 611: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1293
+ 612: <span class="ruby-keyword kw">end</span>
1294
+ 613: <span class="ruby-keyword kw">end</span>
1295
+ 614: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1296
+ 615: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Report Generation Error: #{$!}&quot;</span>
1297
+ 616: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1298
+ 617: <span class="ruby-keyword kw">end</span>
1299
+ 618:
1300
+ 619: <span class="ruby-keyword kw">true</span>
1301
+ 620: <span class="ruby-keyword kw">end</span>
1038
1302
  </pre>
1039
1303
  </div>
1040
1304
 
@@ -1042,12 +1306,12 @@ href="Project.html#M000809">Project#schedule</a> has been called.
1042
1306
  </div>
1043
1307
 
1044
1308
 
1045
- <div id="method-M000814" class="method-detail">
1046
- <a name="M000814"></a>
1309
+ <div id="method-M000781" class="method-detail">
1310
+ <a name="M000781"></a>
1047
1311
 
1048
1312
  <div class="method-heading">
1049
1313
 
1050
- <a href="#M000814" class="method-signature">
1314
+ <a href="#M000781" class="method-signature">
1051
1315
 
1052
1316
  <span class="method-name">idxToDate</span><span class="method-args">(idx)</span>
1053
1317
 
@@ -1065,16 +1329,16 @@ raised.
1065
1329
  </p>
1066
1330
 
1067
1331
  <p><a class="source-toggle" href="#"
1068
- onclick="toggleCode('M000814-source');return false;">[Source]</a></p>
1069
- <div class="method-source-code" id="M000814-source">
1332
+ onclick="toggleCode('M000781-source');return false;">[Source]</a></p>
1333
+ <div class="method-source-code" id="M000781-source">
1070
1334
  <pre>
1071
- <span class="ruby-comment cmt"># File lib/Project.rb, line 640</span>
1072
- 640: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1073
- 641: <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>)
1074
- 642: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
1075
- 643: <span class="ruby-keyword kw">end</span>
1076
- 644: <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-operator">*</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
1077
- 645: <span class="ruby-keyword kw">end</span>
1335
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 714</span>
1336
+ 714: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1337
+ 715: <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>)
1338
+ 716: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
1339
+ 717: <span class="ruby-keyword kw">end</span>
1340
+ 718: <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-operator">*</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
1341
+ 719: <span class="ruby-keyword kw">end</span>
1078
1342
  </pre>
1079
1343
  </div>
1080
1344
 
@@ -1082,12 +1346,12 @@ raised.
1082
1346
  </div>
1083
1347
 
1084
1348
 
1085
- <div id="method-M000811" class="method-detail">
1086
- <a name="M000811"></a>
1349
+ <div id="method-M000778" class="method-detail">
1350
+ <a name="M000778"></a>
1087
1351
 
1088
1352
  <div class="method-heading">
1089
1353
 
1090
- <a href="#M000811" class="method-signature">
1354
+ <a href="#M000778" class="method-signature">
1091
1355
 
1092
1356
  <span class="method-name">isWorkingTime(slot) &rarr; true or false<br />
1093
1357
  isWorkingTime(startTime, endTime) &rarr; true or false<br />
@@ -1109,32 +1373,32 @@ defined and the slot lies within a defined working time period.
1109
1373
  </p>
1110
1374
 
1111
1375
  <p><a class="source-toggle" href="#"
1112
- onclick="toggleCode('M000811-source');return false;">[Source]</a></p>
1113
- <div class="method-source-code" id="M000811-source">
1376
+ onclick="toggleCode('M000778-source');return false;">[Source]</a></p>
1377
+ <div class="method-source-code" id="M000778-source">
1114
1378
  <pre>
1115
- <span class="ruby-comment cmt"># File lib/Project.rb, line 599</span>
1116
- 599: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
1117
- 600: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
1118
- 601: <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>
1119
- 602: <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>)
1120
- 603: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
1121
- 604: <span class="ruby-keyword kw">else</span>
1122
- 605: <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>
1123
- 606: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
1124
- 607: <span class="ruby-keyword kw">end</span>
1125
- 608: <span class="ruby-keyword kw">else</span>
1126
- 609: <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>])
1127
- 610: <span class="ruby-keyword kw">end</span>
1128
- 611:
1129
- 612: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
1130
- 613: <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>
1131
- 614: <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>)
1132
- 615: <span class="ruby-keyword kw">end</span>
1133
- 616:
1134
- 617: <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>)
1135
- 618:
1136
- 619: <span class="ruby-keyword kw">true</span>
1137
- 620: <span class="ruby-keyword kw">end</span>
1379
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 673</span>
1380
+ 673: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
1381
+ 674: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
1382
+ 675: <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>
1383
+ 676: <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>)
1384
+ 677: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
1385
+ 678: <span class="ruby-keyword kw">else</span>
1386
+ 679: <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>
1387
+ 680: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
1388
+ 681: <span class="ruby-keyword kw">end</span>
1389
+ 682: <span class="ruby-keyword kw">else</span>
1390
+ 683: <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>])
1391
+ 684: <span class="ruby-keyword kw">end</span>
1392
+ 685:
1393
+ 686: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
1394
+ 687: <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>
1395
+ 688: <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>)
1396
+ 689: <span class="ruby-keyword kw">end</span>
1397
+ 690:
1398
+ 691: <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>)
1399
+ 692:
1400
+ 693: <span class="ruby-keyword kw">true</span>
1401
+ 694: <span class="ruby-keyword kw">end</span>
1138
1402
  </pre>
1139
1403
  </div>
1140
1404
 
@@ -1142,12 +1406,12 @@ defined and the slot lies within a defined working time period.
1142
1406
  </div>
1143
1407
 
1144
1408
 
1145
- <div id="method-M000799" class="method-detail">
1146
- <a name="M000799"></a>
1409
+ <div id="method-M000765" class="method-detail">
1410
+ <a name="M000765"></a>
1147
1411
 
1148
1412
  <div class="method-heading">
1149
1413
 
1150
- <a href="#M000799" class="method-signature">
1414
+ <a href="#M000765" class="method-signature">
1151
1415
 
1152
1416
  <span class="method-name">monthlyWorkingDays</span><span class="method-args">()</span>
1153
1417
 
@@ -1162,13 +1426,13 @@ Return the average number of working days per month.
1162
1426
  </p>
1163
1427
 
1164
1428
  <p><a class="source-toggle" href="#"
1165
- onclick="toggleCode('M000799-source');return false;">[Source]</a></p>
1166
- <div class="method-source-code" id="M000799-source">
1429
+ onclick="toggleCode('M000765-source');return false;">[Source]</a></p>
1430
+ <div class="method-source-code" id="M000765-source">
1167
1431
  <pre>
1168
- <span class="ruby-comment cmt"># File lib/Project.rb, line 405</span>
1169
- 405: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
1170
- 406: <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>
1171
- 407: <span class="ruby-keyword kw">end</span>
1432
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 459</span>
1433
+ 459: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
1434
+ 460: <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>
1435
+ 461: <span class="ruby-keyword kw">end</span>
1172
1436
  </pre>
1173
1437
  </div>
1174
1438
 
@@ -1176,12 +1440,12 @@ Return the average number of working days per month.
1176
1440
  </div>
1177
1441
 
1178
1442
 
1179
- <div id="method-M000807" class="method-detail">
1180
- <a name="M000807"></a>
1443
+ <div id="method-M000773" class="method-detail">
1444
+ <a name="M000773"></a>
1181
1445
 
1182
1446
  <div class="method-heading">
1183
1447
 
1184
- <a href="#M000807" class="method-signature">
1448
+ <a href="#M000773" class="method-signature">
1185
1449
 
1186
1450
  <span class="method-name">report</span><span class="method-args">(id)</span>
1187
1451
 
@@ -1197,13 +1461,13 @@ return nil if it does not exist.
1197
1461
  </p>
1198
1462
 
1199
1463
  <p><a class="source-toggle" href="#"
1200
- onclick="toggleCode('M000807-source');return false;">[Source]</a></p>
1201
- <div class="method-source-code" id="M000807-source">
1464
+ onclick="toggleCode('M000773-source');return false;">[Source]</a></p>
1465
+ <div class="method-source-code" id="M000773-source">
1202
1466
  <pre>
1203
- <span class="ruby-comment cmt"># File lib/Project.rb, line 466</span>
1204
- 466: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
1205
- 467: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
1206
- 468: <span class="ruby-keyword kw">end</span>
1467
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 520</span>
1468
+ 520: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
1469
+ 521: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
1470
+ 522: <span class="ruby-keyword kw">end</span>
1207
1471
  </pre>
1208
1472
  </div>
1209
1473
 
@@ -1211,12 +1475,12 @@ return nil if it does not exist.
1211
1475
  </div>
1212
1476
 
1213
1477
 
1214
- <div id="method-M000808" class="method-detail">
1215
- <a name="M000808"></a>
1478
+ <div id="method-M000774" class="method-detail">
1479
+ <a name="M000774"></a>
1216
1480
 
1217
1481
  <div class="method-heading">
1218
1482
 
1219
- <a href="#M000808" class="method-signature">
1483
+ <a href="#M000774" class="method-signature">
1220
1484
 
1221
1485
  <span class="method-name">reportByName</span><span class="method-args">(name)</span>
1222
1486
 
@@ -1232,16 +1496,16 @@ return nil if it does not exist.
1232
1496
  </p>
1233
1497
 
1234
1498
  <p><a class="source-toggle" href="#"
1235
- onclick="toggleCode('M000808-source');return false;">[Source]</a></p>
1236
- <div class="method-source-code" id="M000808-source">
1499
+ onclick="toggleCode('M000774-source');return false;">[Source]</a></p>
1500
+ <div class="method-source-code" id="M000774-source">
1237
1501
  <pre>
1238
- <span class="ruby-comment cmt"># File lib/Project.rb, line 472</span>
1239
- 472: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
1240
- 473: <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>
1241
- 474: <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>
1242
- 475: <span class="ruby-keyword kw">end</span>
1243
- 476: <span class="ruby-keyword kw">nil</span>
1244
- 477: <span class="ruby-keyword kw">end</span>
1502
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 526</span>
1503
+ 526: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
1504
+ 527: <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>
1505
+ 528: <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>
1506
+ 529: <span class="ruby-keyword kw">end</span>
1507
+ 530: <span class="ruby-keyword kw">nil</span>
1508
+ 531: <span class="ruby-keyword kw">end</span>
1245
1509
  </pre>
1246
1510
  </div>
1247
1511
 
@@ -1249,12 +1513,12 @@ return nil if it does not exist.
1249
1513
  </div>
1250
1514
 
1251
1515
 
1252
- <div id="method-M000806" class="method-detail">
1253
- <a name="M000806"></a>
1516
+ <div id="method-M000772" class="method-detail">
1517
+ <a name="M000772"></a>
1254
1518
 
1255
1519
  <div class="method-heading">
1256
1520
 
1257
- <a href="#M000806" class="method-signature">
1521
+ <a href="#M000772" class="method-signature">
1258
1522
 
1259
1523
  <span class="method-name">resource</span><span class="method-args">(id)</span>
1260
1524
 
@@ -1270,13 +1534,13 @@ return nil if it does not exist.
1270
1534
  </p>
1271
1535
 
1272
1536
  <p><a class="source-toggle" href="#"
1273
- onclick="toggleCode('M000806-source');return false;">[Source]</a></p>
1274
- <div class="method-source-code" id="M000806-source">
1537
+ onclick="toggleCode('M000772-source');return false;">[Source]</a></p>
1538
+ <div class="method-source-code" id="M000772-source">
1275
1539
  <pre>
1276
- <span class="ruby-comment cmt"># File lib/Project.rb, line 461</span>
1277
- 461: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
1278
- 462: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
1279
- 463: <span class="ruby-keyword kw">end</span>
1540
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 515</span>
1541
+ 515: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
1542
+ 516: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
1543
+ 517: <span class="ruby-keyword kw">end</span>
1280
1544
  </pre>
1281
1545
  </div>
1282
1546
 
@@ -1284,12 +1548,12 @@ return nil if it does not exist.
1284
1548
  </div>
1285
1549
 
1286
1550
 
1287
- <div id="method-M000801" class="method-detail">
1288
- <a name="M000801"></a>
1551
+ <div id="method-M000767" class="method-detail">
1552
+ <a name="M000767"></a>
1289
1553
 
1290
1554
  <div class="method-heading">
1291
1555
 
1292
- <a href="#M000801" class="method-signature">
1556
+ <a href="#M000767" class="method-signature">
1293
1557
 
1294
1558
  <span class="method-name">scenario(index) &rarr; Scenario<br />
1295
1559
  scenario(id) &rarr; Scenario<br />
@@ -1307,20 +1571,20 @@ or <em>index</em>.
1307
1571
  </p>
1308
1572
 
1309
1573
  <p><a class="source-toggle" href="#"
1310
- onclick="toggleCode('M000801-source');return false;">[Source]</a></p>
1311
- <div class="method-source-code" id="M000801-source">
1574
+ onclick="toggleCode('M000767-source');return false;">[Source]</a></p>
1575
+ <div class="method-source-code" id="M000767-source">
1312
1576
  <pre>
1313
- <span class="ruby-comment cmt"># File lib/Project.rb, line 419</span>
1314
- 419: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
1315
- 420: <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>)
1316
- 421: <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>
1317
- 422: <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>
1318
- 423: <span class="ruby-keyword kw">end</span>
1319
- 424: <span class="ruby-keyword kw">else</span>
1320
- 425: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
1321
- 426: <span class="ruby-keyword kw">end</span>
1322
- 427: <span class="ruby-keyword kw">nil</span>
1323
- 428: <span class="ruby-keyword kw">end</span>
1577
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 473</span>
1578
+ 473: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
1579
+ 474: <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>)
1580
+ 475: <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>
1581
+ 476: <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>
1582
+ 477: <span class="ruby-keyword kw">end</span>
1583
+ 478: <span class="ruby-keyword kw">else</span>
1584
+ 479: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
1585
+ 480: <span class="ruby-keyword kw">end</span>
1586
+ 481: <span class="ruby-keyword kw">nil</span>
1587
+ 482: <span class="ruby-keyword kw">end</span>
1324
1588
  </pre>
1325
1589
  </div>
1326
1590
 
@@ -1328,12 +1592,12 @@ or <em>index</em>.
1328
1592
  </div>
1329
1593
 
1330
1594
 
1331
- <div id="method-M000796" class="method-detail">
1332
- <a name="M000796"></a>
1595
+ <div id="method-M000758" class="method-detail">
1596
+ <a name="M000758"></a>
1333
1597
 
1334
1598
  <div class="method-heading">
1335
1599
 
1336
- <a href="#M000796" class="method-signature">
1600
+ <a href="#M000758" class="method-signature">
1337
1601
 
1338
1602
  <span class="method-name">scenarioCount</span><span class="method-args">()</span>
1339
1603
 
@@ -1348,13 +1612,13 @@ Return the number of defined scenarios for the project.
1348
1612
  </p>
1349
1613
 
1350
1614
  <p><a class="source-toggle" href="#"
1351
- onclick="toggleCode('M000796-source');return false;">[Source]</a></p>
1352
- <div class="method-source-code" id="M000796-source">
1615
+ onclick="toggleCode('M000758-source');return false;">[Source]</a></p>
1616
+ <div class="method-source-code" id="M000758-source">
1353
1617
  <pre>
1354
- <span class="ruby-comment cmt"># File lib/Project.rb, line 389</span>
1355
- 389: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
1356
- 390: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
1357
- 391: <span class="ruby-keyword kw">end</span>
1618
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 410</span>
1619
+ 410: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
1620
+ 411: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
1621
+ 412: <span class="ruby-keyword kw">end</span>
1358
1622
  </pre>
1359
1623
  </div>
1360
1624
 
@@ -1362,12 +1626,12 @@ Return the number of defined scenarios for the project.
1362
1626
  </div>
1363
1627
 
1364
1628
 
1365
- <div id="method-M000802" class="method-detail">
1366
- <a name="M000802"></a>
1629
+ <div id="method-M000768" class="method-detail">
1630
+ <a name="M000768"></a>
1367
1631
 
1368
1632
  <div class="method-heading">
1369
1633
 
1370
- <a href="#M000802" class="method-signature">
1634
+ <a href="#M000768" class="method-signature">
1371
1635
 
1372
1636
  <span class="method-name">scenarioIdx(scenario)<br />
1373
1637
  scenarioIdx(id)<br />
@@ -1385,19 +1649,19 @@ specified by <em>scenario</em> or <em>id</em>.
1385
1649
  </p>
1386
1650
 
1387
1651
  <p><a class="source-toggle" href="#"
1388
- onclick="toggleCode('M000802-source');return false;">[Source]</a></p>
1389
- <div class="method-source-code" id="M000802-source">
1652
+ onclick="toggleCode('M000768-source');return false;">[Source]</a></p>
1653
+ <div class="method-source-code" id="M000768-source">
1390
1654
  <pre>
1391
- <span class="ruby-comment cmt"># File lib/Project.rb, line 435</span>
1392
- 435: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
1393
- 436: <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>)
1394
- 437: <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>
1395
- 438: <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>
1396
- 439: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1397
- 440: <span class="ruby-keyword kw">else</span>
1398
- 441: <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>
1399
- 442: <span class="ruby-keyword kw">end</span>
1400
- 443: <span class="ruby-keyword kw">end</span>
1655
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 489</span>
1656
+ 489: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
1657
+ 490: <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>)
1658
+ 491: <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>
1659
+ 492: <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>
1660
+ 493: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1661
+ 494: <span class="ruby-keyword kw">else</span>
1662
+ 495: <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>
1663
+ 496: <span class="ruby-keyword kw">end</span>
1664
+ 497: <span class="ruby-keyword kw">end</span>
1401
1665
  </pre>
1402
1666
  </div>
1403
1667
 
@@ -1405,12 +1669,12 @@ specified by <em>scenario</em> or <em>id</em>.
1405
1669
  </div>
1406
1670
 
1407
1671
 
1408
- <div id="method-M000809" class="method-detail">
1409
- <a name="M000809"></a>
1672
+ <div id="method-M000775" class="method-detail">
1673
+ <a name="M000775"></a>
1410
1674
 
1411
1675
  <div class="method-heading">
1412
1676
 
1413
- <a href="#M000809" class="method-signature">
1677
+ <a href="#M000775" class="method-signature">
1414
1678
 
1415
1679
  <span class="method-name">schedule</span><span class="method-args">()</span>
1416
1680
 
@@ -1427,52 +1691,52 @@ stores the result in the data structures again.
1427
1691
  </p>
1428
1692
 
1429
1693
  <p><a class="source-toggle" href="#"
1430
- onclick="toggleCode('M000809-source');return false;">[Source]</a></p>
1431
- <div class="method-source-code" id="M000809-source">
1694
+ onclick="toggleCode('M000775-source');return false;">[Source]</a></p>
1695
+ <div class="method-source-code" id="M000775-source">
1432
1696
  <pre>
1433
- <span class="ruby-comment cmt"># File lib/Project.rb, line 482</span>
1434
- 482: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
1435
- 483: [ <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>
1436
- 484: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">inheritAttributesFromScenario</span>
1437
- 485: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
1438
- 486: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
1439
- 487: <span class="ruby-keyword kw">end</span>
1440
- 488:
1441
- 489: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
1442
- 490: <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>)
1443
- 491: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
1444
- 492: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1445
- 493: <span class="ruby-keyword kw">end</span>
1446
- 494:
1447
- 495: <span class="ruby-keyword kw">begin</span>
1448
- 496: <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>
1449
- 497: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
1450
- 498: <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>)
1451
- 499:
1452
- 500: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
1453
- 501:
1454
- 502: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
1455
- 503: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
1456
- 504: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
1457
- 505: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
1458
- 506: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
1459
- 507: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
1460
- 508:
1461
- 509: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
1462
- 510: <span class="ruby-comment cmt"># as computed.</span>
1463
- 511: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
1464
- 512: <span class="ruby-comment cmt"># Schedule the scenario.</span>
1465
- 513: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
1466
- 514:
1467
- 515: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
1468
- 516: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
1469
- 517: <span class="ruby-keyword kw">end</span>
1470
- 518: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1471
- 519: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1472
- 520: <span class="ruby-keyword kw">end</span>
1473
- 521:
1474
- 522: <span class="ruby-keyword kw">true</span>
1475
- 523: <span class="ruby-keyword kw">end</span>
1697
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 536</span>
1698
+ 536: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
1699
+ 537: [ <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>
1700
+ 538: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">inheritAttributesFromScenario</span>
1701
+ 539: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
1702
+ 540: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
1703
+ 541: <span class="ruby-keyword kw">end</span>
1704
+ 542:
1705
+ 543: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
1706
+ 544: <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>)
1707
+ 545: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
1708
+ 546: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1709
+ 547: <span class="ruby-keyword kw">end</span>
1710
+ 548:
1711
+ 549: <span class="ruby-keyword kw">begin</span>
1712
+ 550: <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>
1713
+ 551: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
1714
+ 552: <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>)
1715
+ 553:
1716
+ 554: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
1717
+ 555:
1718
+ 556: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
1719
+ 557: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
1720
+ 558: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
1721
+ 559: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
1722
+ 560: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
1723
+ 561: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
1724
+ 562:
1725
+ 563: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
1726
+ 564: <span class="ruby-comment cmt"># as computed.</span>
1727
+ 565: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
1728
+ 566: <span class="ruby-comment cmt"># Schedule the scenario.</span>
1729
+ 567: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
1730
+ 568:
1731
+ 569: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
1732
+ 570: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
1733
+ 571: <span class="ruby-keyword kw">end</span>
1734
+ 572: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1735
+ 573: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1736
+ 574: <span class="ruby-keyword kw">end</span>
1737
+ 575:
1738
+ 576: <span class="ruby-keyword kw">true</span>
1739
+ 577: <span class="ruby-keyword kw">end</span>
1476
1740
  </pre>
1477
1741
  </div>
1478
1742
 
@@ -1480,12 +1744,12 @@ stores the result in the data structures again.
1480
1744
  </div>
1481
1745
 
1482
1746
 
1483
- <div id="method-M000813" class="method-detail">
1484
- <a name="M000813"></a>
1747
+ <div id="method-M000780" class="method-detail">
1748
+ <a name="M000780"></a>
1485
1749
 
1486
1750
  <div class="method-heading">
1487
1751
 
1488
- <a href="#M000813" class="method-signature">
1752
+ <a href="#M000780" class="method-signature">
1489
1753
 
1490
1754
  <span class="method-name">scoreboardSize</span><span class="method-args">()</span>
1491
1755
 
@@ -1503,14 +1767,14 @@ number of entries in the scoreboards.
1503
1767
  </p>
1504
1768
 
1505
1769
  <p><a class="source-toggle" href="#"
1506
- onclick="toggleCode('M000813-source');return false;">[Source]</a></p>
1507
- <div class="method-source-code" id="M000813-source">
1770
+ onclick="toggleCode('M000780-source');return false;">[Source]</a></p>
1771
+ <div class="method-source-code" id="M000780-source">
1508
1772
  <pre>
1509
- <span class="ruby-comment cmt"># File lib/Project.rb, line 632</span>
1510
- 632: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
1511
- 633: ((<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>
1512
- 634: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
1513
- 635: <span class="ruby-keyword kw">end</span>
1773
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 706</span>
1774
+ 706: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
1775
+ 707: ((<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>
1776
+ 708: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
1777
+ 709: <span class="ruby-keyword kw">end</span>
1514
1778
  </pre>
1515
1779
  </div>
1516
1780
 
@@ -1518,12 +1782,12 @@ number of entries in the scoreboards.
1518
1782
  </div>
1519
1783
 
1520
1784
 
1521
- <div id="method-M000793" class="method-detail">
1522
- <a name="M000793"></a>
1785
+ <div id="method-M000755" class="method-detail">
1786
+ <a name="M000755"></a>
1523
1787
 
1524
1788
  <div class="method-heading">
1525
1789
 
1526
- <a href="#M000793" class="method-signature">
1790
+ <a href="#M000755" class="method-signature">
1527
1791
 
1528
1792
  <span class="method-name">sendMessage</span><span class="method-args">(message)</span>
1529
1793
 
@@ -1539,13 +1803,13 @@ is a <a href="../String.html">String</a> that contains the message.
1539
1803
  </p>
1540
1804
 
1541
1805
  <p><a class="source-toggle" href="#"
1542
- onclick="toggleCode('M000793-source');return false;">[Source]</a></p>
1543
- <div class="method-source-code" id="M000793-source">
1806
+ onclick="toggleCode('M000755-source');return false;">[Source]</a></p>
1807
+ <div class="method-source-code" id="M000755-source">
1544
1808
  <pre>
1545
- <span class="ruby-comment cmt"># File lib/Project.rb, line 368</span>
1546
- 368: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
1547
- 369: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
1548
- 370: <span class="ruby-keyword kw">end</span>
1809
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 389</span>
1810
+ 389: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
1811
+ 390: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
1812
+ 391: <span class="ruby-keyword kw">end</span>
1549
1813
  </pre>
1550
1814
  </div>
1551
1815
 
@@ -1553,12 +1817,12 @@ is a <a href="../String.html">String</a> that contains the message.
1553
1817
  </div>
1554
1818
 
1555
1819
 
1556
- <div id="method-M000803" class="method-detail">
1557
- <a name="M000803"></a>
1820
+ <div id="method-M000769" class="method-detail">
1821
+ <a name="M000769"></a>
1558
1822
 
1559
1823
  <div class="method-heading">
1560
1824
 
1561
- <a href="#M000803" class="method-signature">
1825
+ <a href="#M000769" class="method-signature">
1562
1826
 
1563
1827
  <span class="method-name">shift</span><span class="method-args">(id)</span>
1564
1828
 
@@ -1574,13 +1838,13 @@ nil if it does not exist.
1574
1838
  </p>
1575
1839
 
1576
1840
  <p><a class="source-toggle" href="#"
1577
- onclick="toggleCode('M000803-source');return false;">[Source]</a></p>
1578
- <div class="method-source-code" id="M000803-source">
1841
+ onclick="toggleCode('M000769-source');return false;">[Source]</a></p>
1842
+ <div class="method-source-code" id="M000769-source">
1579
1843
  <pre>
1580
- <span class="ruby-comment cmt"># File lib/Project.rb, line 446</span>
1581
- 446: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
1582
- 447: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
1583
- 448: <span class="ruby-keyword kw">end</span>
1844
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 500</span>
1845
+ 500: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
1846
+ 501: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
1847
+ 502: <span class="ruby-keyword kw">end</span>
1584
1848
  </pre>
1585
1849
  </div>
1586
1850
 
@@ -1588,12 +1852,12 @@ nil if it does not exist.
1588
1852
  </div>
1589
1853
 
1590
1854
 
1591
- <div id="method-M000805" class="method-detail">
1592
- <a name="M000805"></a>
1855
+ <div id="method-M000771" class="method-detail">
1856
+ <a name="M000771"></a>
1593
1857
 
1594
1858
  <div class="method-heading">
1595
1859
 
1596
- <a href="#M000805" class="method-signature">
1860
+ <a href="#M000771" class="method-signature">
1597
1861
 
1598
1862
  <span class="method-name">task</span><span class="method-args">(id)</span>
1599
1863
 
@@ -1609,13 +1873,13 @@ nil if it does not exist.
1609
1873
  </p>
1610
1874
 
1611
1875
  <p><a class="source-toggle" href="#"
1612
- onclick="toggleCode('M000805-source');return false;">[Source]</a></p>
1613
- <div class="method-source-code" id="M000805-source">
1876
+ onclick="toggleCode('M000771-source');return false;">[Source]</a></p>
1877
+ <div class="method-source-code" id="M000771-source">
1614
1878
  <pre>
1615
- <span class="ruby-comment cmt"># File lib/Project.rb, line 456</span>
1616
- 456: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
1617
- 457: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
1618
- 458: <span class="ruby-keyword kw">end</span>
1879
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 510</span>
1880
+ 510: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
1881
+ 511: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
1882
+ 512: <span class="ruby-keyword kw">end</span>
1619
1883
  </pre>
1620
1884
  </div>
1621
1885
 
@@ -1623,12 +1887,12 @@ nil if it does not exist.
1623
1887
  </div>
1624
1888
 
1625
1889
 
1626
- <div id="method-M000818" class="method-detail">
1627
- <a name="M000818"></a>
1890
+ <div id="method-M000785" class="method-detail">
1891
+ <a name="M000785"></a>
1628
1892
 
1629
1893
  <div class="method-heading">
1630
1894
 
1631
- <a href="#M000818" class="method-signature">
1895
+ <a href="#M000785" class="method-signature">
1632
1896
 
1633
1897
  <span class="method-name">to_s</span><span class="method-args">()</span>
1634
1898
 
@@ -1643,18 +1907,19 @@ Print the attribute values. It&#8217;s used for debugging only.
1643
1907
  </p>
1644
1908
 
1645
1909
  <p><a class="source-toggle" href="#"
1646
- onclick="toggleCode('M000818-source');return false;">[Source]</a></p>
1647
- <div class="method-source-code" id="M000818-source">
1910
+ onclick="toggleCode('M000785-source');return false;">[Source]</a></p>
1911
+ <div class="method-source-code" id="M000785-source">
1648
1912
  <pre>
1649
- <span class="ruby-comment cmt"># File lib/Project.rb, line 701</span>
1650
- 701: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1651
- 702: <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>
1652
- 703: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
1653
- 704: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
1654
- 705: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
1655
- 706: <span class="ruby-keyword kw">end</span>
1656
- 707: <span class="ruby-keyword kw">end</span>
1657
- 708: <span class="ruby-keyword kw">end</span>
1913
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 773</span>
1914
+ 773: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1915
+ 774: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;STOP!&quot;</span>
1916
+ 775: <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>
1917
+ 776: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
1918
+ 777: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
1919
+ 778: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
1920
+ 779: <span class="ruby-keyword kw">end</span>
1921
+ 780: <span class="ruby-keyword kw">end</span>
1922
+ 781: <span class="ruby-keyword kw">end</span>
1658
1923
  </pre>
1659
1924
  </div>
1660
1925
 
@@ -1662,12 +1927,12 @@ Print the attribute values. It&#8217;s used for debugging only.
1662
1927
  </div>
1663
1928
 
1664
1929
 
1665
- <div id="method-M000798" class="method-detail">
1666
- <a name="M000798"></a>
1930
+ <div id="method-M000764" class="method-detail">
1931
+ <a name="M000764"></a>
1667
1932
 
1668
1933
  <div class="method-heading">
1669
1934
 
1670
- <a href="#M000798" class="method-signature">
1935
+ <a href="#M000764" class="method-signature">
1671
1936
 
1672
1937
  <span class="method-name">weeklyWorkingDays</span><span class="method-args">()</span>
1673
1938
 
@@ -1682,13 +1947,13 @@ Return the average number of working days per week.
1682
1947
  </p>
1683
1948
 
1684
1949
  <p><a class="source-toggle" href="#"
1685
- onclick="toggleCode('M000798-source');return false;">[Source]</a></p>
1686
- <div class="method-source-code" id="M000798-source">
1950
+ onclick="toggleCode('M000764-source');return false;">[Source]</a></p>
1951
+ <div class="method-source-code" id="M000764-source">
1687
1952
  <pre>
1688
- <span class="ruby-comment cmt"># File lib/Project.rb, line 400</span>
1689
- 400: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
1690
- 401: <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>
1691
- 402: <span class="ruby-keyword kw">end</span>
1953
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 454</span>
1954
+ 454: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
1955
+ 455: <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>
1956
+ 456: <span class="ruby-keyword kw">end</span>
1692
1957
  </pre>
1693
1958
  </div>
1694
1959
 
@@ -1696,12 +1961,12 @@ Return the average number of working days per week.
1696
1961
  </div>
1697
1962
 
1698
1963
 
1699
- <div id="method-M000800" class="method-detail">
1700
- <a name="M000800"></a>
1964
+ <div id="method-M000766" class="method-detail">
1965
+ <a name="M000766"></a>
1701
1966
 
1702
1967
  <div class="method-heading">
1703
1968
 
1704
- <a href="#M000800" class="method-signature">
1969
+ <a href="#M000766" class="method-signature">
1705
1970
 
1706
1971
  <span class="method-name">yearlyWorkingDays</span><span class="method-args">()</span>
1707
1972
 
@@ -1716,13 +1981,13 @@ Return the average number of working days per year.
1716
1981
  </p>
1717
1982
 
1718
1983
  <p><a class="source-toggle" href="#"
1719
- onclick="toggleCode('M000800-source');return false;">[Source]</a></p>
1720
- <div class="method-source-code" id="M000800-source">
1984
+ onclick="toggleCode('M000766-source');return false;">[Source]</a></p>
1985
+ <div class="method-source-code" id="M000766-source">
1721
1986
  <pre>
1722
- <span class="ruby-comment cmt"># File lib/Project.rb, line 410</span>
1723
- 410: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
1724
- 411: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
1725
- 412: <span class="ruby-keyword kw">end</span>
1987
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 464</span>
1988
+ 464: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
1989
+ 465: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
1990
+ 466: <span class="ruby-keyword kw">end</span>
1726
1991
  </pre>
1727
1992
  </div>
1728
1993
 
@@ -1733,12 +1998,12 @@ Return the average number of working days per year.
1733
1998
  <h3 class="section-bar">Protected Instance methods</h3>
1734
1999
 
1735
2000
 
1736
- <div id="method-M000820" class="method-detail">
1737
- <a name="M000820"></a>
2001
+ <div id="method-M000788" class="method-detail">
2002
+ <a name="M000788"></a>
1738
2003
 
1739
2004
  <div class="method-heading">
1740
2005
 
1741
- <a href="#M000820" class="method-signature">
2006
+ <a href="#M000788" class="method-signature">
1742
2007
 
1743
2008
  <span class="method-name">finishScenario</span><span class="method-args">(scIdx)</span>
1744
2009
 
@@ -1749,28 +2014,28 @@ Return the average number of working days per year.
1749
2014
  <div class="method-description">
1750
2015
 
1751
2016
  <p><a class="source-toggle" href="#"
1752
- onclick="toggleCode('M000820-source');return false;">[Source]</a></p>
1753
- <div class="method-source-code" id="M000820-source">
2017
+ onclick="toggleCode('M000788-source');return false;">[Source]</a></p>
2018
+ <div class="method-source-code" id="M000788-source">
1754
2019
  <pre>
1755
- <span class="ruby-comment cmt"># File lib/Project.rb, line 772</span>
1756
- 772: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
1757
- 773: <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>)
1758
- 774: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
1759
- 775: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1760
- 776: <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>
1761
- 777: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>)
1762
- 778: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1763
- 779: <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-operator">*</span> <span class="ruby-value">0</span><span class="ruby-value">.5</span>)
1764
- 780: <span class="ruby-keyword kw">end</span>
1765
- 781:
1766
- 782: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1767
- 783: <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>
1768
- 784: <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>
1769
- 785: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1770
- 786: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.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-operator">*</span> <span class="ruby-value">0</span><span class="ruby-value">.5</span>)
1771
- 787: <span class="ruby-keyword kw">end</span>
1772
- 788: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1773
- 789: <span class="ruby-keyword kw">end</span>
2020
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 851</span>
2021
+ 851: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2022
+ 852: <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>)
2023
+ 853: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
2024
+ 854: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2025
+ 855: <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>
2026
+ 856: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2027
+ 857: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2028
+ 858: <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-operator">*</span> <span class="ruby-value">0</span><span class="ruby-value">.5</span>)
2029
+ 859: <span class="ruby-keyword kw">end</span>
2030
+ 860:
2031
+ 861: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2032
+ 862: <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>
2033
+ 863: <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>
2034
+ 864: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2035
+ 865: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.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-operator">*</span> <span class="ruby-value">0</span><span class="ruby-value">.5</span>)
2036
+ 866: <span class="ruby-keyword kw">end</span>
2037
+ 867: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2038
+ 868: <span class="ruby-keyword kw">end</span>
1774
2039
  </pre>
1775
2040
  </div>
1776
2041
 
@@ -1778,12 +2043,12 @@ Return the average number of working days per year.
1778
2043
  </div>
1779
2044
 
1780
2045
 
1781
- <div id="method-M000819" class="method-detail">
1782
- <a name="M000819"></a>
2046
+ <div id="method-M000787" class="method-detail">
2047
+ <a name="M000787"></a>
1783
2048
 
1784
2049
  <div class="method-heading">
1785
2050
 
1786
- <a href="#M000819" class="method-signature">
2051
+ <a href="#M000787" class="method-signature">
1787
2052
 
1788
2053
  <span class="method-name">prepareScenario</span><span class="method-args">(scIdx)</span>
1789
2054
 
@@ -1794,69 +2059,69 @@ Return the average number of working days per year.
1794
2059
  <div class="method-description">
1795
2060
 
1796
2061
  <p><a class="source-toggle" href="#"
1797
- onclick="toggleCode('M000819-source');return false;">[Source]</a></p>
1798
- <div class="method-source-code" id="M000819-source">
2062
+ onclick="toggleCode('M000787-source');return false;">[Source]</a></p>
2063
+ <div class="method-source-code" id="M000787-source">
1799
2064
  <pre>
1800
- <span class="ruby-comment cmt"># File lib/Project.rb, line 712</span>
1801
- 712: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
1802
- 713: <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>)
1803
- 714: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
1804
- 715: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
1805
- 716:
1806
- 717: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
1807
- 718: <span class="ruby-comment cmt"># project.</span>
1808
- 719: <span class="ruby-identifier">usedResources</span> = []
1809
- 720: <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>
1810
- 721: <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>
1811
- 722: <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>)
1812
- 723: <span class="ruby-keyword kw">end</span>
1813
- 724: <span class="ruby-keyword kw">end</span>
1814
- 725: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
1815
- 726: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1816
- 727: <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>
1817
- 728: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
1818
- 729: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1819
- 730: <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-operator">*</span> <span class="ruby-value">0</span><span class="ruby-value">.8</span>)
1820
- 731: <span class="ruby-keyword kw">end</span>
1821
- 732:
1822
- 733: <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>) }
1823
- 734: <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>) }
1824
- 735: <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>) }
1825
- 736: <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>) }
1826
- 737:
1827
- 738: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
1828
- 739: <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>) }
1829
- 740: <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>
1830
- 741: <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>
1831
- 742: <span class="ruby-keyword kw">end</span>
1832
- 743: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.85</span>)
1833
- 744: <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>) }
1834
- 745: <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>
1835
- 746: <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>
1836
- 747: <span class="ruby-keyword kw">end</span>
1837
- 748: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.87</span>)
1838
- 749:
1839
- 750: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
1840
- 751: <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>) }
1841
- 752: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.88</span>)
1842
- 753: <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>) }
1843
- 754: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.9</span>)
1844
- 755: <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>) }
1845
- 756: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.95</span>)
1846
- 757: <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>) }
1847
- 758: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
1848
- 759:
1849
- 760: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1850
- 761: <span class="ruby-comment cmt"># This is used for debugging only</span>
1851
- 762: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
1852
- 763: <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>
1853
- 764: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">resource</span>
1854
- 765: <span class="ruby-keyword kw">end</span>
1855
- 766: <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>
1856
- 767: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">task</span>
1857
- 768: <span class="ruby-keyword kw">end</span>
1858
- 769: <span class="ruby-keyword kw">end</span>
1859
- 770: <span class="ruby-keyword kw">end</span>
2065
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 791</span>
2066
+ 791: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2067
+ 792: <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>)
2068
+ 793: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
2069
+ 794: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2070
+ 795:
2071
+ 796: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
2072
+ 797: <span class="ruby-comment cmt"># project.</span>
2073
+ 798: <span class="ruby-identifier">usedResources</span> = []
2074
+ 799: <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>
2075
+ 800: <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>
2076
+ 801: <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>)
2077
+ 802: <span class="ruby-keyword kw">end</span>
2078
+ 803: <span class="ruby-keyword kw">end</span>
2079
+ 804: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
2080
+ 805: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2081
+ 806: <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>
2082
+ 807: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2083
+ 808: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2084
+ 809: <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-operator">*</span> <span class="ruby-value">0</span><span class="ruby-value">.8</span>)
2085
+ 810: <span class="ruby-keyword kw">end</span>
2086
+ 811:
2087
+ 812: <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>) }
2088
+ 813: <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>) }
2089
+ 814: <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>) }
2090
+ 815: <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>) }
2091
+ 816:
2092
+ 817: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
2093
+ 818: <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>) }
2094
+ 819: <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>
2095
+ 820: <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>
2096
+ 821: <span class="ruby-keyword kw">end</span>
2097
+ 822: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.85</span>)
2098
+ 823: <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>) }
2099
+ 824: <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>
2100
+ 825: <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>
2101
+ 826: <span class="ruby-keyword kw">end</span>
2102
+ 827: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.87</span>)
2103
+ 828:
2104
+ 829: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
2105
+ 830: <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>) }
2106
+ 831: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.88</span>)
2107
+ 832: <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>) }
2108
+ 833: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.9</span>)
2109
+ 834: <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>) }
2110
+ 835: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0</span><span class="ruby-value">.95</span>)
2111
+ 836: <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>) }
2112
+ 837: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
2113
+ 838:
2114
+ 839: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2115
+ 840: <span class="ruby-comment cmt"># This is used for debugging only</span>
2116
+ 841: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
2117
+ 842: <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>
2118
+ 843: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">resource</span>
2119
+ 844: <span class="ruby-keyword kw">end</span>
2120
+ 845: <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>
2121
+ 846: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">task</span>
2122
+ 847: <span class="ruby-keyword kw">end</span>
2123
+ 848: <span class="ruby-keyword kw">end</span>
2124
+ 849: <span class="ruby-keyword kw">end</span>
1860
2125
  </pre>
1861
2126
  </div>
1862
2127
 
@@ -1864,12 +2129,12 @@ Return the average number of working days per year.
1864
2129
  </div>
1865
2130
 
1866
2131
 
1867
- <div id="method-M000821" class="method-detail">
1868
- <a name="M000821"></a>
2132
+ <div id="method-M000789" class="method-detail">
2133
+ <a name="M000789"></a>
1869
2134
 
1870
2135
  <div class="method-heading">
1871
2136
 
1872
- <a href="#M000821" class="method-signature">
2137
+ <a href="#M000789" class="method-signature">
1873
2138
 
1874
2139
  <span class="method-name">scheduleScenario</span><span class="method-args">(scIdx)</span>
1875
2140
 
@@ -1885,90 +2150,90 @@ index <tt>scIdx</tt>.
1885
2150
  </p>
1886
2151
 
1887
2152
  <p><a class="source-toggle" href="#"
1888
- onclick="toggleCode('M000821-source');return false;">[Source]</a></p>
1889
- <div class="method-source-code" id="M000821-source">
2153
+ onclick="toggleCode('M000789-source');return false;">[Source]</a></p>
2154
+ <div class="method-source-code" id="M000789-source">
1890
2155
  <pre>
1891
- <span class="ruby-comment cmt"># File lib/Project.rb, line 792</span>
1892
- 792: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
1893
- 793: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
1894
- 794: <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> }
1895
- 795:
1896
- 796: <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>)
1897
- 797: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
1898
- 798: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
1899
- 799: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
1900
- 800: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
1901
- 801: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
1902
- 802: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
1903
- 803: <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> ],
1904
- 804: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
1905
- 805: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">-1</span> ] ])
1906
- 806: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
1907
- 807: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
1908
- 808:
1909
- 809: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
1910
- 810: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
1911
- 811: <span class="ruby-comment cmt"># true.</span>
1912
- 812: <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>
1913
- 813: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
1914
- 814: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
1915
- 815: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
1916
- 816: <span class="ruby-comment cmt"># ready to be scheduled.</span>
1917
- 817: <span class="ruby-identifier">workItems</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">tasks</span>)
1918
- 818:
1919
- 819: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
1920
- 820: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
1921
- 821: <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>
1922
- 822: <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>]
1923
- 823: <span class="ruby-keyword kw">end</span>
1924
- 824:
1925
- 825: <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>)
1926
- 826: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
1927
- 827: <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>) }
1928
- 828:
1929
- 829: <span class="ruby-comment cmt"># Check if we are done.</span>
1930
- 830: <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>
1931
- 831:
1932
- 832: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
1933
- 833: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
1934
- 834: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
1935
- 835: <span class="ruby-comment cmt"># Schedule it.</span>
1936
- 836: <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>)
1937
- 837: <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>
1938
- 838: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
1939
- 839: <span class="ruby-keyword kw">end</span>
1940
- 840: <span class="ruby-keyword kw">end</span>
1941
- 841: <span class="ruby-identifier">unscheduledTasks</span> = []
1942
- 842: <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>] }
1943
- 843:
1944
- 844: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
1945
- 845: <span class="ruby-comment cmt"># warnings.</span>
1946
- 846: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
1947
- 847: <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>,
1948
- 848: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be &quot;</span> <span class="ruby-operator">+</span>
1949
- 849: <span class="ruby-value str">&quot;scheduled&quot;</span>)
1950
- 850: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
1951
- 851: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1952
- 852: <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>
1953
- 853: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(
1954
- 854: <span class="ruby-value str">'unscheduled_task'</span>, <span class="ruby-value str">'warning'</span>,
1955
- 855: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
1956
- 856: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
1957
- 857: <span class="ruby-node">&quot;#{t['end', scIdx] ? t['end', scIdx] : '&lt;?&gt;'}&quot;</span>, <span class="ruby-identifier">t</span>,
1958
- 858: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
1959
- 859: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
1960
- 860:
1961
- 861: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1962
- 862: <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>
1963
- 863: <span class="ruby-keyword kw">end</span>
1964
- 864: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1965
- 865: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1966
- 866: <span class="ruby-keyword kw">end</span>
1967
- 867:
1968
- 868: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1969
- 869: <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>)
1970
- 870: <span class="ruby-keyword kw">true</span>
1971
- 871: <span class="ruby-keyword kw">end</span>
2156
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 871</span>
2157
+ 871: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2158
+ 872: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2159
+ 873: <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> }
2160
+ 874:
2161
+ 875: <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>)
2162
+ 876: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
2163
+ 877: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
2164
+ 878: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
2165
+ 879: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
2166
+ 880: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
2167
+ 881: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
2168
+ 882: <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> ],
2169
+ 883: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
2170
+ 884: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">-1</span> ] ])
2171
+ 885: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
2172
+ 886: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
2173
+ 887:
2174
+ 888: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
2175
+ 889: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
2176
+ 890: <span class="ruby-comment cmt"># true.</span>
2177
+ 891: <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>
2178
+ 892: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
2179
+ 893: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
2180
+ 894: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
2181
+ 895: <span class="ruby-comment cmt"># ready to be scheduled.</span>
2182
+ 896: <span class="ruby-identifier">workItems</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">to_ary</span>
2183
+ 897:
2184
+ 898: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
2185
+ 899: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
2186
+ 900: <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>
2187
+ 901: <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>]
2188
+ 902: <span class="ruby-keyword kw">end</span>
2189
+ 903:
2190
+ 904: <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>)
2191
+ 905: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
2192
+ 906: <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>) }
2193
+ 907:
2194
+ 908: <span class="ruby-comment cmt"># Check if we are done.</span>
2195
+ 909: <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>
2196
+ 910:
2197
+ 911: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
2198
+ 912: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
2199
+ 913: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
2200
+ 914: <span class="ruby-comment cmt"># Schedule it.</span>
2201
+ 915: <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>)
2202
+ 916: <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>
2203
+ 917: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
2204
+ 918: <span class="ruby-keyword kw">end</span>
2205
+ 919: <span class="ruby-keyword kw">end</span>
2206
+ 920: <span class="ruby-identifier">unscheduledTasks</span> = []
2207
+ 921: <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>] }
2208
+ 922:
2209
+ 923: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
2210
+ 924: <span class="ruby-comment cmt"># warnings.</span>
2211
+ 925: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
2212
+ 926: <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>,
2213
+ 927: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be &quot;</span> <span class="ruby-operator">+</span>
2214
+ 928: <span class="ruby-value str">&quot;scheduled&quot;</span>)
2215
+ 929: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2216
+ 930: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2217
+ 931: <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>
2218
+ 932: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(
2219
+ 933: <span class="ruby-value str">'unscheduled_task'</span>, <span class="ruby-value str">'warning'</span>,
2220
+ 934: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
2221
+ 935: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
2222
+ 936: <span class="ruby-node">&quot;#{t['end', scIdx] ? t['end', scIdx] : '&lt;?&gt;'}&quot;</span>, <span class="ruby-identifier">t</span>,
2223
+ 937: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
2224
+ 938: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2225
+ 939:
2226
+ 940: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2227
+ 941: <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>
2228
+ 942: <span class="ruby-keyword kw">end</span>
2229
+ 943: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2230
+ 944: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2231
+ 945: <span class="ruby-keyword kw">end</span>
2232
+ 946:
2233
+ 947: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2234
+ 948: <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>)
2235
+ 949: <span class="ruby-keyword kw">true</span>
2236
+ 950: <span class="ruby-keyword kw">end</span>
1972
2237
  </pre>
1973
2238
  </div>
1974
2239