taskjuggler 0.0.6 → 0.0.7

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 (545) hide show
  1. data/CHANGELOG +160 -0
  2. data/benchmarks/UTF-8-Strings.rb +58 -0
  3. data/data/css/tjreport.css +7 -2
  4. data/doc/AppConfig.html +10 -4
  5. data/doc/Arguments.html +10 -4
  6. data/doc/CHANGELOG.html +171 -5
  7. data/doc/COPYING.html +10 -4
  8. data/doc/Object.html +11 -107
  9. data/doc/README.html +10 -4
  10. data/doc/RuntimeConfig.html +10 -4
  11. data/doc/String.html +16 -11
  12. data/doc/StringIO.html +10 -4
  13. data/doc/TaskJuggler.html +506 -435
  14. data/doc/TaskJuggler/Account.html +10 -4
  15. data/doc/TaskJuggler/AccountAttribute.html +10 -4
  16. data/doc/TaskJuggler/AccountScenario.html +10 -4
  17. data/doc/TaskJuggler/Allocation.html +69 -60
  18. data/doc/TaskJuggler/AllocationAttribute.html +10 -4
  19. data/doc/TaskJuggler/AttributeBase.html +10 -4
  20. data/doc/TaskJuggler/AttributeDefinition.html +10 -4
  21. data/doc/TaskJuggler/BatchProcessor.html +202 -192
  22. data/doc/TaskJuggler/Booking.html +10 -4
  23. data/doc/TaskJuggler/BookingListAttribute.html +10 -4
  24. data/doc/TaskJuggler/BooleanAttribute.html +10 -4
  25. data/doc/TaskJuggler/CSVFile.html +10 -4
  26. data/doc/TaskJuggler/CellSettingPattern.html +10 -4
  27. data/doc/TaskJuggler/CellSettingPatternList.html +10 -4
  28. data/doc/TaskJuggler/Charge.html +10 -4
  29. data/doc/TaskJuggler/ChargeListAttribute.html +10 -4
  30. data/doc/TaskJuggler/ChargeSet.html +10 -4
  31. data/doc/TaskJuggler/ChargeSetListAttribute.html +10 -4
  32. data/doc/TaskJuggler/ColumnListAttribute.html +10 -4
  33. data/doc/TaskJuggler/ColumnTable.html +10 -4
  34. data/doc/TaskJuggler/Daemon.html +71 -52
  35. data/doc/TaskJuggler/DateAttribute.html +10 -4
  36. data/doc/TaskJuggler/DefinitionListAttribute.html +10 -4
  37. data/doc/TaskJuggler/DependencyListAttribute.html +10 -4
  38. data/doc/TaskJuggler/DurationAttribute.html +10 -4
  39. data/doc/TaskJuggler/{MacroParser.html → FileList.html} +58 -173
  40. data/doc/TaskJuggler/{RichTextException.html → FileRecord.html} +59 -80
  41. data/doc/TaskJuggler/FixnumAttribute.html +10 -4
  42. data/doc/TaskJuggler/FlagListAttribute.html +10 -4
  43. data/doc/TaskJuggler/FloatAttribute.html +10 -4
  44. data/doc/TaskJuggler/FormatListAttribute.html +10 -4
  45. data/doc/TaskJuggler/GanttChart.html +10 -4
  46. data/doc/TaskJuggler/GanttContainer.html +14 -8
  47. data/doc/TaskJuggler/GanttHeader.html +10 -4
  48. data/doc/TaskJuggler/GanttHeaderScaleItem.html +10 -4
  49. data/doc/TaskJuggler/GanttLine.html +29 -24
  50. data/doc/TaskJuggler/GanttLoadStack.html +10 -4
  51. data/doc/TaskJuggler/GanttMilestone.html +10 -4
  52. data/doc/TaskJuggler/GanttRouter.html +10 -4
  53. data/doc/TaskJuggler/GanttTaskBar.html +20 -10
  54. data/doc/TaskJuggler/HTMLDocument.html +10 -4
  55. data/doc/TaskJuggler/HTMLGraphics.html +10 -4
  56. data/doc/TaskJuggler/Interval.html +10 -4
  57. data/doc/TaskJuggler/IntervalListAttribute.html +10 -4
  58. data/doc/TaskJuggler/JobInfo.html +10 -4
  59. data/doc/TaskJuggler/Journal.html +227 -160
  60. data/doc/TaskJuggler/JournalEntry.html +10 -4
  61. data/doc/TaskJuggler/JournalEntryList.html +158 -72
  62. data/doc/TaskJuggler/KeywordArray.html +21 -9
  63. data/doc/TaskJuggler/KeywordDocumentation.html +612 -475
  64. data/doc/TaskJuggler/Limits.html +13 -8
  65. data/doc/TaskJuggler/Limits/Limit.html +10 -4
  66. data/doc/TaskJuggler/LimitsAttribute.html +10 -4
  67. data/doc/TaskJuggler/ListAttributeBase.html +10 -4
  68. data/doc/TaskJuggler/Log.html +10 -4
  69. data/doc/TaskJuggler/LogFile.html +10 -4
  70. data/doc/TaskJuggler/LogicalAttribute.html +10 -4
  71. data/doc/TaskJuggler/LogicalExpression.html +11 -5
  72. data/doc/TaskJuggler/LogicalExpressionAttribute.html +10 -4
  73. data/doc/TaskJuggler/LogicalFlag.html +10 -4
  74. data/doc/TaskJuggler/LogicalFunction.html +132 -124
  75. data/doc/TaskJuggler/LogicalOperation.html +10 -4
  76. data/doc/TaskJuggler/Macro.html +16 -10
  77. data/doc/TaskJuggler/MacroTable.html +44 -38
  78. data/doc/TaskJuggler/ManagerResponsibilities.html +10 -4
  79. data/doc/TaskJuggler/ManagerStatusRecord.html +10 -4
  80. data/doc/TaskJuggler/Message.html +92 -68
  81. data/doc/TaskJuggler/MessageHandler.html +349 -28
  82. data/doc/TaskJuggler/Navigator.html +10 -4
  83. data/doc/TaskJuggler/NavigatorElement.html +10 -4
  84. data/doc/TaskJuggler/NikuProject.html +10 -4
  85. data/doc/TaskJuggler/NikuReport.html +10 -4
  86. data/doc/TaskJuggler/NikuResource.html +10 -4
  87. data/doc/TaskJuggler/NodeListAttribute.html +10 -4
  88. data/doc/TaskJuggler/OnShiftCache.html +10 -4
  89. data/doc/TaskJuggler/ProcessIntercom.html +118 -111
  90. data/doc/TaskJuggler/ProcessIntercomIface.html +75 -22
  91. data/doc/TaskJuggler/Project.html +886 -913
  92. data/doc/TaskJuggler/ProjectBroker.html +442 -331
  93. data/doc/TaskJuggler/ProjectBrokerIface.html +95 -38
  94. data/doc/TaskJuggler/ProjectFileParser.html +320 -317
  95. data/doc/TaskJuggler/ProjectFileScanner.html +336 -339
  96. data/doc/TaskJuggler/ProjectRecord.html +119 -56
  97. data/doc/TaskJuggler/ProjectServer.html +282 -237
  98. data/doc/TaskJuggler/ProjectServerIface.html +45 -39
  99. data/doc/TaskJuggler/PropertyAttribute.html +10 -4
  100. data/doc/TaskJuggler/PropertyList.html +177 -173
  101. data/doc/TaskJuggler/PropertySet.html +11 -5
  102. data/doc/TaskJuggler/PropertyTreeNode.html +194 -191
  103. data/doc/TaskJuggler/Query.html +280 -256
  104. data/doc/TaskJuggler/RTFHandlers.html +10 -4
  105. data/doc/TaskJuggler/RTFNavigator.html +33 -26
  106. data/doc/TaskJuggler/RTFQuery.html +135 -169
  107. data/doc/TaskJuggler/RTFReport.html +63 -56
  108. data/doc/TaskJuggler/RTFReportLink.html +58 -47
  109. data/doc/TaskJuggler/RTFWithQuerySupport.html +666 -0
  110. data/doc/TaskJuggler/RealFormat.html +10 -4
  111. data/doc/TaskJuggler/RealFormatAttribute.html +10 -4
  112. data/doc/TaskJuggler/ReferenceAttribute.html +10 -4
  113. data/doc/TaskJuggler/Report.html +333 -290
  114. data/doc/TaskJuggler/ReportBase.html +182 -174
  115. data/doc/TaskJuggler/ReportContext.html +10 -4
  116. data/doc/TaskJuggler/ReportServer.html +144 -126
  117. data/doc/TaskJuggler/ReportServerIface.html +50 -44
  118. data/doc/TaskJuggler/ReportServerRecord.html +38 -32
  119. data/doc/TaskJuggler/ReportServlet.html +144 -137
  120. data/doc/TaskJuggler/ReportTable.html +10 -4
  121. data/doc/TaskJuggler/ReportTableCell.html +169 -164
  122. data/doc/TaskJuggler/ReportTableColumn.html +10 -4
  123. data/doc/TaskJuggler/ReportTableLegend.html +10 -4
  124. data/doc/TaskJuggler/ReportTableLine.html +10 -4
  125. data/doc/TaskJuggler/Resource.html +121 -115
  126. data/doc/TaskJuggler/ResourceListAttribute.html +10 -4
  127. data/doc/TaskJuggler/ResourceListRE.html +10 -4
  128. data/doc/TaskJuggler/ResourceScenario.html +13 -7
  129. data/doc/TaskJuggler/RichText.html +61 -37
  130. data/doc/TaskJuggler/RichTextAttribute.html +10 -4
  131. data/doc/TaskJuggler/RichTextDocument.html +91 -81
  132. data/doc/TaskJuggler/RichTextElement.html +378 -317
  133. data/doc/TaskJuggler/RichTextFunctionExample.html +10 -4
  134. data/doc/TaskJuggler/RichTextFunctionHandler.html +16 -11
  135. data/doc/TaskJuggler/RichTextImage.html +10 -4
  136. data/doc/TaskJuggler/RichTextIntermediate.html +138 -70
  137. data/doc/TaskJuggler/RichTextParser.html +48 -40
  138. data/doc/TaskJuggler/RichTextScanner.html +328 -906
  139. data/doc/TaskJuggler/RichTextSnip.html +59 -57
  140. data/doc/TaskJuggler/RichTextSyntaxRules.html +458 -369
  141. data/doc/TaskJuggler/Scenario.html +10 -4
  142. data/doc/TaskJuggler/ScenarioData.html +33 -30
  143. data/doc/TaskJuggler/ScenarioListAttribute.html +10 -4
  144. data/doc/TaskJuggler/Scoreboard.html +10 -4
  145. data/doc/TaskJuggler/SheetHandlerBase.html +315 -191
  146. data/doc/TaskJuggler/SheetReceiver.html +334 -313
  147. data/doc/TaskJuggler/SheetSender.html +10 -4
  148. data/doc/TaskJuggler/Shift.html +10 -4
  149. data/doc/TaskJuggler/ShiftAssignment.html +10 -4
  150. data/doc/TaskJuggler/ShiftAssignments.html +10 -4
  151. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +10 -4
  152. data/doc/TaskJuggler/ShiftScenario.html +10 -4
  153. data/doc/TaskJuggler/SimpleQueryExpander.html +697 -0
  154. data/doc/TaskJuggler/SortListAttribute.html +10 -4
  155. data/doc/TaskJuggler/SourceFileInfo.html +10 -4
  156. data/doc/TaskJuggler/StatusSheetReceiver.html +10 -4
  157. data/doc/TaskJuggler/StatusSheetReport.html +10 -4
  158. data/doc/TaskJuggler/StatusSheetSender.html +10 -4
  159. data/doc/TaskJuggler/StringAttribute.html +10 -4
  160. data/doc/TaskJuggler/SymbolAttribute.html +10 -4
  161. data/doc/TaskJuggler/SyntaxReference.html +260 -230
  162. data/doc/TaskJuggler/TOCEntry.html +99 -42
  163. data/doc/TaskJuggler/TSResourceRecord.html +10 -4
  164. data/doc/TaskJuggler/TSTaskRecord.html +10 -4
  165. data/doc/TaskJuggler/TableColumnDefinition.html +10 -4
  166. data/doc/TaskJuggler/TableOfContents.html +54 -12
  167. data/doc/TaskJuggler/TableReport.html +877 -872
  168. data/doc/TaskJuggler/Task.html +117 -68
  169. data/doc/TaskJuggler/TaskDependency.html +10 -4
  170. data/doc/TaskJuggler/TaskListAttribute.html +10 -4
  171. data/doc/TaskJuggler/TaskListRE.html +10 -4
  172. data/doc/TaskJuggler/TaskScenario.html +1681 -1563
  173. data/doc/TaskJuggler/TextFormatter.html +10 -4
  174. data/doc/TaskJuggler/TextParser.html +567 -534
  175. data/doc/TaskJuggler/TextParser/Pattern.html +128 -118
  176. data/doc/TaskJuggler/TextParser/Rule.html +26 -15
  177. data/doc/TaskJuggler/TextParser/StackElement.html +10 -4
  178. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +22 -16
  179. data/doc/TaskJuggler/TextParser/TokenDoc.html +10 -4
  180. data/doc/TaskJuggler/TextReport.html +15 -6
  181. data/doc/TaskJuggler/TextScanner.html +319 -287
  182. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +16 -10
  183. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +23 -17
  184. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +17 -11
  185. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  186. data/doc/TaskJuggler/TimeSheet.html +138 -175
  187. data/doc/TaskJuggler/TimeSheetReceiver.html +10 -4
  188. data/doc/TaskJuggler/TimeSheetRecord.html +65 -58
  189. data/doc/TaskJuggler/TimeSheetReport.html +47 -42
  190. data/doc/TaskJuggler/TimeSheetSender.html +10 -4
  191. data/doc/TaskJuggler/TimeSheetSummary.html +91 -83
  192. data/doc/TaskJuggler/TimeSheets.html +22 -16
  193. data/doc/TaskJuggler/Tj3AppBase.html +10 -4
  194. data/doc/TaskJuggler/Tj3Client.html +399 -365
  195. data/doc/TaskJuggler/Tj3Daemon.html +107 -94
  196. data/doc/TaskJuggler/Tj3SheetAppBase.html +10 -4
  197. data/doc/TaskJuggler/Tj3SsReceiver.html +10 -4
  198. data/doc/TaskJuggler/Tj3SsSender.html +10 -4
  199. data/doc/TaskJuggler/Tj3TsReceiver.html +10 -4
  200. data/doc/TaskJuggler/Tj3TsSender.html +10 -4
  201. data/doc/TaskJuggler/Tj3TsSummary.html +10 -4
  202. data/doc/TaskJuggler/TjException.html +10 -4
  203. data/doc/TaskJuggler/TjTime.html +145 -140
  204. data/doc/TaskJuggler/TjpExample.html +10 -4
  205. data/doc/TaskJuggler/TjpExportRE.html +122 -118
  206. data/doc/TaskJuggler/TjpSyntaxRules.html +4065 -4052
  207. data/doc/TaskJuggler/URLParameter.html +10 -4
  208. data/doc/TaskJuggler/UserManual.html +162 -155
  209. data/doc/TaskJuggler/VimSyntax.html +1028 -0
  210. data/doc/TaskJuggler/WebServer.html +45 -27
  211. data/doc/TaskJuggler/WorkingHours.html +10 -4
  212. data/doc/TaskJuggler/WorkingHoursAttribute.html +10 -4
  213. data/doc/TaskJuggler/XMLBlob.html +10 -4
  214. data/doc/TaskJuggler/XMLComment.html +10 -4
  215. data/doc/TaskJuggler/XMLDocument.html +10 -4
  216. data/doc/TaskJuggler/XMLElement.html +10 -4
  217. data/doc/TaskJuggler/XMLNamedText.html +10 -4
  218. data/doc/TaskJuggler/XMLText.html +10 -4
  219. data/doc/index.html +735 -677
  220. data/doc/lib/AccountScenario_rb.html +1 -1
  221. data/doc/lib/Account_rb.html +1 -1
  222. data/doc/lib/Allocation_rb.html +1 -1
  223. data/doc/lib/AppConfig_rb.html +1 -1
  224. data/doc/lib/AttributeBase_rb.html +1 -1
  225. data/doc/lib/AttributeDefinition_rb.html +1 -1
  226. data/doc/lib/Attributes_rb.html +1 -1
  227. data/doc/lib/BatchProcessor_rb.html +1 -1
  228. data/doc/lib/Booking_rb.html +1 -1
  229. data/doc/lib/ChargeSet_rb.html +1 -1
  230. data/doc/lib/Charge_rb.html +1 -1
  231. data/doc/lib/{Message_rb.html → FileList_rb.html} +3 -5
  232. data/doc/lib/HTMLDocument_rb.html +1 -1
  233. data/doc/lib/Interval_rb.html +1 -1
  234. data/doc/lib/Journal_rb.html +1 -1
  235. data/doc/lib/KeywordArray_rb.html +1 -1
  236. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  237. data/doc/lib/Limits_rb.html +1 -1
  238. data/doc/lib/LogFile_rb.html +1 -1
  239. data/doc/lib/Log_rb.html +1 -1
  240. data/doc/lib/LogicalExpression_rb.html +1 -1
  241. data/doc/lib/LogicalFunction_rb.html +1 -1
  242. data/doc/lib/LogicalOperation_rb.html +1 -1
  243. data/doc/lib/MacroTable_rb.html +1 -3
  244. data/doc/lib/MessageHandler_rb.html +1 -1
  245. data/doc/lib/ProjectFileParser_rb.html +1 -1
  246. data/doc/lib/ProjectFileScanner_rb.html +1 -1
  247. data/doc/lib/Project_rb.html +4 -2
  248. data/doc/lib/PropertyList_rb.html +1 -1
  249. data/doc/lib/PropertySet_rb.html +1 -1
  250. data/doc/lib/PropertyTreeNode_rb.html +1 -1
  251. data/doc/lib/Query_rb.html +1 -1
  252. data/doc/lib/RTFHandlers_rb.html +1 -1
  253. data/doc/lib/RTFNavigator_rb.html +1 -1
  254. data/doc/lib/RTFQuery_rb.html +2 -2
  255. data/doc/lib/RTFReportLink_rb.html +4 -2
  256. data/doc/lib/RTFReport_rb.html +1 -1
  257. data/doc/lib/{MacroParser_rb.html → RTFWithQuerySupport_rb.html} +4 -6
  258. data/doc/lib/RealFormat_rb.html +1 -1
  259. data/doc/lib/ResourceScenario_rb.html +1 -1
  260. data/doc/lib/Resource_rb.html +1 -1
  261. data/doc/lib/RichTextDocument_rb.html +1 -1
  262. data/doc/lib/RichTextElement_rb.html +1 -1
  263. data/doc/lib/RichTextFunctionExample_rb.html +1 -1
  264. data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
  265. data/doc/lib/RichTextParser_rb.html +1 -1
  266. data/doc/lib/RichTextScanner_rb.html +3 -1
  267. data/doc/lib/RichTextSnip_rb.html +1 -1
  268. data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
  269. data/doc/lib/RichText_rb.html +3 -1
  270. data/doc/lib/RuntimeConfig_rb.html +1 -1
  271. data/doc/lib/ScenarioData_rb.html +2 -2
  272. data/doc/lib/Scenario_rb.html +1 -1
  273. data/doc/lib/Scoreboard_rb.html +1 -1
  274. data/doc/lib/SheetHandlerBase_rb.html +5 -1
  275. data/doc/lib/SheetReceiver_rb.html +3 -1
  276. data/doc/lib/SheetSender_rb.html +1 -1
  277. data/doc/lib/ShiftAssignments_rb.html +1 -1
  278. data/doc/lib/ShiftScenario_rb.html +1 -1
  279. data/doc/lib/Shift_rb.html +1 -1
  280. data/doc/lib/SimpleQueryExpander_rb.html +67 -0
  281. data/doc/lib/SourceFileInfo_rb.html +1 -1
  282. data/doc/lib/StatusSheetReceiver_rb.html +1 -1
  283. data/doc/lib/StatusSheetSender_rb.html +1 -1
  284. data/doc/lib/SyntaxReference_rb.html +1 -1
  285. data/doc/lib/TOCEntry_rb.html +1 -1
  286. data/doc/lib/TableColumnDefinition_rb.html +1 -1
  287. data/doc/lib/TableOfContents_rb.html +1 -1
  288. data/doc/lib/TaskDependency_rb.html +1 -1
  289. data/doc/lib/TaskJuggler_rb.html +1 -1
  290. data/doc/lib/TaskScenario_rb.html +1 -1
  291. data/doc/lib/Task_rb.html +1 -1
  292. data/doc/lib/TextFormatter_rb.html +1 -1
  293. data/doc/lib/TextParser/Pattern_rb.html +1 -1
  294. data/doc/lib/TextParser/Rule_rb.html +1 -1
  295. data/doc/lib/TextParser/StackElement_rb.html +1 -1
  296. data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
  297. data/doc/lib/TextParser_rb.html +3 -1
  298. data/doc/lib/TextScanner_rb.html +1 -3
  299. data/doc/lib/TimeSheetReceiver_rb.html +1 -1
  300. data/doc/lib/TimeSheetSender_rb.html +1 -1
  301. data/doc/lib/TimeSheetSummary_rb.html +1 -1
  302. data/doc/lib/TimeSheets_rb.html +1 -1
  303. data/doc/lib/Tj3AppBase_rb.html +1 -1
  304. data/doc/lib/Tj3Config_rb.html +1 -1
  305. data/doc/lib/Tj3SheetAppBase_rb.html +1 -1
  306. data/doc/lib/TjException_rb.html +1 -1
  307. data/doc/lib/TjTime_rb.html +1 -1
  308. data/doc/lib/TjpExample_rb.html +1 -1
  309. data/doc/lib/TjpSyntaxRules_rb.html +1 -1
  310. data/doc/lib/URLParameter_rb.html +1 -1
  311. data/doc/lib/UTF8String_rb.html +1 -1
  312. data/doc/lib/UserManual_rb.html +1 -1
  313. data/doc/lib/{ruby-signal-bug_rb.html → VimSyntax_rb.html} +17 -4
  314. data/doc/lib/WorkingHours_rb.html +1 -1
  315. data/doc/lib/XMLDocument_rb.html +1 -1
  316. data/doc/lib/XMLElement_rb.html +1 -1
  317. data/doc/lib/daemon/Daemon_rb.html +1 -1
  318. data/doc/lib/daemon/ProcessIntercom_rb.html +1 -1
  319. data/doc/lib/daemon/ProjectBroker_rb.html +1 -1
  320. data/doc/lib/daemon/ProjectServer_rb.html +1 -1
  321. data/doc/lib/daemon/ReportServer_rb.html +1 -3
  322. data/doc/lib/daemon/WebServer_rb.html +1 -1
  323. data/doc/lib/deep_copy_rb.html +1 -1
  324. data/doc/lib/reports/CSVFile_rb.html +1 -1
  325. data/doc/lib/reports/ColumnTable_rb.html +1 -1
  326. data/doc/lib/reports/GanttChart_rb.html +1 -1
  327. data/doc/lib/reports/GanttContainer_rb.html +1 -1
  328. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  329. data/doc/lib/reports/GanttHeader_rb.html +1 -1
  330. data/doc/lib/reports/GanttLine_rb.html +1 -1
  331. data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
  332. data/doc/lib/reports/GanttMilestone_rb.html +1 -1
  333. data/doc/lib/reports/GanttRouter_rb.html +1 -1
  334. data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
  335. data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
  336. data/doc/lib/reports/Navigator_rb.html +1 -1
  337. data/doc/lib/reports/NikuReport_rb.html +1 -1
  338. data/doc/lib/reports/ReportBase_rb.html +1 -1
  339. data/doc/lib/reports/ReportContext_rb.html +1 -1
  340. data/doc/lib/reports/ReportTableCell_rb.html +1 -1
  341. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  342. data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
  343. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  344. data/doc/lib/reports/ReportTable_rb.html +1 -1
  345. data/doc/lib/reports/Report_rb.html +1 -1
  346. data/doc/lib/reports/ResourceListRE_rb.html +1 -1
  347. data/doc/lib/reports/StatusSheetReport_rb.html +1 -1
  348. data/doc/lib/reports/TableReport_rb.html +1 -1
  349. data/doc/lib/reports/TaskListRE_rb.html +1 -1
  350. data/doc/lib/reports/TextReport_rb.html +1 -1
  351. data/doc/lib/reports/TimeSheetReport_rb.html +1 -1
  352. data/doc/lib/reports/TjpExportRE_rb.html +1 -1
  353. data/doc/lib/taskjuggler3_rb.html +1 -1
  354. data/doc/lib/tj3client_rb.html +1 -1
  355. data/doc/lib/tj3d_rb.html +1 -1
  356. data/doc/lib/tj3man_rb.html +1 -1
  357. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  358. data/doc/lib/tj3ss_sender_rb.html +1 -1
  359. data/doc/lib/tj3ts_receiver_rb.html +1 -1
  360. data/doc/lib/tj3ts_sender_rb.html +1 -1
  361. data/doc/lib/tj3ts_summary_rb.html +1 -1
  362. data/lib/Allocation.rb +8 -5
  363. data/lib/BatchProcessor.rb +7 -3
  364. data/lib/FileList.rb +58 -0
  365. data/lib/Journal.rb +73 -33
  366. data/lib/KeywordArray.rb +4 -0
  367. data/lib/KeywordDocumentation.rb +45 -11
  368. data/lib/Limits.rb +0 -1
  369. data/lib/LogicalExpression.rb +1 -1
  370. data/lib/LogicalFunction.rb +14 -12
  371. data/lib/MacroTable.rb +3 -4
  372. data/lib/MessageHandler.rb +136 -7
  373. data/lib/Project.rb +72 -86
  374. data/lib/ProjectFileParser.rb +30 -33
  375. data/lib/ProjectFileScanner.rb +7 -16
  376. data/lib/PropertyList.rb +25 -27
  377. data/lib/PropertySet.rb +1 -1
  378. data/lib/PropertyTreeNode.rb +9 -12
  379. data/lib/Query.rb +5 -4
  380. data/lib/RTFNavigator.rb +2 -1
  381. data/lib/RTFQuery.rb +4 -11
  382. data/lib/RTFReport.rb +2 -1
  383. data/lib/RTFReportLink.rb +10 -4
  384. data/lib/RTFWithQuerySupport.rb +45 -0
  385. data/lib/Resource.rb +20 -20
  386. data/lib/ResourceScenario.rb +3 -3
  387. data/lib/RichText.rb +15 -7
  388. data/lib/RichTextDocument.rb +8 -4
  389. data/lib/RichTextElement.rb +35 -12
  390. data/lib/RichTextFunctionHandler.rb +11 -12
  391. data/lib/RichTextParser.rb +5 -3
  392. data/lib/RichTextScanner.rb +144 -565
  393. data/lib/RichTextSnip.rb +3 -7
  394. data/lib/RichTextSyntaxRules.rb +51 -32
  395. data/lib/ScenarioData.rb +16 -25
  396. data/lib/SheetHandlerBase.rb +59 -2
  397. data/lib/SheetReceiver.rb +36 -18
  398. data/lib/SimpleQueryExpander.rb +58 -0
  399. data/lib/SyntaxReference.rb +9 -5
  400. data/lib/TOCEntry.rb +2 -0
  401. data/lib/TableOfContents.rb +4 -0
  402. data/lib/Task.rb +23 -12
  403. data/lib/TaskJuggler.rb +72 -33
  404. data/lib/TaskScenario.rb +131 -53
  405. data/lib/TextParser.rb +43 -30
  406. data/lib/TextParser/Pattern.rb +17 -13
  407. data/lib/TextParser/Rule.rb +5 -0
  408. data/lib/TextScanner.rb +46 -25
  409. data/lib/TimeSheetSummary.rb +9 -7
  410. data/lib/TimeSheets.rb +14 -23
  411. data/lib/Tj3Config.rb +1 -1
  412. data/lib/TjTime.rb +1 -2
  413. data/lib/TjpSyntaxRules.rb +128 -104
  414. data/lib/UTF8String.rb +0 -1
  415. data/lib/UserManual.rb +5 -4
  416. data/lib/VimSyntax.rb +223 -0
  417. data/lib/daemon/Daemon.rb +9 -0
  418. data/lib/daemon/ProcessIntercom.rb +19 -4
  419. data/lib/daemon/ProjectBroker.rb +149 -68
  420. data/lib/daemon/ProjectServer.rb +119 -79
  421. data/lib/daemon/ReportServer.rb +42 -31
  422. data/lib/daemon/WebServer.rb +21 -2
  423. data/lib/deep_copy.rb +1 -1
  424. data/lib/reports/GanttContainer.rb +2 -2
  425. data/lib/reports/GanttLine.rb +2 -3
  426. data/lib/reports/GanttTaskBar.rb +7 -3
  427. data/lib/reports/Report.rb +62 -57
  428. data/lib/reports/ReportBase.rb +6 -4
  429. data/lib/reports/ReportTableCell.rb +13 -14
  430. data/lib/reports/TableReport.rb +2 -1
  431. data/lib/reports/TextReport.rb +3 -0
  432. data/lib/reports/TimeSheetReport.rb +2 -3
  433. data/lib/reports/TjpExportRE.rb +0 -2
  434. data/lib/tj3client.rb +31 -3
  435. data/lib/tj3d.rb +8 -1
  436. data/manual/Day_To_Day_Juggling +2 -95
  437. data/manual/How_To_Contribute +2 -1
  438. data/manual/Rich_Text_Attributes +37 -3
  439. data/manual/Software +203 -0
  440. data/test/MessageChecker.rb +4 -4
  441. data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
  442. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  443. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  444. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  445. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  446. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  447. data/test/TestSuite/HTML-Reports/css/tjmanual.css +14 -0
  448. data/test/TestSuite/HTML-Reports/css/tjreport.css +233 -21
  449. data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
  450. data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
  451. data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +20 -20
  452. data/test/TestSuite/ReportGenerator/Correct/Alerts.tjp +48 -0
  453. data/test/TestSuite/ReportGenerator/Correct/Macros.tjp +57 -0
  454. data/test/TestSuite/ReportGenerator/Correct/refs/Alerts-1.csv +386 -0
  455. data/test/TestSuite/ReportGenerator/Correct/refs/Macros-1.csv +6 -0
  456. data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjmanual.css +0 -0
  457. data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjreport.css +0 -0
  458. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/details.png +0 -0
  459. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-green.png +0 -0
  460. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-red.png +0 -0
  461. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-yellow.png +0 -0
  462. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resource.png +0 -0
  463. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resourcegroup.png +0 -0
  464. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/task.png +0 -0
  465. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/taskgroup.png +0 -0
  466. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-down.png +0 -0
  467. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-flat.png +0 -0
  468. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-up.png +0 -0
  469. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +26 -0
  470. data/test/TestSuite/ReportGenerator/{Correct → Errors}/scripts/wz_tooltip.js +0 -0
  471. data/test/TestSuite/Scheduler/Correct/Allocate.html +3210 -0
  472. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +19 -0
  473. data/test/TestSuite/Scheduler/Correct/Container.html +22 -22
  474. data/test/TestSuite/Scheduler/Correct/Limits.html +4964 -0
  475. data/test/TestSuite/Scheduler/Correct/Shift.html +1707 -417
  476. data/test/TestSuite/Scheduler/Correct/Shift2.html +9 -9
  477. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +6 -2
  478. data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +66 -0
  479. data/test/TestSuite/Scheduler/Errors/css/tjreport.css +407 -0
  480. data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
  481. data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
  482. data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
  483. data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
  484. data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
  485. data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
  486. data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
  487. data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
  488. data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
  489. data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
  490. data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
  491. data/test/TestSuite/Scheduler/Errors/loop_detected_1.tjp +1 -1
  492. data/test/TestSuite/Scheduler/Errors/loop_detected_10.tjp +1 -1
  493. data/test/TestSuite/Scheduler/Errors/loop_detected_11.tjp +1 -1
  494. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +1 -1
  495. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +1 -1
  496. data/test/TestSuite/Scheduler/Errors/loop_detected_14.tjp +1 -1
  497. data/test/TestSuite/Scheduler/Errors/loop_detected_2.tjp +1 -1
  498. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +1 -1
  499. data/test/TestSuite/Scheduler/Errors/loop_detected_4.tjp +1 -1
  500. data/test/TestSuite/Scheduler/Errors/loop_detected_5.tjp +1 -1
  501. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +1 -1
  502. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +1 -1
  503. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +1 -1
  504. data/test/TestSuite/Scheduler/Errors/loop_detected_9.tjp +1 -1
  505. data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +1301 -0
  506. data/test/TestSuite/Scheduler/Errors/task_pred_before.tjp +11 -0
  507. data/test/TestSuite/Scheduler/Errors/task_pred_before_gd.tjp +11 -0
  508. data/test/TestSuite/Scheduler/Errors/task_pred_before_gl.tjp +11 -0
  509. data/test/TestSuite/Scheduler/Errors/task_succ_after.tjp +12 -0
  510. data/test/TestSuite/Scheduler/Errors/task_succ_after_gd.tjp +12 -0
  511. data/test/TestSuite/Scheduler/Errors/task_succ_after_gl.tjp +12 -0
  512. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  513. data/test/TestSuite/StatusSheets/resrep.tji +7 -0
  514. data/test/TestSuite/StatusSheets/run +6 -4
  515. data/test/TestSuite/StatusSheets/tj3d.log +312 -0
  516. data/test/TestSuite/Syntax/Correct/Managers.html +263 -0
  517. data/test/TestSuite/Syntax/Correct/tutorial.tjp +1 -2
  518. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  519. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +1 -1
  520. data/test/TestSuite/TimeSheets/acceptable_intervals +1 -0
  521. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  522. data/test/TestSuite/TimeSheets/run +6 -5
  523. data/test/TestSuite/TimeSheets/statussheets.log +1 -0
  524. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  525. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  526. data/test/test_PropertySet.rb +2 -2
  527. data/test/test_RichText.rb +178 -387
  528. data/test/test_SimpleQueryExpander.rb +55 -0
  529. data/test/test_deep_copy.rb +2 -2
  530. metadata +854 -834
  531. data/lib/MacroParser.rb +0 -77
  532. data/lib/Message.rb +0 -56
  533. data/lib/ruby-signal-bug.rb +0 -43
  534. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  535. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  536. data/test/TestSuite/ReportGenerator/Correct/Journal.html +0 -63
  537. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  538. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  539. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  540. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  541. data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
  542. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
  543. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  544. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  545. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
@@ -68,6 +68,8 @@
68
68
 
69
69
  <li><a href="#method-i-terminate">#terminate</a></li>
70
70
 
71
+ <li><a href="#method-i-trap">#trap</a></li>
72
+
71
73
  </ul>
72
74
  </div>
73
75
 
@@ -160,6 +162,10 @@
160
162
 
161
163
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
162
164
 
165
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
166
+
167
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
168
+
163
169
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
164
170
 
165
171
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -232,8 +238,6 @@
232
238
 
233
239
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
234
240
 
235
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
236
-
237
241
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
238
242
 
239
243
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -298,6 +302,8 @@
298
302
 
299
303
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
300
304
 
305
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
306
+
301
307
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
302
308
 
303
309
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -344,8 +350,6 @@
344
350
 
345
351
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
346
352
 
347
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
348
-
349
353
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
350
354
 
351
355
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -386,6 +390,8 @@
386
390
 
387
391
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
388
392
 
393
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
394
+
389
395
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
390
396
 
391
397
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -496,6 +502,8 @@
496
502
 
497
503
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
498
504
 
505
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
506
+
499
507
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
500
508
 
501
509
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -573,12 +581,12 @@
573
581
  <div class="method-source-code"
574
582
  id="connect-source">
575
583
  <pre>
576
- <span class="ruby-comment cmt"># File lib/daemon/ProcessIntercom.rb, line 25</span>
577
- 25: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connect</span>(<span class="ruby-identifier">authKey</span>, <span class="ruby-identifier">stdout</span>, <span class="ruby-identifier">stderr</span>, <span class="ruby-identifier">stdin</span>, <span class="ruby-identifier">silent</span>)
578
- 26: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">checkKey</span>(<span class="ruby-identifier">authKey</span>, <span class="ruby-value str">'connect'</span>)
579
- 27:
580
- 28: <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-identifier">stdout</span>, <span class="ruby-identifier">stderr</span>, <span class="ruby-identifier">stdin</span>, <span class="ruby-identifier">silent</span>)
581
- 29: <span class="ruby-keyword kw">end</span></pre>
584
+ <span class="ruby-comment cmt"># File lib/daemon/ProcessIntercom.rb, line 39</span>
585
+ 39: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connect</span>(<span class="ruby-identifier">authKey</span>, <span class="ruby-identifier">stdout</span>, <span class="ruby-identifier">stderr</span>, <span class="ruby-identifier">stdin</span>, <span class="ruby-identifier">silent</span>)
586
+ 40: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">checkKey</span>(<span class="ruby-identifier">authKey</span>, <span class="ruby-value str">'connect'</span>)
587
+ 41:
588
+ 42: <span class="ruby-identifier">trap</span> { <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-identifier">stdout</span>, <span class="ruby-identifier">stderr</span>, <span class="ruby-identifier">stdin</span>, <span class="ruby-identifier">silent</span>) }
589
+ 43: <span class="ruby-keyword kw">end</span></pre>
582
590
  </div>
583
591
 
584
592
  </div>
@@ -609,12 +617,12 @@
609
617
  <div class="method-source-code"
610
618
  id="disconnect-source">
611
619
  <pre>
612
- <span class="ruby-comment cmt"># File lib/daemon/ProcessIntercom.rb, line 31</span>
613
- 31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnect</span>(<span class="ruby-identifier">authKey</span>)
614
- 32: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">checkKey</span>(<span class="ruby-identifier">authKey</span>, <span class="ruby-value str">'disconnect'</span>)
615
- 33:
616
- 34: <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">disconnect</span>
617
- 35: <span class="ruby-keyword kw">end</span></pre>
620
+ <span class="ruby-comment cmt"># File lib/daemon/ProcessIntercom.rb, line 45</span>
621
+ 45: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnect</span>(<span class="ruby-identifier">authKey</span>)
622
+ 46: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">checkKey</span>(<span class="ruby-identifier">authKey</span>, <span class="ruby-value str">'disconnect'</span>)
623
+ 47:
624
+ 48: <span class="ruby-identifier">trap</span> { <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">disconnect</span> }
625
+ 49: <span class="ruby-keyword kw">end</span></pre>
618
626
  </div>
619
627
 
620
628
  </div>
@@ -645,12 +653,57 @@
645
653
  <div class="method-source-code"
646
654
  id="terminate-source">
647
655
  <pre>
648
- <span class="ruby-comment cmt"># File lib/daemon/ProcessIntercom.rb, line 19</span>
649
- 19: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">terminate</span>(<span class="ruby-identifier">authKey</span>)
650
- 20: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">checkKey</span>(<span class="ruby-identifier">authKey</span>, <span class="ruby-value str">'terminate'</span>)
651
- 21:
652
- 22: <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">terminate</span>
653
- 23: <span class="ruby-keyword kw">end</span></pre>
656
+ <span class="ruby-comment cmt"># File lib/daemon/ProcessIntercom.rb, line 33</span>
657
+ 33: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">terminate</span>(<span class="ruby-identifier">authKey</span>)
658
+ 34: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">checkKey</span>(<span class="ruby-identifier">authKey</span>, <span class="ruby-value str">'terminate'</span>)
659
+ 35:
660
+ 36: <span class="ruby-identifier">trap</span> { <span class="ruby-ivar">@server</span>.<span class="ruby-identifier">terminate</span> }
661
+ 37: <span class="ruby-keyword kw">end</span></pre>
662
+ </div>
663
+
664
+ </div>
665
+
666
+
667
+
668
+
669
+ </div>
670
+
671
+
672
+ <div id="trap-method" class="method-detail ">
673
+ <a name="method-i-trap"></a>
674
+
675
+ <div class="method-heading">
676
+
677
+ <span class="method-name">trap</span><span
678
+ class="method-args">()</span>
679
+ <span class="method-click-advice">click to toggle source</span>
680
+
681
+ </div>
682
+
683
+ <div class="method-description">
684
+
685
+ <p>
686
+ This function catches all unhandled exceptions in the passed block.
687
+ </p>
688
+
689
+
690
+
691
+ <div class="method-source-code"
692
+ id="trap-source">
693
+ <pre>
694
+ <span class="ruby-comment cmt"># File lib/daemon/ProcessIntercom.rb, line 20</span>
695
+ 20: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">trap</span>
696
+ 21: <span class="ruby-identifier">log</span> = <span class="ruby-constant">LogFile</span>.<span class="ruby-identifier">instance</span>
697
+ 22:
698
+ 23: <span class="ruby-keyword kw">begin</span>
699
+ 24: <span class="ruby-keyword kw">yield</span>
700
+ 25: <span class="ruby-keyword kw">rescue</span>
701
+ 26: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>
702
+ 27: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
703
+ 28: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-identifier">$!</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>))
704
+ 29: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">&quot;Unexpected exception: #{$!}&quot;</span>)
705
+ 30: <span class="ruby-keyword kw">end</span>
706
+ 31: <span class="ruby-keyword kw">end</span></pre>
654
707
  </div>
655
708
 
656
709
  </div>
@@ -137,8 +137,6 @@
137
137
 
138
138
  <li><a href="#method-i-scoreboardSize">#scoreboardSize</a></li>
139
139
 
140
- <li><a href="#method-i-sendMessage">#sendMessage</a></li>
141
-
142
140
  <li><a href="#method-i-shift">#shift</a></li>
143
141
 
144
142
  <li><a href="#method-i-slotsToDays">#slotsToDays</a></li>
@@ -243,6 +241,10 @@
243
241
 
244
242
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
245
243
 
244
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
245
+
246
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
247
+
246
248
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
247
249
 
248
250
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -315,8 +317,6 @@
315
317
 
316
318
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
317
319
 
318
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
319
-
320
320
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
321
321
 
322
322
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -381,6 +381,8 @@
381
381
 
382
382
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
383
383
 
384
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
385
+
384
386
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
385
387
 
386
388
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -427,8 +429,6 @@
427
429
 
428
430
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
429
431
 
430
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
431
-
432
432
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
433
433
 
434
434
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -469,6 +469,8 @@
469
469
 
470
470
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
471
471
 
472
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
473
+
472
474
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
473
475
 
474
476
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -579,6 +581,8 @@
579
581
 
580
582
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
581
583
 
584
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
585
+
582
586
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
583
587
 
584
588
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -768,6 +772,21 @@ list of known Attributes.
768
772
 
769
773
 
770
774
 
775
+ </div>
776
+ </div>
777
+
778
+ <div id="input-iles-attribute-method" class="method-detail">
779
+ <a name="inputFiles"></a>
780
+
781
+ <div class="method-heading attribute-method-heading">
782
+ <span class="method-name">inputFiles</span><span
783
+ class="attribute-access-type">[R]</span>
784
+ </div>
785
+
786
+ <div class="method-description">
787
+
788
+
789
+
771
790
  </div>
772
791
  </div>
773
792
 
@@ -856,24 +875,24 @@ granularity is reduced.
856
875
  <div class="method-source-code"
857
876
  id="max-chedule-ranularity-source">
858
877
  <pre>
859
- <span class="ruby-comment cmt"># File lib/Project.rb, line 819</span>
860
- 819: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
861
- 820: <span class="ruby-identifier">refTime</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>)
862
- 821: <span class="ruby-keyword kw">case</span> (<span class="ruby-identifier">min</span> = <span class="ruby-identifier">refTime</span>.<span class="ruby-identifier">getlocal</span>.<span class="ruby-identifier">min</span>)
863
- 822: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
864
- 823: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
865
- 824: <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
866
- 825: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
867
- 826: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
868
- 827: <span class="ruby-value">30</span> * <span class="ruby-value">60</span>
869
- 828: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
870
- 829: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
871
- 830: <span class="ruby-comment cmt"># minutes</span>
872
- 831: <span class="ruby-value">15</span> * <span class="ruby-value">60</span>
873
- 832: <span class="ruby-keyword kw">else</span>
874
- 833: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
875
- 834: <span class="ruby-keyword kw">end</span>
876
- 835: <span class="ruby-keyword kw">end</span></pre>
878
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 806</span>
879
+ 806: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
880
+ 807: <span class="ruby-identifier">refTime</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>)
881
+ 808: <span class="ruby-keyword kw">case</span> (<span class="ruby-identifier">min</span> = <span class="ruby-identifier">refTime</span>.<span class="ruby-identifier">getlocal</span>.<span class="ruby-identifier">min</span>)
882
+ 809: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
883
+ 810: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
884
+ 811: <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
885
+ 812: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
886
+ 813: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
887
+ 814: <span class="ruby-value">30</span> * <span class="ruby-value">60</span>
888
+ 815: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
889
+ 816: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
890
+ 817: <span class="ruby-comment cmt"># minutes</span>
891
+ 818: <span class="ruby-value">15</span> * <span class="ruby-value">60</span>
892
+ 819: <span class="ruby-keyword kw">else</span>
893
+ 820: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
894
+ 821: <span class="ruby-keyword kw">end</span>
895
+ 822: <span class="ruby-keyword kw">end</span></pre>
877
896
  </div>
878
897
 
879
898
  </div>
@@ -910,356 +929,359 @@ The constructor will set default values for all project attributes.
910
929
  <div class="method-source-code"
911
930
  id="new-source">
912
931
  <pre>
913
- <span class="ruby-comment cmt"># File lib/Project.rb, line 59</span>
914
- 59: <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>)
915
- 60: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
916
- 61: <span class="ruby-ivar">@attributes</span> = {
917
- 62: <span class="ruby-comment cmt"># This nested Array defines the supported alert levels. The lowest</span>
918
- 63: <span class="ruby-comment cmt"># level comes first at index 0 and the level rises from there on.</span>
919
- 64: <span class="ruby-comment cmt"># Currently, these levels are hardcoded. Each level entry has 3</span>
920
- 65: <span class="ruby-comment cmt"># members: the tjp syntax token, the user visible name and the</span>
921
- 66: <span class="ruby-comment cmt"># associated color as RGB byte array.</span>
922
- 67: <span class="ruby-value str">'alertLevels'</span> =<span class="ruby-operator">&gt;</span> [
923
- 68: [ <span class="ruby-value str">'green'</span>, <span class="ruby-value str">'Green'</span>, <span class="ruby-value str">'#008000'</span> ],
924
- 69: [ <span class="ruby-value str">'yellow'</span>, <span class="ruby-value str">'Yellow'</span>, <span class="ruby-value str">'#BEA800'</span> ],
925
- 70: [ <span class="ruby-value str">'red'</span>, <span class="ruby-value str">'Red'</span>, <span class="ruby-value str">'#C00000'</span> ] ],
926
- 71: <span class="ruby-value str">'copyright'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
927
- 72: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
928
- 73: <span class="ruby-value str">'currency'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;EUR&quot;</span>,
929
- 74: <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> ]),
930
- 75: <span class="ruby-value str">'dailyworkinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">8.0</span>,
931
- 76: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
932
- 77: <span class="ruby-value str">'flags'</span> =<span class="ruby-operator">&gt;</span> [],
933
- 78: <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>,
934
- 79: <span class="ruby-value str">'limits'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
935
- 80: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">:shortauto</span>,
936
- 81: <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>,
937
- 82: <span class="ruby-value str">'navigators'</span> =<span class="ruby-operator">&gt;</span> {},
938
- 83: <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>),
939
- 84: <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>]),
940
- 85: <span class="ruby-value str">'priority'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">500</span>,
941
- 86: <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>,
942
- 87: <span class="ruby-value str">'projectids'</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-identifier">id</span> ],
943
- 88: <span class="ruby-value str">'rate'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0.0</span>,
944
- 89: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
945
- 90: <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>,
946
- 91: <span class="ruby-value str">'shortTimeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%H:%M&quot;</span>,
947
- 92: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
948
- 93: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%Y-%m-%d&quot;</span>,
949
- 94: <span class="ruby-value str">'timezone'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
950
- 95: <span class="ruby-value str">'trackingScenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>,
951
- 96: <span class="ruby-value str">'vacations'</span> =<span class="ruby-operator">&gt;</span> [],
952
- 97: <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>,
953
- 98: <span class="ruby-value str">'weekStartsMonday'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>,
954
- 99: <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>,
955
- 100: <span class="ruby-value str">'yearlyworkingdays'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">260.714</span>
956
- 101: }
957
- 102:
958
- 103: <span class="ruby-comment cmt"># Before we can add any properties to this project, we need to define the</span>
959
- 104: <span class="ruby-comment cmt"># attributes that each of the property types will be using. In TaskJuggler</span>
960
- 105: <span class="ruby-comment cmt"># lingo, properties of a project are resources, tasks, accounts, shifts</span>
961
- 106: <span class="ruby-comment cmt"># and scenarios. Each of these properties can have lots of further</span>
962
- 107: <span class="ruby-comment cmt"># information attached to it. These bits of information are called</span>
963
- 108: <span class="ruby-comment cmt"># attributes. An attribute is defined by the AttributeDefinition class.</span>
964
- 109: <span class="ruby-comment cmt"># The PropertySet objects need to be fed with a list of such attribute</span>
965
- 110: <span class="ruby-comment cmt"># definitions to register the attributes with the properties.</span>
966
- 111: <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>)
967
- 112: <span class="ruby-identifier">attrs</span> = [
968
- 113: <span class="ruby-comment cmt"># ID Name Type</span>
969
- 114: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
970
- 115: [ <span class="ruby-value str">'enabled'</span>, <span class="ruby-value str">'Enabled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
971
- 116: <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> ],
972
- 117: [ <span class="ruby-value str">'minslackrate'</span>, <span class="ruby-value str">'Min. Slack Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
973
- 118: <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> ],
974
- 119: [ <span class="ruby-value str">'projection'</span>, <span class="ruby-value str">'Projection Mode'</span>, <span class="ruby-constant">BooleanAttribute</span>,
975
- 120: <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> ],
976
- 121: [ <span class="ruby-value str">'strict'</span>, <span class="ruby-value str">'Strict Bookings'</span>, <span class="ruby-constant">BooleanAttribute</span>,
977
- 122: <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> ]
978
- 123: ]
979
- 124: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
980
- 125:
981
- 126: <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>)
982
- 127: <span class="ruby-identifier">attrs</span> = [
983
- 128: <span class="ruby-comment cmt"># ID Name Type</span>
984
- 129: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
985
- 130: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
986
- 131: <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> ],
987
- 132: [ <span class="ruby-value str">'replace'</span>, <span class="ruby-value str">'Replace'</span>, <span class="ruby-constant">BooleanAttribute</span>,
988
- 133: <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> ],
989
- 134: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
990
- 135: <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> ],
991
- 136: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
992
- 137: <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> ],
993
- 138: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
994
- 139: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
995
- 140: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
996
- 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> ],
997
- 142: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
998
- 143: <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> ]
999
- 144: ]
1000
- 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">@shifts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1001
- 146:
1002
- 147: <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>)
1003
- 148: <span class="ruby-identifier">attrs</span> = [
1004
- 149: <span class="ruby-comment cmt"># ID Name Type</span>
1005
- 150: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1006
- 151: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1007
- 152: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1008
- 153: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1009
- 154: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1010
- 155: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1011
- 156: <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> ],
1012
- 157: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1013
- 158: <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> ]
1014
- 159: ]
1015
- 160: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@accounts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1016
- 161:
1017
- 162: <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>)
1018
- 163: <span class="ruby-identifier">attrs</span> = [
1019
- 164: <span class="ruby-comment cmt"># ID Name Type</span>
1020
- 165: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1021
- 166: [ <span class="ruby-value str">'alloctdeffort'</span>, <span class="ruby-value str">'Alloctd. Effort'</span>, <span class="ruby-constant">FloatAttribute</span>,
1022
- 167: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1023
- 168: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1024
- 169: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1025
- 170: [ <span class="ruby-value str">'duties'</span>, <span class="ruby-value str">'Duties'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1026
- 171: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1027
- 172: [ <span class="ruby-value str">'directreports'</span>, <span class="ruby-value str">'Direct Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1028
- 173: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1029
- 174: [ <span class="ruby-value str">'efficiency'</span>,<span class="ruby-value str">'Efficiency'</span>, <span class="ruby-constant">FloatAttribute</span>,
1030
- 175: <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> ],
1031
- 176: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Total Effort'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1032
- 177: <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> ],
1033
- 178: [ <span class="ruby-value str">'email'</span>, <span class="ruby-value str">'Email'</span>, <span class="ruby-constant">StringAttribute</span>,
1034
- 179: <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> ],
1035
- 180: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Condition'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1036
- 181: <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> ],
1037
- 182: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1038
- 183: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1039
- 184: [ <span class="ruby-value str">'fte'</span>, <span class="ruby-value str">'FTE'</span>, <span class="ruby-constant">FloatAttribute</span>,
1040
- 185: <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> ],
1041
- 186: [ <span class="ruby-value str">'headcount'</span>, <span class="ruby-value str">'Headcount'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1042
- 187: <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> ],
1043
- 188: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1044
- 189: <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> ],
1045
- 190: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1046
- 191: <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> ],
1047
- 192: [ <span class="ruby-value str">'managers'</span>, <span class="ruby-value str">'Managers'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1048
- 193: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1049
- 194: [ <span class="ruby-value str">'rate'</span>, <span class="ruby-value str">'Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
1050
- 195: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1051
- 196: [ <span class="ruby-value str">'reports'</span>, <span class="ruby-value str">'Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1052
- 197: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1053
- 198: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1054
- 199: <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> ],
1055
- 200: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1056
- 201: <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> ],
1057
- 202: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1058
- 203: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1059
- 204: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
1060
- 205: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
1061
- 206: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1062
- 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-keyword kw">nil</span> ],
1063
- 208: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1064
- 209: <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> ],
1065
- 210: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
1066
- 211: <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> ]
1067
- 212: ]
1068
- 213: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1069
- 214:
1070
- 215: <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>)
1071
- 216: <span class="ruby-identifier">attrs</span> = [
1072
- 217: <span class="ruby-comment cmt"># ID Name Type</span>
1073
- 218: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1074
- 219: [ <span class="ruby-value str">'allocate'</span>, <span class="ruby-value str">'Allocations'</span>, <span class="ruby-constant">AllocationAttribute</span>,
1075
- 220: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1076
- 221: [ <span class="ruby-value str">'assignedresources'</span>, <span class="ruby-value str">'Assigned Resources'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1077
- 222: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1078
- 223: [ <span class="ruby-value str">'booking'</span>, <span class="ruby-value str">'Bookings'</span>, <span class="ruby-constant">BookingListAttribute</span>,
1079
- 224: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1080
- 225: [ <span class="ruby-value str">'charge'</span>, <span class="ruby-value str">'Charges'</span>, <span class="ruby-constant">ChargeListAttribute</span>,
1081
- 226: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1082
- 227: [ <span class="ruby-value str">'chargeset'</span>, <span class="ruby-value str">'Charge Sets'</span>, <span class="ruby-constant">ChargeSetListAttribute</span>,
1083
- 228: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1084
- 229: [ <span class="ruby-value str">'complete'</span>, <span class="ruby-value str">'Completion'</span>, <span class="ruby-constant">FloatAttribute</span>,
1085
- 230: <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> ],
1086
- 231: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1087
- 232: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1088
- 233: [ <span class="ruby-value str">'depends'</span>, <span class="ruby-value str">'Preceding tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1089
- 234: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1090
- 235: [ <span class="ruby-value str">'duration'</span>, <span class="ruby-value str">'Duration'</span>, <span class="ruby-constant">DurationAttribute</span>,
1091
- 236: <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> ],
1092
- 237: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Effort'</span>, <span class="ruby-constant">DurationAttribute</span>,
1093
- 238: <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> ],
1094
- 239: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1095
- 240: <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> ],
1096
- 241: [ <span class="ruby-value str">'endpreds'</span>, <span class="ruby-value str">'End Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1097
- 242: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1098
- 243: [ <span class="ruby-value str">'endsuccs'</span>, <span class="ruby-value str">'End Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1099
- 244: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1100
- 245: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Condition'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1101
- 246: <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> ],
1102
- 247: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1103
- 248: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1104
- 249: [ <span class="ruby-value str">'forward'</span>, <span class="ruby-value str">'Scheduling'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1105
- 250: <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> ],
1106
- 251: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1107
- 252: <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> ],
1108
- 253: [ <span class="ruby-value str">'length'</span>, <span class="ruby-value str">'Length'</span>, <span class="ruby-constant">DurationAttribute</span>,
1109
- 254: <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> ],
1110
- 255: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1111
- 256: <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> ],
1112
- 257: [ <span class="ruby-value str">'maxend'</span>, <span class="ruby-value str">'Max. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1113
- 258: <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> ],
1114
- 259: [ <span class="ruby-value str">'maxstart'</span>, <span class="ruby-value str">'Max. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1115
- 260: <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> ],
1116
- 261: [ <span class="ruby-value str">'milestone'</span>, <span class="ruby-value str">'Milestone'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1117
- 262: <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> ],
1118
- 263: [ <span class="ruby-value str">'minend'</span>, <span class="ruby-value str">'Min. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1119
- 264: <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> ],
1120
- 265: [ <span class="ruby-value str">'minstart'</span>, <span class="ruby-value str">'Min. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1121
- 266: <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> ],
1122
- 267: [ <span class="ruby-value str">'note'</span>, <span class="ruby-value str">'Note'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1123
- 268: <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> ],
1124
- 269: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-value str">'Path Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1125
- 270: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1126
- 271: [ <span class="ruby-value str">'precedes'</span>, <span class="ruby-value str">'Following tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1127
- 272: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1128
- 273: [ <span class="ruby-value str">'priority'</span>, <span class="ruby-value str">'Priority'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1129
- 274: <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> ],
1130
- 275: [ <span class="ruby-value str">'projectid'</span>, <span class="ruby-value str">'Project ID'</span>, <span class="ruby-constant">SymbolAttribute</span>,
1131
- 276: <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> ],
1132
- 277: [ <span class="ruby-value str">'responsible'</span>, <span class="ruby-value str">'Responsible'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1133
- 278: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1134
- 279: [ <span class="ruby-value str">'scheduled'</span>, <span class="ruby-value str">'Scheduled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1135
- 280: <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> ],
1136
- 281: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1137
- 282: <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> ],
1138
- 283: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1139
- 284: <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> ],
1140
- 285: [ <span class="ruby-value str">'startpreds'</span>, <span class="ruby-value str">'Start Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1141
- 286: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1142
- 287: [ <span class="ruby-value str">'startsuccs'</span>, <span class="ruby-value str">'Start Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1143
- 288: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1144
- 289: [ <span class="ruby-value str">'status'</span>, <span class="ruby-value str">'Task Status'</span>, <span class="ruby-constant">StringAttribute</span>,
1145
- 290: <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> ],
1146
- 291: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1147
- 292: <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> ],
1148
- 293: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1149
- 294: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1150
- 295: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1151
- 296: <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> ]
1152
- 297: ]
1153
- 298: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1154
- 299:
1155
- 300: <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>)
1156
- 301: <span class="ruby-identifier">attrs</span> = [
1157
- 302: <span class="ruby-comment cmt"># ID Name Type</span>
1158
- 303: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1159
- 304: [ <span class="ruby-value str">'caption'</span>, <span class="ruby-value str">'Caption'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1160
- 305: <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> ],
1161
- 306: [ <span class="ruby-value str">'center'</span>, <span class="ruby-value str">'Center'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1162
- 307: <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> ],
1163
- 308: [ <span class="ruby-value str">'columns'</span>, <span class="ruby-value str">'Columns'</span>, <span class="ruby-constant">ColumnListAttribute</span>,
1164
- 309: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1165
- 310: [ <span class="ruby-value str">'costAccount'</span>, <span class="ruby-value str">'Cost Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1166
- 311: <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> ],
1167
- 312: [ <span class="ruby-value str">'currencyFormat'</span>, <span class="ruby-value str">'Currency Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1168
- 313: <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> ],
1169
- 314: [ <span class="ruby-value str">'definitions'</span>, <span class="ruby-value str">'Definitions'</span>, <span class="ruby-constant">DefinitionListAttribute</span>,
1170
- 315: <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> ]) ],
1171
- 316: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1172
- 317: <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> ],
1173
- 318: [ <span class="ruby-value str">'epilog'</span>, <span class="ruby-value str">'Epilog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1174
- 319: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1175
- 320: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1176
- 321: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1177
- 322: [ <span class="ruby-value str">'footer'</span>, <span class="ruby-value str">'Footer'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1178
- 323: <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> ],
1179
- 324: [ <span class="ruby-value str">'formats'</span>, <span class="ruby-value str">'Formats'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1180
- 325: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1181
- 326: [ <span class="ruby-value str">'ganttBars'</span>, <span class="ruby-value str">'Gantt Bars'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1182
- 327: <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> ],
1183
- 328: [ <span class="ruby-value str">'header'</span>, <span class="ruby-value str">'Header'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1184
- 329: <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> ],
1185
- 330: [ <span class="ruby-value str">'headline'</span>, <span class="ruby-value str">'Headline'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1186
- 331: <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> ],
1187
- 332: [ <span class="ruby-value str">'hideResource'</span>, <span class="ruby-value str">'Hide Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1188
- 333: <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> ],
1189
- 334: [ <span class="ruby-value str">'hideTask'</span>, <span class="ruby-value str">'Hide Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1190
- 335: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1191
- 336: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1192
- 337: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1193
- 338: [ <span class="ruby-value str">'interactive'</span>, <span class="ruby-value str">'Interactive'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1194
- 339: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1195
- 340: [ <span class="ruby-value str">'left'</span>, <span class="ruby-value str">'Left'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1196
- 341: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1197
- 342: [ <span class="ruby-value str">'loadUnit'</span>, <span class="ruby-value str">'Load Unit'</span>, <span class="ruby-constant">StringAttribute</span>,
1198
- 343: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1199
- 344: [ <span class="ruby-value str">'now'</span>, <span class="ruby-value str">'Now'</span>, <span class="ruby-constant">DateAttribute</span>,
1200
- 345: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1201
- 346: [ <span class="ruby-value str">'numberFormat'</span>, <span class="ruby-value str">'Number Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1202
- 347: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1203
- 348: [ <span class="ruby-value str">'openNodes'</span>, <span class="ruby-value str">'Open Nodes'</span>, <span class="ruby-constant">NodeListAttribute</span>,
1204
- 349: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1205
- 350: [ <span class="ruby-value str">'prolog'</span>, <span class="ruby-value str">'Prolog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1206
- 351: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span>],
1207
- 352: [ <span class="ruby-value str">'resourceAttributes'</span>, <span class="ruby-value str">'Resource Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1208
- 353: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1209
- 354: [ <span class="ruby-value str">'resourceRoot'</span>, <span class="ruby-value str">'resource Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1210
- 355: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1211
- 356: [ <span class="ruby-value str">'revenueAccount'</span>, <span class="ruby-value str">'Revenue Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1212
- 357: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1213
- 358: [ <span class="ruby-value str">'right'</span>, <span class="ruby-value str">'Right'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1214
- 359: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1215
- 360: [ <span class="ruby-value str">'rollupResource'</span>, <span class="ruby-value str">'Rollup Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1216
- 361: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1217
- 362: [ <span class="ruby-value str">'rollupTask'</span>, <span class="ruby-value str">'Rollup Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1218
- 363: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1219
- 364: [ <span class="ruby-value str">'scenarios'</span>, <span class="ruby-value str">'Scenarios'</span>, <span class="ruby-constant">ScenarioListAttribute</span>,
1220
- 365: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [ <span class="ruby-value">0</span> ] ],
1221
- 366: [ <span class="ruby-value str">'selfcontained'</span>, <span class="ruby-value str">'Selfcontained'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1222
- 367: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1223
- 368: [ <span class="ruby-value str">'shortTimeFormat'</span>, <span class="ruby-value str">'Short Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1224
- 369: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1225
- 370: [ <span class="ruby-value str">'sortResources'</span>, <span class="ruby-value str">'Sort Resources'</span>, <span class="ruby-constant">SortListAttribute</span>,
1226
- 371: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1227
- 372: [ <span class="ruby-value str">'sortTasks'</span>, <span class="ruby-value str">'Sort Tasks'</span>, <span class="ruby-constant">SortListAttribute</span>,
1228
- 373: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1229
- 374: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1230
- 375: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1231
- 376: [ <span class="ruby-value str">'taskAttributes'</span>, <span class="ruby-value str">'Task Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1232
- 377: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1233
- 378: [ <span class="ruby-value str">'taskRoot'</span>, <span class="ruby-value str">'Task Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1234
- 379: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1235
- 380: [ <span class="ruby-value str">'timeFormat'</span>, <span class="ruby-value str">'Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1236
- 381: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1237
- 382: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1238
- 383: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1239
- 384: [ <span class="ruby-value str">'title'</span>, <span class="ruby-value str">'Title'</span>, <span class="ruby-constant">StringAttribute</span>,
1240
- 385: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1241
- 386: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1242
- 387: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1243
- 388: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1244
- 389: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1245
- 390: [ <span class="ruby-value str">'weekStartsMonday'</span>, <span class="ruby-value str">'Week Starts Monday'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1246
- 391: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
1247
- 392: ]
1248
- 393: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1249
- 394:
1250
- 395: <span class="ruby-constant">Scenario</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'plan'</span>, <span class="ruby-value str">'Plan Scenario'</span>, <span class="ruby-keyword kw">nil</span>)
1251
- 396:
1252
- 397: <span class="ruby-ivar">@timeSheets</span> = <span class="ruby-constant">TimeSheets</span>.<span class="ruby-identifier">new</span>
1253
- 398:
1254
- 399: <span class="ruby-comment cmt"># The ReportContext provides additional settings to the report that can</span>
1255
- 400: <span class="ruby-comment cmt"># complement or replace the report attributes. Reports can include other</span>
1256
- 401: <span class="ruby-comment cmt"># reports. During report generation, only one context is active, but the</span>
1257
- 402: <span class="ruby-comment cmt"># context of enclosing reports needs to be preserved. Therefor we use a</span>
1258
- 403: <span class="ruby-comment cmt"># stack to implement this.</span>
1259
- 404: <span class="ruby-ivar">@reportContexts</span> = []
1260
- 405: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
1261
- 406: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
1262
- 407: <span class="ruby-keyword kw">end</span></pre>
932
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 60</span>
933
+ 60: <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>)
934
+ 61: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
935
+ 62: <span class="ruby-ivar">@attributes</span> = {
936
+ 63: <span class="ruby-comment cmt"># This nested Array defines the supported alert levels. The lowest</span>
937
+ 64: <span class="ruby-comment cmt"># level comes first at index 0 and the level rises from there on.</span>
938
+ 65: <span class="ruby-comment cmt"># Currently, these levels are hardcoded. Each level entry has 3</span>
939
+ 66: <span class="ruby-comment cmt"># members: the tjp syntax token, the user visible name and the</span>
940
+ 67: <span class="ruby-comment cmt"># associated color as RGB byte array.</span>
941
+ 68: <span class="ruby-value str">'alertLevels'</span> =<span class="ruby-operator">&gt;</span> [
942
+ 69: [ <span class="ruby-value str">'green'</span>, <span class="ruby-value str">'Green'</span>, <span class="ruby-value str">'#008000'</span> ],
943
+ 70: [ <span class="ruby-value str">'yellow'</span>, <span class="ruby-value str">'Yellow'</span>, <span class="ruby-value str">'#BEA800'</span> ],
944
+ 71: [ <span class="ruby-value str">'red'</span>, <span class="ruby-value str">'Red'</span>, <span class="ruby-value str">'#C00000'</span> ] ],
945
+ 72: <span class="ruby-value str">'copyright'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
946
+ 73: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
947
+ 74: <span class="ruby-value str">'currency'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;EUR&quot;</span>,
948
+ 75: <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> ]),
949
+ 76: <span class="ruby-value str">'dailyworkinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">8.0</span>,
950
+ 77: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
951
+ 78: <span class="ruby-value str">'flags'</span> =<span class="ruby-operator">&gt;</span> [],
952
+ 79: <span class="ruby-value str">'journal'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Journal</span>.<span class="ruby-identifier">new</span>,
953
+ 80: <span class="ruby-value str">'limits'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
954
+ 81: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">:shortauto</span>,
955
+ 82: <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>,
956
+ 83: <span class="ruby-value str">'navigators'</span> =<span class="ruby-operator">&gt;</span> {},
957
+ 84: <span class="ruby-value str">'now'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">align</span>(<span class="ruby-value">3600</span>),
958
+ 85: <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>]),
959
+ 86: <span class="ruby-value str">'priority'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">500</span>,
960
+ 87: <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>,
961
+ 88: <span class="ruby-value str">'projectids'</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-identifier">id</span> ],
962
+ 89: <span class="ruby-value str">'rate'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0.0</span>,
963
+ 90: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
964
+ 91: <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>,
965
+ 92: <span class="ruby-value str">'shortTimeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%H:%M&quot;</span>,
966
+ 93: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
967
+ 94: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%Y-%m-%d&quot;</span>,
968
+ 95: <span class="ruby-value str">'timezone'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
969
+ 96: <span class="ruby-value str">'trackingScenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>,
970
+ 97: <span class="ruby-value str">'vacations'</span> =<span class="ruby-operator">&gt;</span> [],
971
+ 98: <span class="ruby-value str">'version'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">version</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;1.0&quot;</span>,
972
+ 99: <span class="ruby-value str">'weekStartsMonday'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>,
973
+ 100: <span class="ruby-value str">'workinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">WorkingHours</span>.<span class="ruby-identifier">new</span>,
974
+ 101: <span class="ruby-value str">'yearlyworkingdays'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">260.714</span>
975
+ 102: }
976
+ 103:
977
+ 104: <span class="ruby-comment cmt"># Before we can add any properties to this project, we need to define the</span>
978
+ 105: <span class="ruby-comment cmt"># attributes that each of the property types will be using. In TaskJuggler</span>
979
+ 106: <span class="ruby-comment cmt"># lingo, properties of a project are resources, tasks, accounts, shifts</span>
980
+ 107: <span class="ruby-comment cmt"># and scenarios. Each of these properties can have lots of further</span>
981
+ 108: <span class="ruby-comment cmt"># information attached to it. These bits of information are called</span>
982
+ 109: <span class="ruby-comment cmt"># attributes. An attribute is defined by the AttributeDefinition class.</span>
983
+ 110: <span class="ruby-comment cmt"># The PropertySet objects need to be fed with a list of such attribute</span>
984
+ 111: <span class="ruby-comment cmt"># definitions to register the attributes with the properties.</span>
985
+ 112: <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>)
986
+ 113: <span class="ruby-identifier">attrs</span> = [
987
+ 114: <span class="ruby-comment cmt"># ID Name Type</span>
988
+ 115: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
989
+ 116: [ <span class="ruby-value str">'enabled'</span>, <span class="ruby-value str">'Enabled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
990
+ 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">true</span> ],
991
+ 118: [ <span class="ruby-value str">'minslackrate'</span>, <span class="ruby-value str">'Min. Slack Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
992
+ 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-value">1.0</span> ],
993
+ 120: [ <span class="ruby-value str">'projection'</span>, <span class="ruby-value str">'Projection Mode'</span>, <span class="ruby-constant">BooleanAttribute</span>,
994
+ 121: <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> ],
995
+ 122: [ <span class="ruby-value str">'strict'</span>, <span class="ruby-value str">'Strict Bookings'</span>, <span class="ruby-constant">BooleanAttribute</span>,
996
+ 123: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
997
+ 124: ]
998
+ 125: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
999
+ 126:
1000
+ 127: <span class="ruby-ivar">@shifts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1001
+ 128: <span class="ruby-identifier">attrs</span> = [
1002
+ 129: <span class="ruby-comment cmt"># ID Name Type</span>
1003
+ 130: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1004
+ 131: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1005
+ 132: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1006
+ 133: [ <span class="ruby-value str">'replace'</span>, <span class="ruby-value str">'Replace'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1007
+ 134: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1008
+ 135: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1009
+ 136: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1010
+ 137: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1011
+ 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> ],
1012
+ 139: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
1013
+ 140: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
1014
+ 141: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1015
+ 142: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1016
+ 143: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
1017
+ 144: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
1018
+ 145: ]
1019
+ 146: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1020
+ 147:
1021
+ 148: <span class="ruby-ivar">@accounts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1022
+ 149: <span class="ruby-identifier">attrs</span> = [
1023
+ 150: <span class="ruby-comment cmt"># ID Name Type</span>
1024
+ 151: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1025
+ 152: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1026
+ 153: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1027
+ 154: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1028
+ 155: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1029
+ 156: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1030
+ 157: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1031
+ 158: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1032
+ 159: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ]
1033
+ 160: ]
1034
+ 161: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@accounts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1035
+ 162:
1036
+ 163: <span class="ruby-ivar">@resources</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1037
+ 164: <span class="ruby-identifier">attrs</span> = [
1038
+ 165: <span class="ruby-comment cmt"># ID Name Type</span>
1039
+ 166: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1040
+ 167: [ <span class="ruby-value str">'alloctdeffort'</span>, <span class="ruby-value str">'Alloctd. Effort'</span>, <span class="ruby-constant">FloatAttribute</span>,
1041
+ 168: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1042
+ 169: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1043
+ 170: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1044
+ 171: [ <span class="ruby-value str">'duties'</span>, <span class="ruby-value str">'Duties'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1045
+ 172: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1046
+ 173: [ <span class="ruby-value str">'directreports'</span>, <span class="ruby-value str">'Direct Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1047
+ 174: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1048
+ 175: [ <span class="ruby-value str">'efficiency'</span>,<span class="ruby-value str">'Efficiency'</span>, <span class="ruby-constant">FloatAttribute</span>,
1049
+ 176: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
1050
+ 177: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Total Effort'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1051
+ 178: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1052
+ 179: [ <span class="ruby-value str">'email'</span>, <span class="ruby-value str">'Email'</span>, <span class="ruby-constant">StringAttribute</span>,
1053
+ 180: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1054
+ 181: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Condition'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1055
+ 182: <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> ],
1056
+ 183: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1057
+ 184: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1058
+ 185: [ <span class="ruby-value str">'fte'</span>, <span class="ruby-value str">'FTE'</span>, <span class="ruby-constant">FloatAttribute</span>,
1059
+ 186: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
1060
+ 187: [ <span class="ruby-value str">'headcount'</span>, <span class="ruby-value str">'Headcount'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1061
+ 188: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ],
1062
+ 189: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1063
+ 190: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1064
+ 191: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1065
+ 192: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1066
+ 193: [ <span class="ruby-value str">'managers'</span>, <span class="ruby-value str">'Managers'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1067
+ 194: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1068
+ 195: [ <span class="ruby-value str">'rate'</span>, <span class="ruby-value str">'Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
1069
+ 196: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1070
+ 197: [ <span class="ruby-value str">'reports'</span>, <span class="ruby-value str">'Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1071
+ 198: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1072
+ 199: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1073
+ 200: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1074
+ 201: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1075
+ 202: <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> ],
1076
+ 203: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1077
+ 204: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1078
+ 205: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
1079
+ 206: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
1080
+ 207: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1081
+ 208: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1082
+ 209: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1083
+ 210: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1084
+ 211: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
1085
+ 212: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
1086
+ 213: ]
1087
+ 214: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1088
+ 215:
1089
+ 216: <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>)
1090
+ 217: <span class="ruby-identifier">attrs</span> = [
1091
+ 218: <span class="ruby-comment cmt"># ID Name Type</span>
1092
+ 219: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1093
+ 220: [ <span class="ruby-value str">'allocate'</span>, <span class="ruby-value str">'Allocations'</span>, <span class="ruby-constant">AllocationAttribute</span>,
1094
+ 221: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1095
+ 222: [ <span class="ruby-value str">'assignedresources'</span>, <span class="ruby-value str">'Assigned Resources'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1096
+ 223: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1097
+ 224: [ <span class="ruby-value str">'booking'</span>, <span class="ruby-value str">'Bookings'</span>, <span class="ruby-constant">BookingListAttribute</span>,
1098
+ 225: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1099
+ 226: [ <span class="ruby-value str">'charge'</span>, <span class="ruby-value str">'Charges'</span>, <span class="ruby-constant">ChargeListAttribute</span>,
1100
+ 227: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1101
+ 228: [ <span class="ruby-value str">'chargeset'</span>, <span class="ruby-value str">'Charge Sets'</span>, <span class="ruby-constant">ChargeSetListAttribute</span>,
1102
+ 229: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1103
+ 230: [ <span class="ruby-value str">'complete'</span>, <span class="ruby-value str">'Completion'</span>, <span class="ruby-constant">FloatAttribute</span>,
1104
+ 231: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1105
+ 232: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1106
+ 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-value">0.0</span> ],
1107
+ 234: [ <span class="ruby-value str">'depends'</span>, <span class="ruby-value str">'Preceding tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1108
+ 235: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1109
+ 236: [ <span class="ruby-value str">'duration'</span>, <span class="ruby-value str">'Duration'</span>, <span class="ruby-constant">DurationAttribute</span>,
1110
+ 237: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1111
+ 238: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Effort'</span>, <span class="ruby-constant">DurationAttribute</span>,
1112
+ 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> ],
1113
+ 240: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1114
+ 241: <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> ],
1115
+ 242: [ <span class="ruby-value str">'endpreds'</span>, <span class="ruby-value str">'End Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1116
+ 243: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1117
+ 244: [ <span class="ruby-value str">'endsuccs'</span>, <span class="ruby-value str">'End Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1118
+ 245: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1119
+ 246: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Condition'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1120
+ 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">nil</span> ],
1121
+ 248: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1122
+ 249: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1123
+ 250: [ <span class="ruby-value str">'forward'</span>, <span class="ruby-value str">'Scheduling'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1124
+ 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">true</span> ],
1125
+ 252: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1126
+ 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-value">1</span> ],
1127
+ 254: [ <span class="ruby-value str">'length'</span>, <span class="ruby-value str">'Length'</span>, <span class="ruby-constant">DurationAttribute</span>,
1128
+ 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> ],
1129
+ 256: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1130
+ 257: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1131
+ 258: [ <span class="ruby-value str">'maxend'</span>, <span class="ruby-value str">'Max. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1132
+ 259: <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> ],
1133
+ 260: [ <span class="ruby-value str">'maxstart'</span>, <span class="ruby-value str">'Max. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1134
+ 261: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1135
+ 262: [ <span class="ruby-value str">'milestone'</span>, <span class="ruby-value str">'Milestone'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1136
+ 263: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1137
+ 264: [ <span class="ruby-value str">'minend'</span>, <span class="ruby-value str">'Min. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1138
+ 265: <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> ],
1139
+ 266: [ <span class="ruby-value str">'minstart'</span>, <span class="ruby-value str">'Min. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1140
+ 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> ],
1141
+ 268: [ <span class="ruby-value str">'note'</span>, <span class="ruby-value str">'Note'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1142
+ 269: <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> ],
1143
+ 270: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-value str">'Path Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1144
+ 271: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1145
+ 272: [ <span class="ruby-value str">'precedes'</span>, <span class="ruby-value str">'Following tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1146
+ 273: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1147
+ 274: [ <span class="ruby-value str">'priority'</span>, <span class="ruby-value str">'Priority'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1148
+ 275: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">500</span> ],
1149
+ 276: [ <span class="ruby-value str">'projectid'</span>, <span class="ruby-value str">'Project ID'</span>, <span class="ruby-constant">SymbolAttribute</span>,
1150
+ 277: <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> ],
1151
+ 278: [ <span class="ruby-value str">'responsible'</span>, <span class="ruby-value str">'Responsible'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1152
+ 279: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1153
+ 280: [ <span class="ruby-value str">'scheduled'</span>, <span class="ruby-value str">'Scheduled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1154
+ 281: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1155
+ 282: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1156
+ 283: <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> ],
1157
+ 284: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1158
+ 285: <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> ],
1159
+ 286: [ <span class="ruby-value str">'startpreds'</span>, <span class="ruby-value str">'Start Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1160
+ 287: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1161
+ 288: [ <span class="ruby-value str">'startsuccs'</span>, <span class="ruby-value str">'Start Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1162
+ 289: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1163
+ 290: [ <span class="ruby-value str">'status'</span>, <span class="ruby-value str">'Task Status'</span>, <span class="ruby-constant">StringAttribute</span>,
1164
+ 291: <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> ],
1165
+ 292: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1166
+ 293: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1167
+ 294: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1168
+ 295: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1169
+ 296: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1170
+ 297: <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> ]
1171
+ 298: ]
1172
+ 299: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1173
+ 300:
1174
+ 301: <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>)
1175
+ 302: <span class="ruby-identifier">attrs</span> = [
1176
+ 303: <span class="ruby-comment cmt"># ID Name Type</span>
1177
+ 304: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1178
+ 305: [ <span class="ruby-value str">'caption'</span>, <span class="ruby-value str">'Caption'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1179
+ 306: <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> ],
1180
+ 307: [ <span class="ruby-value str">'center'</span>, <span class="ruby-value str">'Center'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1181
+ 308: <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> ],
1182
+ 309: [ <span class="ruby-value str">'columns'</span>, <span class="ruby-value str">'Columns'</span>, <span class="ruby-constant">ColumnListAttribute</span>,
1183
+ 310: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1184
+ 311: [ <span class="ruby-value str">'costAccount'</span>, <span class="ruby-value str">'Cost Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1185
+ 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> ],
1186
+ 313: [ <span class="ruby-value str">'currencyFormat'</span>, <span class="ruby-value str">'Currency Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1187
+ 314: <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> ],
1188
+ 315: [ <span class="ruby-value str">'definitions'</span>, <span class="ruby-value str">'Definitions'</span>, <span class="ruby-constant">DefinitionListAttribute</span>,
1189
+ 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> ]) ],
1190
+ 317: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1191
+ 318: <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> ],
1192
+ 319: [ <span class="ruby-value str">'epilog'</span>, <span class="ruby-value str">'Epilog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1193
+ 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-keyword kw">nil</span> ],
1194
+ 321: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1195
+ 322: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1196
+ 323: [ <span class="ruby-value str">'footer'</span>, <span class="ruby-value str">'Footer'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1197
+ 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> ],
1198
+ 325: [ <span class="ruby-value str">'formats'</span>, <span class="ruby-value str">'Formats'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1199
+ 326: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1200
+ 327: [ <span class="ruby-value str">'ganttBars'</span>, <span class="ruby-value str">'Gantt Bars'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1201
+ 328: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
1202
+ 329: [ <span class="ruby-value str">'header'</span>, <span class="ruby-value str">'Header'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1203
+ 330: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1204
+ 331: [ <span class="ruby-value str">'headline'</span>, <span class="ruby-value str">'Headline'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1205
+ 332: <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> ],
1206
+ 333: [ <span class="ruby-value str">'hideResource'</span>, <span class="ruby-value str">'Hide Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1207
+ 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> ],
1208
+ 335: [ <span class="ruby-value str">'hideTask'</span>, <span class="ruby-value str">'Hide Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1209
+ 336: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1210
+ 337: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1211
+ 338: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1212
+ 339: [ <span class="ruby-value str">'interactive'</span>, <span class="ruby-value str">'Interactive'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1213
+ 340: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1214
+ 341: [ <span class="ruby-value str">'left'</span>, <span class="ruby-value str">'Left'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1215
+ 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> ],
1216
+ 343: [ <span class="ruby-value str">'loadUnit'</span>, <span class="ruby-value str">'Load Unit'</span>, <span class="ruby-constant">StringAttribute</span>,
1217
+ 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> ],
1218
+ 345: [ <span class="ruby-value str">'now'</span>, <span class="ruby-value str">'Now'</span>, <span class="ruby-constant">DateAttribute</span>,
1219
+ 346: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1220
+ 347: [ <span class="ruby-value str">'numberFormat'</span>, <span class="ruby-value str">'Number Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1221
+ 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> ],
1222
+ 349: [ <span class="ruby-value str">'openNodes'</span>, <span class="ruby-value str">'Open Nodes'</span>, <span class="ruby-constant">NodeListAttribute</span>,
1223
+ 350: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1224
+ 351: [ <span class="ruby-value str">'prolog'</span>, <span class="ruby-value str">'Prolog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1225
+ 352: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span>],
1226
+ 353: [ <span class="ruby-value str">'resourceAttributes'</span>, <span class="ruby-value str">'Resource Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1227
+ 354: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1228
+ 355: [ <span class="ruby-value str">'resourceRoot'</span>, <span class="ruby-value str">'resource Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1229
+ 356: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1230
+ 357: [ <span class="ruby-value str">'revenueAccount'</span>, <span class="ruby-value str">'Revenue Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1231
+ 358: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1232
+ 359: [ <span class="ruby-value str">'right'</span>, <span class="ruby-value str">'Right'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1233
+ 360: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1234
+ 361: [ <span class="ruby-value str">'rollupResource'</span>, <span class="ruby-value str">'Rollup Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1235
+ 362: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1236
+ 363: [ <span class="ruby-value str">'rollupTask'</span>, <span class="ruby-value str">'Rollup Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1237
+ 364: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1238
+ 365: [ <span class="ruby-value str">'scenarios'</span>, <span class="ruby-value str">'Scenarios'</span>, <span class="ruby-constant">ScenarioListAttribute</span>,
1239
+ 366: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [ <span class="ruby-value">0</span> ] ],
1240
+ 367: [ <span class="ruby-value str">'selfcontained'</span>, <span class="ruby-value str">'Selfcontained'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1241
+ 368: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1242
+ 369: [ <span class="ruby-value str">'shortTimeFormat'</span>, <span class="ruby-value str">'Short Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1243
+ 370: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1244
+ 371: [ <span class="ruby-value str">'sortResources'</span>, <span class="ruby-value str">'Sort Resources'</span>, <span class="ruby-constant">SortListAttribute</span>,
1245
+ 372: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1246
+ 373: [ <span class="ruby-value str">'sortTasks'</span>, <span class="ruby-value str">'Sort Tasks'</span>, <span class="ruby-constant">SortListAttribute</span>,
1247
+ 374: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1248
+ 375: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1249
+ 376: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1250
+ 377: [ <span class="ruby-value str">'taskAttributes'</span>, <span class="ruby-value str">'Task Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1251
+ 378: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1252
+ 379: [ <span class="ruby-value str">'taskRoot'</span>, <span class="ruby-value str">'Task Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1253
+ 380: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1254
+ 381: [ <span class="ruby-value str">'timeFormat'</span>, <span class="ruby-value str">'Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1255
+ 382: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1256
+ 383: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1257
+ 384: <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> ],
1258
+ 385: [ <span class="ruby-value str">'title'</span>, <span class="ruby-value str">'Title'</span>, <span class="ruby-constant">StringAttribute</span>,
1259
+ 386: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1260
+ 387: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1261
+ 388: <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> ],
1262
+ 389: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1263
+ 390: <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> ],
1264
+ 391: [ <span class="ruby-value str">'weekStartsMonday'</span>, <span class="ruby-value str">'Week Starts Monday'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1265
+ 392: <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> ]
1266
+ 393: ]
1267
+ 394: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1268
+ 395:
1269
+ 396: <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>)
1270
+ 397:
1271
+ 398: <span class="ruby-comment cmt"># A list of files that contained the project data.</span>
1272
+ 399: <span class="ruby-ivar">@inputFiles</span> = <span class="ruby-constant">FileList</span>.<span class="ruby-identifier">new</span>
1273
+ 400:
1274
+ 401: <span class="ruby-ivar">@timeSheets</span> = <span class="ruby-constant">TimeSheets</span>.<span class="ruby-identifier">new</span>
1275
+ 402:
1276
+ 403: <span class="ruby-comment cmt"># The ReportContext provides additional settings to the report that can</span>
1277
+ 404: <span class="ruby-comment cmt"># complement or replace the report attributes. Reports can include other</span>
1278
+ 405: <span class="ruby-comment cmt"># reports. During report generation, only one context is active, but the</span>
1279
+ 406: <span class="ruby-comment cmt"># context of enclosing reports needs to be preserved. Therefor we use a</span>
1280
+ 407: <span class="ruby-comment cmt"># stack to implement this.</span>
1281
+ 408: <span class="ruby-ivar">@reportContexts</span> = []
1282
+ 409: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
1283
+ 410: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
1284
+ 411: <span class="ruby-keyword kw">end</span></pre>
1263
1285
  </div>
1264
1286
 
1265
1287
  </div>
@@ -1300,13 +1322,13 @@ attribute.
1300
1322
  <div class="method-source-code"
1301
1323
  id="--source">
1302
1324
  <pre>
1303
- <span class="ruby-comment cmt"># File lib/Project.rb, line 422</span>
1304
- 422: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
1305
- 423: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1306
- 424: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1307
- 425: <span class="ruby-keyword kw">end</span>
1308
- 426: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>]
1309
- 427: <span class="ruby-keyword kw">end</span></pre>
1325
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 420</span>
1326
+ 420: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
1327
+ 421: <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>)
1328
+ 422: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1329
+ 423: <span class="ruby-keyword kw">end</span>
1330
+ 424: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>]
1331
+ 425: <span class="ruby-keyword kw">end</span></pre>
1310
1332
  </div>
1311
1333
 
1312
1334
  </div>
@@ -1340,13 +1362,13 @@ to <em>value</em>.
1340
1362
  <div class="method-source-code"
1341
1363
  id="--source">
1342
1364
  <pre>
1343
- <span class="ruby-comment cmt"># File lib/Project.rb, line 430</span>
1344
- 430: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
1345
- 431: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1346
- 432: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1347
- 433: <span class="ruby-keyword kw">end</span>
1348
- 434: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
1349
- 435: <span class="ruby-keyword kw">end</span></pre>
1365
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 428</span>
1366
+ 428: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
1367
+ 429: <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>)
1368
+ 430: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1369
+ 431: <span class="ruby-keyword kw">end</span>
1370
+ 432: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
1371
+ 433: <span class="ruby-keyword kw">end</span></pre>
1350
1372
  </div>
1351
1373
 
1352
1374
  </div>
@@ -1380,10 +1402,10 @@ return nil if it does not exist.
1380
1402
  <div class="method-source-code"
1381
1403
  id="account-source">
1382
1404
  <pre>
1383
- <span class="ruby-comment cmt"># File lib/Project.rb, line 538</span>
1384
- 538: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
1385
- 539: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
1386
- 540: <span class="ruby-keyword kw">end</span></pre>
1405
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 536</span>
1406
+ 536: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
1407
+ 537: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
1408
+ 538: <span class="ruby-keyword kw">end</span></pre>
1387
1409
  </div>
1388
1410
 
1389
1411
  </div>
@@ -1419,11 +1441,11 @@ pound sign.
1419
1441
  <div class="method-source-code"
1420
1442
  id="alert-evel-olor-source">
1421
1443
  <pre>
1422
- <span class="ruby-comment cmt"># File lib/Project.rb, line 470</span>
1423
- 470: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
1424
- 471: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1425
- 472: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">2</span>]
1426
- 473: <span class="ruby-keyword kw">end</span></pre>
1444
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 468</span>
1445
+ 468: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
1446
+ 469: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1447
+ 470: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">2</span>]
1448
+ 471: <span class="ruby-keyword kw">end</span></pre>
1427
1449
  </div>
1428
1450
 
1429
1451
  </div>
@@ -1457,11 +1479,11 @@ Return the ID or keyword of the alert level with the given
1457
1479
  <div class="method-source-code"
1458
1480
  id="alert-evel-d-source">
1459
1481
  <pre>
1460
- <span class="ruby-comment cmt"># File lib/Project.rb, line 455</span>
1461
- 455: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
1462
- 456: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1463
- 457: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">0</span>]
1464
- 458: <span class="ruby-keyword kw">end</span></pre>
1482
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 453</span>
1483
+ 453: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
1484
+ 454: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1485
+ 455: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">0</span>]
1486
+ 456: <span class="ruby-keyword kw">end</span></pre>
1465
1487
  </div>
1466
1488
 
1467
1489
  </div>
@@ -1495,15 +1517,15 @@ the index of it. If no level is found, nil is returned.
1495
1517
  <div class="method-source-code"
1496
1518
  id="alert-evel-ndex-source">
1497
1519
  <pre>
1498
- <span class="ruby-comment cmt"># File lib/Project.rb, line 444</span>
1499
- 444: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
1500
- 445: <span class="ruby-value">0</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>].<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1501
- 446: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">levelName</span>
1502
- 447: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
1503
- 448: <span class="ruby-keyword kw">end</span>
1504
- 449: <span class="ruby-keyword kw">end</span>
1505
- 450: <span class="ruby-keyword kw">nil</span>
1506
- 451: <span class="ruby-keyword kw">end</span></pre>
1520
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 442</span>
1521
+ 442: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
1522
+ 443: <span class="ruby-value">0</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>].<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1523
+ 444: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">levelName</span>
1524
+ 445: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
1525
+ 446: <span class="ruby-keyword kw">end</span>
1526
+ 447: <span class="ruby-keyword kw">end</span>
1527
+ 448: <span class="ruby-keyword kw">nil</span>
1528
+ 449: <span class="ruby-keyword kw">end</span></pre>
1507
1529
  </div>
1508
1530
 
1509
1531
  </div>
@@ -1537,11 +1559,11 @@ Return the user readable name of the alert level with the given
1537
1559
  <div class="method-source-code"
1538
1560
  id="alert-evel-ame-source">
1539
1561
  <pre>
1540
- <span class="ruby-comment cmt"># File lib/Project.rb, line 462</span>
1541
- 462: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
1542
- 463: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1543
- 464: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">1</span>]
1544
- 465: <span class="ruby-keyword kw">end</span></pre>
1562
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 460</span>
1563
+ 460: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
1564
+ 461: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1565
+ 462: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">1</span>]
1566
+ 463: <span class="ruby-keyword kw">end</span></pre>
1545
1567
  </div>
1546
1568
 
1547
1569
  </div>
@@ -1576,14 +1598,14 @@ tasks over resources here.
1576
1598
  <div class="method-source-code"
1577
1599
  id="attribute-ame-source">
1578
1600
  <pre>
1579
- <span class="ruby-comment cmt"># File lib/Project.rb, line 840</span>
1580
- 840: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
1581
- 841: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
1582
- 842: <span class="ruby-comment cmt"># return it's name.</span>
1583
- 843: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span>
1584
- 844: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span>
1585
- 845: <span class="ruby-identifier">name</span>
1586
- 846: <span class="ruby-keyword kw">end</span></pre>
1601
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 827</span>
1602
+ 827: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
1603
+ 828: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
1604
+ 829: <span class="ruby-comment cmt"># return it's name.</span>
1605
+ 830: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span>
1606
+ 831: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span>
1607
+ 832: <span class="ruby-identifier">name</span>
1608
+ 833: <span class="ruby-keyword kw">end</span></pre>
1587
1609
  </div>
1588
1610
 
1589
1611
  </div>
@@ -1614,10 +1636,10 @@ tasks over resources here.
1614
1636
  <div class="method-source-code"
1615
1637
  id="check-ime-heets-source">
1616
1638
  <pre>
1617
- <span class="ruby-comment cmt"># File lib/Project.rb, line 704</span>
1618
- 704: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheets</span>
1619
- 705: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
1620
- 706: <span class="ruby-keyword kw">end</span></pre>
1639
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 691</span>
1640
+ 691: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheets</span>
1641
+ 692: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
1642
+ 693: <span class="ruby-keyword kw">end</span></pre>
1621
1643
  </div>
1622
1644
 
1623
1645
  </div>
@@ -1651,10 +1673,10 @@ setting of the global &#8216;dailyworkinghours&#8217; attribute.
1651
1673
  <div class="method-source-code"
1652
1674
  id="convert-o-aily-oad-source">
1653
1675
  <pre>
1654
- <span class="ruby-comment cmt"># File lib/Project.rb, line 774</span>
1655
- 774: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1656
- 775: <span class="ruby-identifier">seconds</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>] * <span class="ruby-value">3600.0</span>)
1657
- 776: <span class="ruby-keyword kw">end</span></pre>
1676
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 761</span>
1677
+ 761: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1678
+ 762: <span class="ruby-identifier">seconds</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>] * <span class="ruby-value">3600.0</span>)
1679
+ 763: <span class="ruby-keyword kw">end</span></pre>
1658
1680
  </div>
1659
1681
 
1660
1682
  </div>
@@ -1688,10 +1710,10 @@ can be set to other values by the user.
1688
1710
  <div class="method-source-code"
1689
1711
  id="daily-orking-ours-source">
1690
1712
  <pre>
1691
- <span class="ruby-comment cmt"># File lib/Project.rb, line 477</span>
1692
- 477: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1693
- 478: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1694
- 479: <span class="ruby-keyword kw">end</span></pre>
1713
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 475</span>
1714
+ 475: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1715
+ 476: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1716
+ 477: <span class="ruby-keyword kw">end</span></pre>
1695
1717
  </div>
1696
1718
 
1697
1719
  </div>
@@ -1727,21 +1749,21 @@ time frame.
1727
1749
  <div class="method-source-code"
1728
1750
  id="date-o-dx-source">
1729
1751
  <pre>
1730
- <span class="ruby-comment cmt"># File lib/Project.rb, line 800</span>
1731
- 800: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">forceIntoProject</span> = <span class="ruby-keyword kw">false</span>)
1732
- 801: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>])
1733
- 802: <span class="ruby-comment cmt"># Date is out of range.</span>
1734
- 803: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
1735
- 804: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]
1736
- 805: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">scoreboardSize</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>]
1737
- 806: <span class="ruby-keyword kw">else</span>
1738
- 807: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Date #{date} is out of project time range &quot;</span> <span class="ruby-operator">+</span>
1739
- 808: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
1740
- 809: <span class="ruby-keyword kw">end</span>
1741
- 810: <span class="ruby-keyword kw">end</span>
1742
- 811: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
1743
- 812: ((<span class="ruby-identifier">date</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
1744
- 813: <span class="ruby-keyword kw">end</span></pre>
1752
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 787</span>
1753
+ 787: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">forceIntoProject</span> = <span class="ruby-keyword kw">false</span>)
1754
+ 788: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>])
1755
+ 789: <span class="ruby-comment cmt"># Date is out of range.</span>
1756
+ 790: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
1757
+ 791: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]
1758
+ 792: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">scoreboardSize</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>]
1759
+ 793: <span class="ruby-keyword kw">else</span>
1760
+ 794: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Date #{date} is out of project time range &quot;</span> <span class="ruby-operator">+</span>
1761
+ 795: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
1762
+ 796: <span class="ruby-keyword kw">end</span>
1763
+ 797: <span class="ruby-keyword kw">end</span>
1764
+ 798: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
1765
+ 799: ((<span class="ruby-identifier">date</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
1766
+ 800: <span class="ruby-keyword kw">end</span></pre>
1745
1767
  </div>
1746
1768
 
1747
1769
  </div>
@@ -1776,10 +1798,10 @@ of the whole project.
1776
1798
  <div class="method-source-code"
1777
1799
  id="deep-clone-source">
1778
1800
  <pre>
1779
- <span class="ruby-comment cmt"># File lib/Project.rb, line 411</span>
1780
- 411: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
1781
- 412: <span class="ruby-keyword kw">self</span>
1782
- 413: <span class="ruby-keyword kw">end</span></pre>
1801
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 415</span>
1802
+ 415: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
1803
+ 416: <span class="ruby-keyword kw">self</span>
1804
+ 417: <span class="ruby-keyword kw">end</span></pre>
1783
1805
  </div>
1784
1806
 
1785
1807
  </div>
@@ -1812,12 +1834,10 @@ This function sends an error message to the message handler.
1812
1834
  <div class="method-source-code"
1813
1835
  id="error-source">
1814
1836
  <pre>
1815
- <span class="ruby-comment cmt"># File lib/Project.rb, line 860</span>
1816
- 860: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1817
- 861: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">id</span>, <span class="ruby-value str">'error'</span>, <span class="ruby-identifier">text</span>)
1818
- 862: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
1819
- 863: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>
1820
- 864: <span class="ruby-keyword kw">end</span></pre>
1837
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 849</span>
1838
+ 849: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1839
+ 850: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1840
+ 851: <span class="ruby-keyword kw">end</span></pre>
1821
1841
  </div>
1822
1842
 
1823
1843
  </div>
@@ -1848,38 +1868,37 @@ This function sends an error message to the message handler.
1848
1868
  <div class="method-source-code"
1849
1869
  id="generate-eport-source">
1850
1870
  <pre>
1851
- <span class="ruby-comment cmt"># File lib/Project.rb, line 659</span>
1852
- 659: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>, <span class="ruby-identifier">dynamicAttributes</span> = <span class="ruby-keyword kw">nil</span>)
1853
- 660: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
1854
- 661: [ <span class="ruby-identifier">reportId</span> ]
1855
- 662: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
1856
- 663: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>])
1857
- 664: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
1858
- 665: <span class="ruby-node">&quot;Request to generate unknown report #{id}&quot;</span>)
1871
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 647</span>
1872
+ 647: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>, <span class="ruby-identifier">dynamicAttributes</span> = <span class="ruby-keyword kw">nil</span>)
1873
+ 648: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
1874
+ 649: [ <span class="ruby-identifier">reportId</span> ]
1875
+ 650: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
1876
+ 651: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>])
1877
+ 652: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
1878
+ 653: <span class="ruby-node">&quot;Request to generate unknown report #{id}&quot;</span>)
1879
+ 654: <span class="ruby-keyword kw">end</span>
1880
+ 655: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1881
+ 656: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">context</span> = <span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
1882
+ 657:
1883
+ 658: <span class="ruby-comment cmt"># If we have dynamic attributes we need to backup the old attributes</span>
1884
+ 659: <span class="ruby-comment cmt"># first, then parse the dynamicAttributes String replacing the</span>
1885
+ 660: <span class="ruby-comment cmt"># original values.</span>
1886
+ 661: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1887
+ 662: <span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">backupAttributes</span>
1888
+ 663: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
1889
+ 664: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parseReportAttributes</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">dynamicAttributes</span>)
1890
+ 665: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'interactive'</span>, <span class="ruby-keyword kw">true</span>)
1859
1891
  666: <span class="ruby-keyword kw">end</span>
1860
- 667: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1861
- 668: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">context</span> = <span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
1892
+ 667:
1893
+ 668: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1862
1894
  669:
1863
- 670: <span class="ruby-identifier">name</span> = <span class="ruby-keyword kw">nil</span>
1864
- 671: <span class="ruby-comment cmt"># If we have dynamic attributes we need to backup the old attributes</span>
1865
- 672: <span class="ruby-comment cmt"># first, then parse the dynamicAttributes String replacing the</span>
1866
- 673: <span class="ruby-comment cmt"># original values.</span>
1867
- 674: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1868
- 675: <span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">backupAttributes</span>
1869
- 676: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
1870
- 677: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parseReportAttributes</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">dynamicAttributes</span>)
1871
- 678: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'interactive'</span>, <span class="ruby-keyword kw">true</span>)
1872
- 679: <span class="ruby-keyword kw">end</span>
1873
- 680:
1874
- 681: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1875
- 682:
1876
- 683: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1877
- 684: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span>)
1878
- 685: <span class="ruby-keyword kw">end</span>
1879
- 686: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1880
- 687: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1881
- 688: <span class="ruby-keyword kw">end</span>
1882
- 689: <span class="ruby-keyword kw">end</span></pre>
1895
+ 670: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
1896
+ 671: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span>)
1897
+ 672: <span class="ruby-keyword kw">end</span>
1898
+ 673: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1899
+ 674: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1900
+ 675: <span class="ruby-keyword kw">end</span>
1901
+ 676: <span class="ruby-keyword kw">end</span></pre>
1883
1902
  </div>
1884
1903
 
1885
1904
  </div>
@@ -1914,50 +1933,46 @@ href="Project.html#method-i-schedule">Project#schedule</a> has been called.
1914
1933
  <div class="method-source-code"
1915
1934
  id="generate-eports-source">
1916
1935
  <pre>
1917
- <span class="ruby-comment cmt"># File lib/Project.rb, line 615</span>
1918
- 615: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
1919
- 616: <span class="ruby-keyword kw">begin</span>
1920
- 617: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
1921
- 618: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1922
- 619: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1923
- 620: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
1924
- 621: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1925
- 622: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
1926
- 623: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1927
- 624: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1928
- 625: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1929
- 626: <span class="ruby-keyword kw">end</span>
1930
- 627: <span class="ruby-keyword kw">else</span>
1931
- 628: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
1932
- 629: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1933
- 630: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
1934
- 631: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
1935
- 632: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
1936
- 633: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1937
- 634: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1938
- 635: <span class="ruby-identifier">res</span>
1939
- 636: }
1940
- 637: <span class="ruby-keyword kw">end</span>
1941
- 638: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">wait</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1942
- 639: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
1943
- 640: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
1944
- 641: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
1945
- 642: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">signaled?</span>
1946
- 643: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">&quot;Signal raised&quot;</span>
1947
- 644: <span class="ruby-keyword kw">end</span>
1948
- 645: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">success?</span>
1949
- 646: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">&quot;Process aborted&quot;</span>
1950
- 647: <span class="ruby-keyword kw">end</span>
1951
- 648: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1952
- 649: <span class="ruby-keyword kw">end</span>
1953
- 650: <span class="ruby-keyword kw">end</span>
1954
- 651: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1955
- 652: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Report Generation Error: #{$!}&quot;</span>
1956
- 653: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1957
- 654: <span class="ruby-keyword kw">end</span>
1958
- 655:
1959
- 656: <span class="ruby-keyword kw">true</span>
1960
- 657: <span class="ruby-keyword kw">end</span></pre>
1936
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 607</span>
1937
+ 607: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
1938
+ 608: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
1939
+ 609: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1940
+ 610: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1941
+ 611: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
1942
+ 612: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
1943
+ 613: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
1944
+ 614: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1945
+ 615: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1946
+ 616: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1947
+ 617: <span class="ruby-keyword kw">end</span>
1948
+ 618: <span class="ruby-keyword kw">else</span>
1949
+ 619: <span class="ruby-comment cmt"># Kickoff the generation of all reports by pushing the jobs into the</span>
1950
+ 620: <span class="ruby-comment cmt"># BatchProcessor queue.</span>
1951
+ 621: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
1952
+ 622: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1953
+ 623: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
1954
+ 624: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
1955
+ 625: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
1956
+ 626: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
1957
+ 627: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
1958
+ 628: <span class="ruby-identifier">res</span>
1959
+ 629: }
1960
+ 630: <span class="ruby-keyword kw">end</span>
1961
+ 631: <span class="ruby-comment cmt"># Now wait for all the jobs to finish.</span>
1962
+ 632: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">wait</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1963
+ 633: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
1964
+ 634: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
1965
+ 635: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
1966
+ 636: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">signaled?</span>
1967
+ 637: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'rg_signal'</span>, <span class="ruby-value str">&quot;Signal raised&quot;</span>)
1968
+ 638: <span class="ruby-keyword kw">end</span>
1969
+ 639: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">success?</span>
1970
+ 640: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'rg_abort'</span>, <span class="ruby-value str">&quot;Process aborted&quot;</span>)
1971
+ 641: <span class="ruby-keyword kw">end</span>
1972
+ 642: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
1973
+ 643: <span class="ruby-keyword kw">end</span>
1974
+ 644: <span class="ruby-keyword kw">end</span>
1975
+ 645: <span class="ruby-keyword kw">end</span></pre>
1961
1976
  </div>
1962
1977
 
1963
1978
  </div>
@@ -1993,13 +2008,13 @@ raised.
1993
2008
  <div class="method-source-code"
1994
2009
  id="idx-o-ate-source">
1995
2010
  <pre>
1996
- <span class="ruby-comment cmt"># File lib/Project.rb, line 790</span>
1997
- 790: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1998
- 791: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">idx</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">idx</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">scoreboardSize</span>)
1999
- 792: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
2000
- 793: <span class="ruby-keyword kw">end</span>
2001
- 794: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">idx</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
2002
- 795: <span class="ruby-keyword kw">end</span></pre>
2011
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 777</span>
2012
+ 777: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
2013
+ 778: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">idx</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">idx</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">scoreboardSize</span>)
2014
+ 779: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
2015
+ 780: <span class="ruby-keyword kw">end</span>
2016
+ 781: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">idx</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
2017
+ 782: <span class="ruby-keyword kw">end</span></pre>
2003
2018
  </div>
2004
2019
 
2005
2020
  </div>
@@ -2037,29 +2052,29 @@ defined and the slot lies within a defined working time period.
2037
2052
  <div class="method-source-code"
2038
2053
  id="is-orking-ime-source">
2039
2054
  <pre>
2040
- <span class="ruby-comment cmt"># File lib/Project.rb, line 749</span>
2041
- 749: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(*<span class="ruby-identifier">args</span>)
2042
- 750: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
2043
- 751: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2044
- 752: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Interval</span>)
2045
- 753: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
2046
- 754: <span class="ruby-keyword kw">else</span>
2047
- 755: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">+</span>
2048
- 756: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
2049
- 757: <span class="ruby-keyword kw">end</span>
2050
- 758: <span class="ruby-keyword kw">else</span>
2051
- 759: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>])
2052
- 760: <span class="ruby-keyword kw">end</span>
2053
- 761:
2054
- 762: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
2055
- 763: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'vacations'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vacation</span><span class="ruby-operator">|</span>
2056
- 764: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
2057
- 765: <span class="ruby-keyword kw">end</span>
2058
- 766:
2059
- 767: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>].<span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">iv</span>)
2060
- 768:
2061
- 769: <span class="ruby-keyword kw">true</span>
2062
- 770: <span class="ruby-keyword kw">end</span></pre>
2055
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 736</span>
2056
+ 736: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(*<span class="ruby-identifier">args</span>)
2057
+ 737: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
2058
+ 738: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2059
+ 739: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Interval</span>)
2060
+ 740: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
2061
+ 741: <span class="ruby-keyword kw">else</span>
2062
+ 742: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">+</span>
2063
+ 743: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
2064
+ 744: <span class="ruby-keyword kw">end</span>
2065
+ 745: <span class="ruby-keyword kw">else</span>
2066
+ 746: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>])
2067
+ 747: <span class="ruby-keyword kw">end</span>
2068
+ 748:
2069
+ 749: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
2070
+ 750: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'vacations'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vacation</span><span class="ruby-operator">|</span>
2071
+ 751: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
2072
+ 752: <span class="ruby-keyword kw">end</span>
2073
+ 753:
2074
+ 754: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>].<span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">iv</span>)
2075
+ 755:
2076
+ 756: <span class="ruby-keyword kw">true</span>
2077
+ 757: <span class="ruby-keyword kw">end</span></pre>
2063
2078
  </div>
2064
2079
 
2065
2080
  </div>
@@ -2090,19 +2105,19 @@ defined and the slot lies within a defined working time period.
2090
2105
  <div class="method-source-code"
2091
2106
  id="list-eports-source">
2092
2107
  <pre>
2093
- <span class="ruby-comment cmt"># File lib/Project.rb, line 691</span>
2094
- 691: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">listReports</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>)
2095
- 692: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
2096
- 693: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">reportId</span>] <span class="ruby-operator">?</span> [ <span class="ruby-identifier">reportId</span> ] <span class="ruby-operator">:</span> []
2097
- 694: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;No match for #{reportId}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">empty?</span>
2098
- 695: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
2099
- 696: <span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2100
- 697: <span class="ruby-identifier">formats</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>)
2101
- 698: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">empty?</span>
2102
- 699:
2103
- 700: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%s\t%s\t%s&quot;</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">', '</span>), <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span>)
2104
- 701: <span class="ruby-keyword kw">end</span>
2105
- 702: <span class="ruby-keyword kw">end</span></pre>
2108
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 678</span>
2109
+ 678: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">listReports</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>)
2110
+ 679: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
2111
+ 680: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">reportId</span>] <span class="ruby-operator">?</span> [ <span class="ruby-identifier">reportId</span> ] <span class="ruby-operator">:</span> []
2112
+ 681: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;No match for #{reportId}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">empty?</span>
2113
+ 682: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
2114
+ 683: <span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2115
+ 684: <span class="ruby-identifier">formats</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>)
2116
+ 685: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">empty?</span>
2117
+ 686:
2118
+ 687: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%s\t%s\t%s&quot;</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">', '</span>), <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span>)
2119
+ 688: <span class="ruby-keyword kw">end</span>
2120
+ 689: <span class="ruby-keyword kw">end</span></pre>
2106
2121
  </div>
2107
2122
 
2108
2123
  </div>
@@ -2135,10 +2150,10 @@ Return the average number of working days per month.
2135
2150
  <div class="method-source-code"
2136
2151
  id="monthly-orking-ays-source">
2137
2152
  <pre>
2138
- <span class="ruby-comment cmt"># File lib/Project.rb, line 487</span>
2139
- 487: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
2140
- 488: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">12.0</span>
2141
- 489: <span class="ruby-keyword kw">end</span></pre>
2153
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 485</span>
2154
+ 485: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
2155
+ 486: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">12.0</span>
2156
+ 487: <span class="ruby-keyword kw">end</span></pre>
2142
2157
  </div>
2143
2158
 
2144
2159
  </div>
@@ -2172,10 +2187,10 @@ return nil if it does not exist.
2172
2187
  <div class="method-source-code"
2173
2188
  id="report-source">
2174
2189
  <pre>
2175
- <span class="ruby-comment cmt"># File lib/Project.rb, line 553</span>
2176
- 553: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
2177
- 554: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2178
- 555: <span class="ruby-keyword kw">end</span></pre>
2190
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 551</span>
2191
+ 551: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
2192
+ 552: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2193
+ 553: <span class="ruby-keyword kw">end</span></pre>
2179
2194
  </div>
2180
2195
 
2181
2196
  </div>
@@ -2209,13 +2224,13 @@ return nil if it does not exist.
2209
2224
  <div class="method-source-code"
2210
2225
  id="report-y-ame-source">
2211
2226
  <pre>
2212
- <span class="ruby-comment cmt"># File lib/Project.rb, line 559</span>
2213
- 559: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
2214
- 560: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2215
- 561: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">report</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span>
2216
- 562: <span class="ruby-keyword kw">end</span>
2217
- 563: <span class="ruby-keyword kw">nil</span>
2218
- 564: <span class="ruby-keyword kw">end</span></pre>
2227
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 557</span>
2228
+ 557: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
2229
+ 558: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2230
+ 559: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">report</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span>
2231
+ 560: <span class="ruby-keyword kw">end</span>
2232
+ 561: <span class="ruby-keyword kw">nil</span>
2233
+ 562: <span class="ruby-keyword kw">end</span></pre>
2219
2234
  </div>
2220
2235
 
2221
2236
  </div>
@@ -2249,10 +2264,10 @@ return nil if it does not exist.
2249
2264
  <div class="method-source-code"
2250
2265
  id="resource-source">
2251
2266
  <pre>
2252
- <span class="ruby-comment cmt"># File lib/Project.rb, line 548</span>
2253
- 548: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
2254
- 549: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
2255
- 550: <span class="ruby-keyword kw">end</span></pre>
2267
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 546</span>
2268
+ 546: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
2269
+ 547: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
2270
+ 548: <span class="ruby-keyword kw">end</span></pre>
2256
2271
  </div>
2257
2272
 
2258
2273
  </div>
@@ -2286,17 +2301,17 @@ or <em>index</em>.
2286
2301
  <div class="method-source-code"
2287
2302
  id="scenario-source">
2288
2303
  <pre>
2289
- <span class="ruby-comment cmt"># File lib/Project.rb, line 506</span>
2290
- 506: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
2291
- 507: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
2292
- 508: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sc</span><span class="ruby-operator">|</span>
2293
- 509: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">arg</span>
2294
- 510: <span class="ruby-keyword kw">end</span>
2295
- 511: <span class="ruby-keyword kw">else</span>
2296
- 512: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
2297
- 513: <span class="ruby-keyword kw">end</span>
2298
- 514: <span class="ruby-keyword kw">nil</span>
2299
- 515: <span class="ruby-keyword kw">end</span></pre>
2304
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 504</span>
2305
+ 504: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
2306
+ 505: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
2307
+ 506: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sc</span><span class="ruby-operator">|</span>
2308
+ 507: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">arg</span>
2309
+ 508: <span class="ruby-keyword kw">end</span>
2310
+ 509: <span class="ruby-keyword kw">else</span>
2311
+ 510: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
2312
+ 511: <span class="ruby-keyword kw">end</span>
2313
+ 512: <span class="ruby-keyword kw">nil</span>
2314
+ 513: <span class="ruby-keyword kw">end</span></pre>
2300
2315
  </div>
2301
2316
 
2302
2317
  </div>
@@ -2329,10 +2344,10 @@ Return the number of defined scenarios for the project.
2329
2344
  <div class="method-source-code"
2330
2345
  id="scenario-ount-source">
2331
2346
  <pre>
2332
- <span class="ruby-comment cmt"># File lib/Project.rb, line 438</span>
2333
- 438: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
2334
- 439: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
2335
- 440: <span class="ruby-keyword kw">end</span></pre>
2347
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 436</span>
2348
+ 436: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
2349
+ 437: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
2350
+ 438: <span class="ruby-keyword kw">end</span></pre>
2336
2351
  </div>
2337
2352
 
2338
2353
  </div>
@@ -2366,16 +2381,16 @@ specified by <em>scenario</em> or <em>id</em>.
2366
2381
  <div class="method-source-code"
2367
2382
  id="scenario-dx-source">
2368
2383
  <pre>
2369
- <span class="ruby-comment cmt"># File lib/Project.rb, line 522</span>
2370
- 522: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2371
- 523: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Scenario</span>)
2372
- 524: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2373
- 525: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">nil?</span>
2374
- 526: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2375
- 527: <span class="ruby-keyword kw">else</span>
2376
- 528: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2377
- 529: <span class="ruby-keyword kw">end</span>
2378
- 530: <span class="ruby-keyword kw">end</span></pre>
2384
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 520</span>
2385
+ 520: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2386
+ 521: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Scenario</span>)
2387
+ 522: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2388
+ 523: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">nil?</span>
2389
+ 524: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2390
+ 525: <span class="ruby-keyword kw">else</span>
2391
+ 526: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2392
+ 527: <span class="ruby-keyword kw">end</span>
2393
+ 528: <span class="ruby-keyword kw">end</span></pre>
2379
2394
  </div>
2380
2395
 
2381
2396
  </div>
@@ -2410,50 +2425,44 @@ stores the result in the data structures again.
2410
2425
  <div class="method-source-code"
2411
2426
  id="schedule-source">
2412
2427
  <pre>
2413
- <span class="ruby-comment cmt"># File lib/Project.rb, line 569</span>
2414
- 569: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
2415
- 570: [ <span class="ruby-ivar">@shifts</span>, <span class="ruby-ivar">@resources</span>, <span class="ruby-ivar">@tasks</span> ].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
2416
- 571: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">inheritAttributesFromScenario</span>
2417
- 572: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
2418
- 573: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
2419
- 574: <span class="ruby-keyword kw">end</span>
2420
- 575:
2421
- 576: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
2422
- 577: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'no_tasks'</span>, <span class="ruby-value str">'error'</span>, <span class="ruby-value str">&quot;No tasks defined&quot;</span>)
2423
- 578: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2424
- 579: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2425
- 580: <span class="ruby-keyword kw">end</span>
2428
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 567</span>
2429
+ 567: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
2430
+ 568: [ <span class="ruby-ivar">@shifts</span>, <span class="ruby-ivar">@resources</span>, <span class="ruby-ivar">@tasks</span> ].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
2431
+ 569: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">inheritAttributesFromScenario</span>
2432
+ 570: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
2433
+ 571: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
2434
+ 572: <span class="ruby-keyword kw">end</span>
2435
+ 573:
2436
+ 574: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
2437
+ 575: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'no_tasks'</span>, <span class="ruby-value str">&quot;No tasks defined&quot;</span>)
2438
+ 576: <span class="ruby-keyword kw">end</span>
2439
+ 577:
2440
+ 578: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sc</span><span class="ruby-operator">|</span>
2441
+ 579: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
2442
+ 580: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'enabled'</span>)
2426
2443
  581:
2427
- 582: <span class="ruby-keyword kw">begin</span>
2428
- 583: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sc</span><span class="ruby-operator">|</span>
2429
- 584: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
2430
- 585: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'enabled'</span>)
2431
- 586:
2432
- 587: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2433
- 588:
2434
- 589: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
2435
- 590: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
2436
- 591: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
2437
- 592: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
2438
- 593: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
2439
- 594: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2440
- 595:
2441
- 596: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
2442
- 597: <span class="ruby-comment cmt"># as computed.</span>
2443
- 598: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
2444
- 599: <span class="ruby-comment cmt"># Schedule the scenario.</span>
2445
- 600: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2446
- 601:
2447
- 602: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
2448
- 603: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2449
- 604: <span class="ruby-keyword kw">end</span>
2450
- 605: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
2451
- 606: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2452
- 607: <span class="ruby-keyword kw">end</span>
2453
- 608:
2454
- 609: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">warnOnDelta</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@warnTsDeltas</span>
2455
- 610: <span class="ruby-keyword kw">true</span>
2456
- 611: <span class="ruby-keyword kw">end</span></pre>
2444
+ 582: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2445
+ 583:
2446
+ 584: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
2447
+ 585: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
2448
+ 586: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
2449
+ 587: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
2450
+ 588: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
2451
+ 589: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2452
+ 590:
2453
+ 591: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
2454
+ 592: <span class="ruby-comment cmt"># as computed.</span>
2455
+ 593: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
2456
+ 594: <span class="ruby-comment cmt"># Schedule the scenario.</span>
2457
+ 595: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2458
+ 596:
2459
+ 597: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
2460
+ 598: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2461
+ 599: <span class="ruby-keyword kw">end</span>
2462
+ 600:
2463
+ 601: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">warnOnDelta</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@warnTsDeltas</span>
2464
+ 602: <span class="ruby-keyword kw">true</span>
2465
+ 603: <span class="ruby-keyword kw">end</span></pre>
2457
2466
  </div>
2458
2467
 
2459
2468
  </div>
@@ -2489,48 +2498,11 @@ number of entries in the scoreboards.
2489
2498
  <div class="method-source-code"
2490
2499
  id="scoreboard-ize-source">
2491
2500
  <pre>
2492
- <span class="ruby-comment cmt"># File lib/Project.rb, line 782</span>
2493
- 782: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
2494
- 783: ((<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span>
2495
- 784: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2496
- 785: <span class="ruby-keyword kw">end</span></pre>
2497
- </div>
2498
-
2499
- </div>
2500
-
2501
-
2502
-
2503
-
2504
- </div>
2505
-
2506
-
2507
- <div id="send-essage-method" class="method-detail ">
2508
- <a name="method-i-sendMessage"></a>
2509
-
2510
- <div class="method-heading">
2511
-
2512
- <span class="method-name">sendMessage</span><span
2513
- class="method-args">(message)</span>
2514
- <span class="method-click-advice">click to toggle source</span>
2515
-
2516
- </div>
2517
-
2518
- <div class="method-description">
2519
-
2520
- <p>
2521
- Pass a message (error or warning) to the message handler. <em>message</em>
2522
- is a <a href="../String.html">String</a> that contains the message.
2523
- </p>
2524
-
2525
-
2526
-
2527
- <div class="method-source-code"
2528
- id="send-essage-source">
2529
- <pre>
2530
- <span class="ruby-comment cmt"># File lib/Project.rb, line 417</span>
2531
- 417: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
2532
- 418: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
2533
- 419: <span class="ruby-keyword kw">end</span></pre>
2501
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 769</span>
2502
+ 769: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
2503
+ 770: ((<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span>
2504
+ 771: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2505
+ 772: <span class="ruby-keyword kw">end</span></pre>
2534
2506
  </div>
2535
2507
 
2536
2508
  </div>
@@ -2564,10 +2536,10 @@ nil if it does not exist.
2564
2536
  <div class="method-source-code"
2565
2537
  id="shift-source">
2566
2538
  <pre>
2567
- <span class="ruby-comment cmt"># File lib/Project.rb, line 533</span>
2568
- 533: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
2569
- 534: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
2570
- 535: <span class="ruby-keyword kw">end</span></pre>
2539
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 531</span>
2540
+ 531: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
2541
+ 532: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
2542
+ 533: <span class="ruby-keyword kw">end</span></pre>
2571
2543
  </div>
2572
2544
 
2573
2545
  </div>
@@ -2600,10 +2572,10 @@ Convert timeSlots to working days.
2600
2572
  <div class="method-source-code"
2601
2573
  id="slots-o-ays-source">
2602
2574
  <pre>
2603
- <span class="ruby-comment cmt"># File lib/Project.rb, line 497</span>
2604
- 497: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
2605
- 498: <span class="ruby-identifier">slots</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>] <span class="ruby-operator">/</span> (<span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-identifier">dailyWorkingHours</span>)
2606
- 499: <span class="ruby-keyword kw">end</span></pre>
2575
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 495</span>
2576
+ 495: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
2577
+ 496: <span class="ruby-identifier">slots</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>] <span class="ruby-operator">/</span> (<span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-identifier">dailyWorkingHours</span>)
2578
+ 497: <span class="ruby-keyword kw">end</span></pre>
2607
2579
  </div>
2608
2580
 
2609
2581
  </div>
@@ -2637,10 +2609,10 @@ nil if it does not exist.
2637
2609
  <div class="method-source-code"
2638
2610
  id="task-source">
2639
2611
  <pre>
2640
- <span class="ruby-comment cmt"># File lib/Project.rb, line 543</span>
2641
- 543: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
2642
- 544: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
2643
- 545: <span class="ruby-keyword kw">end</span></pre>
2612
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 541</span>
2613
+ 541: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
2614
+ 542: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
2615
+ 543: <span class="ruby-keyword kw">end</span></pre>
2644
2616
  </div>
2645
2617
 
2646
2618
  </div>
@@ -2673,16 +2645,18 @@ Print the attribute values. It&#8217;s used for debugging only.
2673
2645
  <div class="method-source-code"
2674
2646
  id="to-s-source">
2675
2647
  <pre>
2676
- <span class="ruby-comment cmt"># File lib/Project.rb, line 849</span>
2677
- 849: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
2678
- 850: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;STOP!&quot;</span>
2679
- 851: <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
2680
- 852: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
2681
- 853: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
2682
- 854: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
2683
- 855: <span class="ruby-keyword kw">end</span>
2684
- 856: <span class="ruby-keyword kw">end</span>
2685
- 857: <span class="ruby-keyword kw">end</span></pre>
2648
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 836</span>
2649
+ 836: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
2650
+ 837: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;STOP!&quot;</span>
2651
+ 838: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
2652
+ 839: <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
2653
+ 840: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
2654
+ 841: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
2655
+ 842: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
2656
+ 843: <span class="ruby-keyword kw">end</span>
2657
+ 844: <span class="ruby-keyword kw">end</span>
2658
+ 845: <span class="ruby-identifier">str</span>
2659
+ 846: <span class="ruby-keyword kw">end</span></pre>
2686
2660
  </div>
2687
2661
 
2688
2662
  </div>
@@ -2715,10 +2689,10 @@ Return the average number of working days per week.
2715
2689
  <div class="method-source-code"
2716
2690
  id="weekly-orking-ays-source">
2717
2691
  <pre>
2718
- <span class="ruby-comment cmt"># File lib/Project.rb, line 482</span>
2719
- 482: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
2720
- 483: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">52.1429</span>
2721
- 484: <span class="ruby-keyword kw">end</span></pre>
2692
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 480</span>
2693
+ 480: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
2694
+ 481: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">52.1429</span>
2695
+ 482: <span class="ruby-keyword kw">end</span></pre>
2722
2696
  </div>
2723
2697
 
2724
2698
  </div>
@@ -2751,10 +2725,10 @@ Return the average number of working days per year.
2751
2725
  <div class="method-source-code"
2752
2726
  id="yearly-orking-ays-source">
2753
2727
  <pre>
2754
- <span class="ruby-comment cmt"># File lib/Project.rb, line 492</span>
2755
- 492: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
2756
- 493: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
2757
- 494: <span class="ruby-keyword kw">end</span></pre>
2728
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 490</span>
2729
+ 490: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
2730
+ 491: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
2731
+ 492: <span class="ruby-keyword kw">end</span></pre>
2758
2732
  </div>
2759
2733
 
2760
2734
  </div>
@@ -2791,31 +2765,31 @@ Return the average number of working days per year.
2791
2765
  <div class="method-source-code"
2792
2766
  id="finish-cenario-source">
2793
2767
  <pre>
2794
- <span class="ruby-comment cmt"># File lib/Project.rb, line 934</span>
2795
- 934: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2796
- 935: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Checking scenario #{scenario(scIdx).get('name')}&quot;</span>)
2797
- 936: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
2798
- 937: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2799
- 938: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2800
- 939: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2801
- 940: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2802
- 941: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>((<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) * <span class="ruby-value">0.5</span>)
2768
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 922</span>
2769
+ 922: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2770
+ 923: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Checking scenario #{scenario(scIdx).get('name')}&quot;</span>)
2771
+ 924: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
2772
+ 925: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2773
+ 926: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2774
+ 927: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2775
+ 928: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2776
+ 929: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>((<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) * <span class="ruby-value">0.5</span>)
2777
+ 930: <span class="ruby-keyword kw">end</span>
2778
+ 931:
2779
+ 932: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2780
+ 933: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2781
+ 934: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2782
+ 935: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2783
+ 936: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.5</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) * <span class="ruby-value">0.5</span>)
2784
+ 937: <span class="ruby-keyword kw">end</span>
2785
+ 938:
2786
+ 939: <span class="ruby-comment cmt"># This should be really fast so we don't log progess.</span>
2787
+ 940: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2788
+ 941: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2803
2789
  942: <span class="ruby-keyword kw">end</span>
2804
2790
  943:
2805
- 944: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2806
- 945: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2807
- 946: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2808
- 947: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2809
- 948: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.5</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) * <span class="ruby-value">0.5</span>)
2810
- 949: <span class="ruby-keyword kw">end</span>
2811
- 950:
2812
- 951: <span class="ruby-comment cmt"># This should be really fast so we don't log progess.</span>
2813
- 952: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2814
- 953: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2815
- 954: <span class="ruby-keyword kw">end</span>
2816
- 955:
2817
- 956: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2818
- 957: <span class="ruby-keyword kw">end</span></pre>
2791
+ 944: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2792
+ 945: <span class="ruby-keyword kw">end</span></pre>
2819
2793
  </div>
2820
2794
 
2821
2795
  </div>
@@ -2846,72 +2820,73 @@ Return the average number of working days per year.
2846
2820
  <div class="method-source-code"
2847
2821
  id="prepare-cenario-source">
2848
2822
  <pre>
2849
- <span class="ruby-comment cmt"># File lib/Project.rb, line 868</span>
2850
- 868: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2851
- 869: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Preparing scenario #{scenario(scIdx).get('name')}&quot;</span>)
2852
- 870: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
2853
- 871: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2854
- 872:
2855
- 873: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
2856
- 874: <span class="ruby-comment cmt"># project.</span>
2857
- 875: <span class="ruby-identifier">usedResources</span> = []
2858
- 876: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2859
- 877: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">candidates</span>(<span class="ruby-identifier">scIdx</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2860
- 878: <span class="ruby-identifier">usedResources</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">resource</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>)
2861
- 879: <span class="ruby-keyword kw">end</span>
2862
- 880: <span class="ruby-keyword kw">end</span>
2863
- 881: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
2864
- 882: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2865
- 883: <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2866
- 884: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2867
- 885: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2868
- 886: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2869
- 887: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>((<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) * <span class="ruby-value">0.8</span>)
2870
- 888: <span class="ruby-keyword kw">end</span>
2871
- 889:
2872
- 890: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setDirectReports</span>(<span class="ruby-identifier">scIdx</span>) }
2873
- 891: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setReports</span>(<span class="ruby-identifier">scIdx</span>) }
2874
- 892:
2875
- 893: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>) }
2876
- 894: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-constant">Xref</span>(<span class="ruby-identifier">scIdx</span>) }
2877
- 895: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">propagateInitialValues</span>(<span class="ruby-identifier">scIdx</span>) }
2878
- 896: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) }
2823
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 855</span>
2824
+ 855: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2825
+ 856: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-value str">&quot;Preparing scenario &quot;</span> <span class="ruby-operator">+</span>
2826
+ 857: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
2827
+ 858: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
2828
+ 859: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2829
+ 860:
2830
+ 861: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
2831
+ 862: <span class="ruby-comment cmt"># project.</span>
2832
+ 863: <span class="ruby-identifier">usedResources</span> = []
2833
+ 864: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2834
+ 865: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">candidates</span>(<span class="ruby-identifier">scIdx</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2835
+ 866: <span class="ruby-identifier">usedResources</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">resource</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>)
2836
+ 867: <span class="ruby-keyword kw">end</span>
2837
+ 868: <span class="ruby-keyword kw">end</span>
2838
+ 869: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
2839
+ 870: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2840
+ 871: <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2841
+ 872: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
2842
+ 873: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2843
+ 874: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2844
+ 875: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>((<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) * <span class="ruby-value">0.8</span>)
2845
+ 876: <span class="ruby-keyword kw">end</span>
2846
+ 877:
2847
+ 878: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setDirectReports</span>(<span class="ruby-identifier">scIdx</span>) }
2848
+ 879: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setReports</span>(<span class="ruby-identifier">scIdx</span>) }
2849
+ 880:
2850
+ 881: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>) }
2851
+ 882: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-constant">Xref</span>(<span class="ruby-identifier">scIdx</span>) }
2852
+ 883: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">propagateInitialValues</span>(<span class="ruby-identifier">scIdx</span>) }
2853
+ 884: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) }
2854
+ 885:
2855
+ 886: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
2856
+ 887: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
2857
+ 888: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2858
+ 889: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2859
+ 890: <span class="ruby-keyword kw">end</span>
2860
+ 891: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.85</span>)
2861
+ 892: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
2862
+ 893: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2863
+ 894: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2864
+ 895: <span class="ruby-keyword kw">end</span>
2865
+ 896: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.87</span>)
2879
2866
  897:
2880
- 898: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
2881
- 899: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
2882
- 900: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2883
- 901: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2884
- 902: <span class="ruby-keyword kw">end</span>
2885
- 903: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.85</span>)
2886
- 904: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
2887
- 905: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2888
- 906: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2889
- 907: <span class="ruby-keyword kw">end</span>
2890
- 908: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.87</span>)
2867
+ 898: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
2868
+ 899: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">countResourceAllocations</span>(<span class="ruby-identifier">scIdx</span>) }
2869
+ 900: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.88</span>)
2870
+ 901: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
2871
+ 902: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.9</span>)
2872
+ 903: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
2873
+ 904: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.95</span>)
2874
+ 905: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcPathCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
2875
+ 906: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.99</span>)
2876
+ 907: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
2877
+ 908: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
2891
2878
  909:
2892
- 910: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
2893
- 911: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">countResourceAllocations</span>(<span class="ruby-identifier">scIdx</span>) }
2894
- 912: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.88</span>)
2895
- 913: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
2896
- 914: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.9</span>)
2897
- 915: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
2898
- 916: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.95</span>)
2899
- 917: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcPathCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
2900
- 918: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.99</span>)
2901
- 919: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
2902
- 920: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
2903
- 921:
2904
- 922: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2905
- 923: <span class="ruby-comment cmt"># This is used for debugging only</span>
2906
- 924: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
2907
- 925: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2908
- 926: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{resource}&quot;</span>
2909
- 927: <span class="ruby-keyword kw">end</span>
2910
- 928: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2911
- 929: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{task}&quot;</span>
2912
- 930: <span class="ruby-keyword kw">end</span>
2913
- 931: <span class="ruby-keyword kw">end</span>
2914
- 932: <span class="ruby-keyword kw">end</span></pre>
2879
+ 910: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2880
+ 911: <span class="ruby-comment cmt"># This is used for debugging only</span>
2881
+ 912: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
2882
+ 913: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2883
+ 914: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{resource}&quot;</span>
2884
+ 915: <span class="ruby-keyword kw">end</span>
2885
+ 916: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2886
+ 917: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{task}&quot;</span>
2887
+ 918: <span class="ruby-keyword kw">end</span>
2888
+ 919: <span class="ruby-keyword kw">end</span>
2889
+ 920: <span class="ruby-keyword kw">end</span></pre>
2915
2890
  </div>
2916
2891
 
2917
2892
  </div>
@@ -2945,87 +2920,85 @@ index <tt>scIdx</tt>.
2945
2920
  <div class="method-source-code"
2946
2921
  id="schedule-cenario-source">
2947
2922
  <pre>
2948
- <span class="ruby-comment cmt"># File lib/Project.rb, line 960</span>
2949
- 960: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2950
- 961: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2951
- 962: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">leaf?</span> }
2952
- 963:
2953
- 964: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">enter</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;#{tasks.length} leaf tasks&quot;</span>)
2954
- 965: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
2955
- 966: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
2956
- 967: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
2957
- 968: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
2958
- 969: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
2959
- 970: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
2960
- 971: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">setSorting</span>([ [ <span class="ruby-value str">'priority'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
2961
- 972: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
2962
- 973: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ] ])
2963
- 974: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
2964
- 975: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
2965
- 976:
2966
- 977: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
2967
- 978: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
2968
- 979: <span class="ruby-comment cmt"># true.</span>
2969
- 980: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-value str">&quot;Scheduling scenario &quot;</span> <span class="ruby-operator">+</span>
2970
- 981: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
2971
- 982: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
2972
- 983: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
2973
- 984: <span class="ruby-comment cmt"># ready to be scheduled.</span>
2974
- 985: <span class="ruby-identifier">workItems</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">to_ary</span>
2975
- 986:
2976
- 987: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
2977
- 988: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
2978
- 989: <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2979
- 990: <span class="ruby-identifier">completedTasks</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-identifier">scIdx</span>]
2980
- 991: <span class="ruby-keyword kw">end</span>
2981
- 992:
2982
- 993: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-identifier">completedTasks</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">totalTasks</span>)
2983
- 994: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
2984
- 995: <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">readyForScheduling?</span>(<span class="ruby-identifier">scIdx</span>) }
2985
- 996:
2986
- 997: <span class="ruby-comment cmt"># Check if we are done.</span>
2987
- 998: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">empty?</span>
2923
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 948</span>
2924
+ 948: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2925
+ 949: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
2926
+ 950: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">leaf?</span> }
2927
+ 951:
2928
+ 952: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">enter</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;#{tasks.length} leaf tasks&quot;</span>)
2929
+ 953: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
2930
+ 954: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
2931
+ 955: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
2932
+ 956: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
2933
+ 957: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
2934
+ 958: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
2935
+ 959: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">setSorting</span>([ [ <span class="ruby-value str">'priority'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
2936
+ 960: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
2937
+ 961: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ] ])
2938
+ 962: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
2939
+ 963: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
2940
+ 964:
2941
+ 965: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
2942
+ 966: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
2943
+ 967: <span class="ruby-comment cmt"># true.</span>
2944
+ 968: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-value str">&quot;Scheduling scenario &quot;</span> <span class="ruby-operator">+</span>
2945
+ 969: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
2946
+ 970: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
2947
+ 971: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
2948
+ 972: <span class="ruby-comment cmt"># ready to be scheduled.</span>
2949
+ 973: <span class="ruby-identifier">workItems</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">to_ary</span>
2950
+ 974:
2951
+ 975: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
2952
+ 976: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
2953
+ 977: <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2954
+ 978: <span class="ruby-identifier">completedTasks</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-identifier">scIdx</span>]
2955
+ 979: <span class="ruby-keyword kw">end</span>
2956
+ 980:
2957
+ 981: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-identifier">completedTasks</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">totalTasks</span>)
2958
+ 982: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
2959
+ 983: <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">readyForScheduling?</span>(<span class="ruby-identifier">scIdx</span>) }
2960
+ 984:
2961
+ 985: <span class="ruby-comment cmt"># Check if we are done.</span>
2962
+ 986: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">empty?</span>
2963
+ 987:
2964
+ 988: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
2965
+ 989: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
2966
+ 990: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
2967
+ 991: <span class="ruby-comment cmt"># Schedule it.</span>
2968
+ 992: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">schedule</span>(<span class="ruby-identifier">scIdx</span>)
2969
+ 993: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Task #{task.fullId}: #{task['start', scIdx]} -&gt; &quot;</span> <span class="ruby-operator">+</span>
2970
+ 994: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
2971
+ 995: <span class="ruby-keyword kw">end</span>
2972
+ 996: <span class="ruby-keyword kw">end</span>
2973
+ 997: <span class="ruby-identifier">unscheduledTasks</span> = []
2974
+ 998: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">unscheduledTasks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">t</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">t</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-identifier">scIdx</span>] }
2988
2975
  999:
2989
- 1000: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
2990
- 1001: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
2991
- 1002: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
2992
- 1003: <span class="ruby-comment cmt"># Schedule it.</span>
2993
- 1004: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">schedule</span>(<span class="ruby-identifier">scIdx</span>)
2994
- 1005: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Task #{task.fullId}: #{task['start', scIdx]} -&gt; &quot;</span> <span class="ruby-operator">+</span>
2995
- 1006: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
2996
- 1007: <span class="ruby-keyword kw">end</span>
2997
- 1008: <span class="ruby-keyword kw">end</span>
2998
- 1009: <span class="ruby-identifier">unscheduledTasks</span> = []
2999
- 1010: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">unscheduledTasks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">t</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">t</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-identifier">scIdx</span>] }
3000
- 1011:
3001
- 1012: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
3002
- 1013: <span class="ruby-comment cmt"># warnings.</span>
3003
- 1014: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
3004
- 1015: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'unscheduled_tasks'</span>, <span class="ruby-value str">'warning'</span>,
3005
- 1016: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be &quot;</span> <span class="ruby-operator">+</span>
3006
- 1017: <span class="ruby-value str">&quot;scheduled&quot;</span>)
3007
- 1018: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
3008
- 1019: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3009
- 1020: <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
3010
- 1021: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(
3011
- 1022: <span class="ruby-value str">'unscheduled_task'</span>, <span class="ruby-value str">'warning'</span>,
3012
- 1023: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
3013
- 1024: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
3014
- 1025: <span class="ruby-node">&quot;#{t['end', scIdx] ? t['end', scIdx] : '&lt;?&gt;'}&quot;</span>, <span class="ruby-identifier">t</span>,
3015
- 1026: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
3016
- 1027: <span class="ruby-identifier">sendMessage</span>(<span class="ruby-identifier">message</span>)
3017
- 1028:
3018
- 1029: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3019
- 1030: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">10</span>
3020
- 1031: <span class="ruby-keyword kw">end</span>
3021
- 1032: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3022
- 1033: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
3023
- 1034: <span class="ruby-keyword kw">end</span>
3024
- 1035:
3025
- 1036: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3026
- 1037: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">exit</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;Scheduling of scenario #{scIdx} finished&quot;</span>)
3027
- 1038: <span class="ruby-keyword kw">true</span>
3028
- 1039: <span class="ruby-keyword kw">end</span></pre>
2976
+ 1000: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
2977
+ 1001: <span class="ruby-comment cmt"># warnings.</span>
2978
+ 1002: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
2979
+ 1003: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
2980
+ 1004: <span class="ruby-value str">'unscheduled_tasks'</span>,
2981
+ 1005: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be scheduled&quot;</span>)
2982
+ 1006: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2983
+ 1007: <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
2984
+ 1008: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
2985
+ 1009: <span class="ruby-value str">'unscheduled_task'</span>,
2986
+ 1010: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
2987
+ 1011: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
2988
+ 1012: <span class="ruby-node">&quot;#{t['end', scIdx] ? t['end', scIdx] : '&lt;?&gt;'}&quot;</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">t</span>,
2989
+ 1013: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
2990
+ 1014:
2991
+ 1015: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2992
+ 1016: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">10</span>
2993
+ 1017: <span class="ruby-keyword kw">end</span>
2994
+ 1018: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2995
+ 1019: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
2996
+ 1020: <span class="ruby-keyword kw">end</span>
2997
+ 1021:
2998
+ 1022: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2999
+ 1023: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">exit</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;Scheduling of scenario #{scIdx} finished&quot;</span>)
3000
+ 1024: <span class="ruby-keyword kw">true</span>
3001
+ 1025: <span class="ruby-keyword kw">end</span></pre>
3029
3002
  </div>
3030
3003
 
3031
3004
  </div>
@@ -3062,15 +3035,15 @@ index <tt>scIdx</tt>.
3062
3035
  <div class="method-source-code"
3063
3036
  id="matching-eports-source">
3064
3037
  <pre>
3065
- <span class="ruby-comment cmt"># File lib/Project.rb, line 1043</span>
3066
- 1043: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>)
3067
- 1044: <span class="ruby-identifier">list</span> = []
3068
- 1045: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
3069
- 1046: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>
3070
- 1047: <span class="ruby-identifier">list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">id</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">=~</span> <span class="ruby-identifier">id</span>
3071
- 1048: <span class="ruby-keyword kw">end</span>
3072
- 1049: <span class="ruby-identifier">list</span>
3073
- 1050: <span class="ruby-keyword kw">end</span></pre>
3038
+ <span class="ruby-comment cmt"># File lib/Project.rb, line 1029</span>
3039
+ 1029: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>)
3040
+ 1030: <span class="ruby-identifier">list</span> = []
3041
+ 1031: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
3042
+ 1032: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>
3043
+ 1033: <span class="ruby-identifier">list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">id</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">=~</span> <span class="ruby-identifier">id</span>
3044
+ 1034: <span class="ruby-keyword kw">end</span>
3045
+ 1035: <span class="ruby-identifier">list</span>
3046
+ 1036: <span class="ruby-keyword kw">end</span></pre>
3074
3047
  </div>
3075
3048
 
3076
3049
  </div>