taskjuggler 0.0.10 → 0.0.11

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 (787) hide show
  1. data/CHANGELOG +115 -0
  2. data/README.rdoc +105 -0
  3. data/examples/tutorial.tjp +21 -16
  4. data/gem_spec.rb +1 -1
  5. data/lib/{Account.rb → taskjuggler/Account.rb} +2 -3
  6. data/lib/{AccountScenario.rb → taskjuggler/AccountScenario.rb} +1 -1
  7. data/lib/taskjuggler/AlgorithmDiff.rb +311 -0
  8. data/lib/{Allocation.rb → taskjuggler/Allocation.rb} +3 -3
  9. data/lib/{AppConfig.rb → taskjuggler/AppConfig.rb} +0 -1
  10. data/lib/{AttributeBase.rb → taskjuggler/AttributeBase.rb} +1 -1
  11. data/lib/{AttributeDefinition.rb → taskjuggler/AttributeDefinition.rb} +0 -0
  12. data/lib/{Attributes.rb → taskjuggler/Attributes.rb} +19 -9
  13. data/lib/{BatchProcessor.rb → taskjuggler/BatchProcessor.rb} +0 -0
  14. data/lib/{Booking.rb → taskjuggler/Booking.rb} +0 -0
  15. data/lib/{Charge.rb → taskjuggler/Charge.rb} +1 -1
  16. data/lib/{ChargeSet.rb → taskjuggler/ChargeSet.rb} +1 -1
  17. data/lib/{DataCache.rb → taskjuggler/DataCache.rb} +0 -0
  18. data/lib/{FileList.rb → taskjuggler/FileList.rb} +0 -0
  19. data/lib/{HTMLDocument.rb → taskjuggler/HTMLDocument.rb} +1 -1
  20. data/lib/{Interval.rb → taskjuggler/Interval.rb} +1 -1
  21. data/lib/{IntervalList.rb → taskjuggler/IntervalList.rb} +1 -1
  22. data/lib/{Journal.rb → taskjuggler/Journal.rb} +2 -2
  23. data/lib/{KeywordArray.rb → taskjuggler/KeywordArray.rb} +0 -0
  24. data/lib/{KeywordDocumentation.rb → taskjuggler/KeywordDocumentation.rb} +5 -5
  25. data/lib/{Limits.rb → taskjuggler/Limits.rb} +1 -1
  26. data/lib/{Log.rb → taskjuggler/Log.rb} +0 -0
  27. data/lib/{LogFile.rb → taskjuggler/LogFile.rb} +0 -0
  28. data/lib/{LogicalExpression.rb → taskjuggler/LogicalExpression.rb} +3 -3
  29. data/lib/{LogicalFunction.rb → taskjuggler/LogicalFunction.rb} +1 -1
  30. data/lib/{LogicalOperation.rb → taskjuggler/LogicalOperation.rb} +1 -1
  31. data/lib/{MessageHandler.rb → taskjuggler/MessageHandler.rb} +3 -1
  32. data/lib/{Project.rb → taskjuggler/Project.rb} +51 -48
  33. data/lib/{ProjectFileParser.rb → taskjuggler/ProjectFileParser.rb} +25 -9
  34. data/lib/{ProjectFileScanner.rb → taskjuggler/ProjectFileScanner.rb} +5 -5
  35. data/lib/{PropertyList.rb → taskjuggler/PropertyList.rb} +0 -0
  36. data/lib/{PropertySet.rb → taskjuggler/PropertySet.rb} +3 -4
  37. data/lib/{PropertyTreeNode.rb → taskjuggler/PropertyTreeNode.rb} +157 -11
  38. data/lib/{Query.rb → taskjuggler/Query.rb} +17 -7
  39. data/lib/{RealFormat.rb → taskjuggler/RealFormat.rb} +0 -0
  40. data/lib/{Resource.rb → taskjuggler/Resource.rb} +8 -6
  41. data/lib/{ResourceScenario.rb → taskjuggler/ResourceScenario.rb} +26 -65
  42. data/lib/{RichText.rb → taskjuggler/RichText.rb} +3 -3
  43. data/lib/{RichTextDocument.rb → taskjuggler/RichText/Document.rb} +3 -3
  44. data/lib/{RichTextElement.rb → taskjuggler/RichText/Element.rb} +10 -4
  45. data/lib/{RichTextFunctionExample.rb → taskjuggler/RichText/FunctionExample.rb} +3 -3
  46. data/lib/{RichTextFunctionHandler.rb → taskjuggler/RichText/FunctionHandler.rb} +0 -0
  47. data/lib/{RichTextParser.rb → taskjuggler/RichText/Parser.rb} +6 -4
  48. data/lib/{RTFHandlers.rb → taskjuggler/RichText/RTFHandlers.rb} +4 -4
  49. data/lib/{RTFNavigator.rb → taskjuggler/RichText/RTFNavigator.rb} +3 -3
  50. data/lib/{RTFQuery.rb → taskjuggler/RichText/RTFQuery.rb} +62 -39
  51. data/lib/{RTFReport.rb → taskjuggler/RichText/RTFReport.rb} +2 -2
  52. data/lib/{RTFReportLink.rb → taskjuggler/RichText/RTFReportLink.rb} +4 -4
  53. data/lib/{RTFWithQuerySupport.rb → taskjuggler/RichText/RTFWithQuerySupport.rb} +1 -1
  54. data/lib/{RichTextScanner.rb → taskjuggler/RichText/Scanner.rb} +18 -5
  55. data/lib/{RichTextSnip.rb → taskjuggler/RichText/Snip.rb} +2 -2
  56. data/lib/{RichTextSyntaxRules.rb → taskjuggler/RichText/SyntaxRules.rb} +14 -0
  57. data/lib/{TOCEntry.rb → taskjuggler/RichText/TOCEntry.rb} +2 -2
  58. data/lib/{TableOfContents.rb → taskjuggler/RichText/TableOfContents.rb} +2 -2
  59. data/lib/{RuntimeConfig.rb → taskjuggler/RuntimeConfig.rb} +18 -18
  60. data/lib/{Scenario.rb → taskjuggler/Scenario.rb} +1 -1
  61. data/lib/{ScenarioData.rb → taskjuggler/ScenarioData.rb} +2 -3
  62. data/lib/{Scoreboard.rb → taskjuggler/Scoreboard.rb} +4 -4
  63. data/lib/{SheetHandlerBase.rb → taskjuggler/SheetHandlerBase.rb} +3 -3
  64. data/lib/{SheetReceiver.rb → taskjuggler/SheetReceiver.rb} +2 -2
  65. data/lib/{SheetSender.rb → taskjuggler/SheetSender.rb} +5 -5
  66. data/lib/{Shift.rb → taskjuggler/Shift.rb} +2 -3
  67. data/lib/{ShiftAssignments.rb → taskjuggler/ShiftAssignments.rb} +1 -1
  68. data/lib/{ShiftScenario.rb → taskjuggler/ShiftScenario.rb} +1 -1
  69. data/lib/{SimpleQueryExpander.rb → taskjuggler/SimpleQueryExpander.rb} +0 -0
  70. data/lib/{StatusSheetReceiver.rb → taskjuggler/StatusSheetReceiver.rb} +1 -1
  71. data/lib/{StatusSheetSender.rb → taskjuggler/StatusSheetSender.rb} +1 -1
  72. data/lib/{SyntaxReference.rb → taskjuggler/SyntaxReference.rb} +4 -4
  73. data/lib/{TableColumnDefinition.rb → taskjuggler/TableColumnDefinition.rb} +0 -0
  74. data/lib/{Task.rb → taskjuggler/Task.rb} +2 -2
  75. data/lib/{TaskDependency.rb → taskjuggler/TaskDependency.rb} +8 -0
  76. data/lib/{TaskJuggler.rb → taskjuggler/TaskJuggler.rb} +6 -4
  77. data/lib/{TaskScenario.rb → taskjuggler/TaskScenario.rb} +211 -150
  78. data/lib/taskjuggler/TernarySearchTree.rb +203 -0
  79. data/lib/{TextFormatter.rb → taskjuggler/TextFormatter.rb} +1 -1
  80. data/lib/{TextParser.rb → taskjuggler/TextParser.rb} +6 -6
  81. data/lib/{MacroTable.rb → taskjuggler/TextParser/MacroTable.rb} +2 -12
  82. data/lib/{TextParser → taskjuggler/TextParser}/Pattern.rb +5 -2
  83. data/lib/{TextParser → taskjuggler/TextParser}/Rule.rb +1 -1
  84. data/lib/{TextScanner.rb → taskjuggler/TextParser/Scanner.rb} +34 -32
  85. data/lib/{SourceFileInfo.rb → taskjuggler/TextParser/SourceFileInfo.rb} +1 -1
  86. data/lib/{TextParser → taskjuggler/TextParser}/StackElement.rb +0 -2
  87. data/lib/{TextParser → taskjuggler/TextParser}/State.rb +0 -0
  88. data/lib/{TextParser → taskjuggler/TextParser}/TokenDoc.rb +0 -0
  89. data/lib/{TimeSheetReceiver.rb → taskjuggler/TimeSheetReceiver.rb} +1 -1
  90. data/lib/{TimeSheetSender.rb → taskjuggler/TimeSheetSender.rb} +1 -1
  91. data/lib/{TimeSheetSummary.rb → taskjuggler/TimeSheetSummary.rb} +1 -1
  92. data/lib/{TimeSheets.rb → taskjuggler/TimeSheets.rb} +23 -16
  93. data/lib/{Tj3AppBase.rb → taskjuggler/Tj3AppBase.rb} +19 -12
  94. data/lib/{Tj3Config.rb → taskjuggler/Tj3Config.rb} +3 -3
  95. data/lib/taskjuggler/Tj3Man.rb +78 -0
  96. data/lib/{Tj3SheetAppBase.rb → taskjuggler/Tj3SheetAppBase.rb} +2 -2
  97. data/lib/{TjException.rb → taskjuggler/TjException.rb} +0 -0
  98. data/lib/{TjTime.rb → taskjuggler/TjTime.rb} +279 -234
  99. data/lib/{TjpExample.rb → taskjuggler/TjpExample.rb} +0 -0
  100. data/lib/{TjpSyntaxRules.rb → taskjuggler/TjpSyntaxRules.rb} +253 -95
  101. data/lib/{URLParameter.rb → taskjuggler/URLParameter.rb} +0 -0
  102. data/lib/{UTF8String.rb → taskjuggler/UTF8String.rb} +0 -0
  103. data/lib/{UserManual.rb → taskjuggler/UserManual.rb} +6 -6
  104. data/lib/{VimSyntax.rb → taskjuggler/VimSyntax.rb} +6 -2
  105. data/lib/{WorkingHours.rb → taskjuggler/WorkingHours.rb} +14 -22
  106. data/lib/{XMLDocument.rb → taskjuggler/XMLDocument.rb} +1 -1
  107. data/lib/{XMLElement.rb → taskjuggler/XMLElement.rb} +1 -1
  108. data/lib/taskjuggler/apps/Tj3.rb +134 -0
  109. data/lib/taskjuggler/apps/Tj3Client.rb +467 -0
  110. data/lib/taskjuggler/apps/Tj3Daemon.rb +142 -0
  111. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +56 -0
  112. data/lib/taskjuggler/apps/Tj3SsSender.rb +90 -0
  113. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +59 -0
  114. data/lib/taskjuggler/apps/Tj3TsSender.rb +77 -0
  115. data/lib/taskjuggler/apps/Tj3TsSummary.rb +86 -0
  116. data/lib/{daemon → taskjuggler/daemon}/Daemon.rb +4 -3
  117. data/lib/{daemon → taskjuggler/daemon}/ProcessIntercom.rb +2 -2
  118. data/lib/{daemon → taskjuggler/daemon}/ProjectBroker.rb +5 -5
  119. data/lib/{daemon → taskjuggler/daemon}/ProjectServer.rb +16 -16
  120. data/lib/{daemon → taskjuggler/daemon}/ReportServer.rb +6 -6
  121. data/lib/{daemon → taskjuggler/daemon}/ReportServlet.rb +2 -2
  122. data/lib/{daemon → taskjuggler/daemon}/WebServer.rb +4 -4
  123. data/lib/{daemon → taskjuggler/daemon}/WelcomePage.rb +2 -1
  124. data/lib/{deep_copy.rb → taskjuggler/deep_copy.rb} +0 -0
  125. data/lib/{reports → taskjuggler/reports}/CSVFile.rb +2 -2
  126. data/lib/{reports → taskjuggler/reports}/CollisionDetector.rb +1 -1
  127. data/lib/{reports → taskjuggler/reports}/ColumnTable.rb +1 -1
  128. data/lib/{reports → taskjuggler/reports}/GanttChart.rb +4 -4
  129. data/lib/{reports → taskjuggler/reports}/GanttContainer.rb +1 -1
  130. data/lib/{reports → taskjuggler/reports}/GanttHeader.rb +1 -1
  131. data/lib/{reports → taskjuggler/reports}/GanttHeaderScaleItem.rb +0 -0
  132. data/lib/{reports → taskjuggler/reports}/GanttLine.rb +6 -6
  133. data/lib/{reports → taskjuggler/reports}/GanttLoadStack.rb +1 -1
  134. data/lib/{reports → taskjuggler/reports}/GanttMilestone.rb +1 -1
  135. data/lib/{reports → taskjuggler/reports}/GanttRouter.rb +1 -1
  136. data/lib/{reports → taskjuggler/reports}/GanttTaskBar.rb +1 -1
  137. data/lib/{reports → taskjuggler/reports}/HTMLGraphics.rb +0 -0
  138. data/lib/{reports → taskjuggler/reports}/Navigator.rb +1 -1
  139. data/lib/{reports → taskjuggler/reports}/NikuReport.rb +3 -6
  140. data/lib/{reports → taskjuggler/reports}/Report.rb +19 -14
  141. data/lib/{reports → taskjuggler/reports}/ReportBase.rb +0 -0
  142. data/lib/{reports → taskjuggler/reports}/ReportContext.rb +0 -0
  143. data/lib/{reports → taskjuggler/reports}/ReportTable.rb +2 -2
  144. data/lib/{reports → taskjuggler/reports}/ReportTableCell.rb +0 -0
  145. data/lib/{reports → taskjuggler/reports}/ReportTableColumn.rb +0 -0
  146. data/lib/{reports → taskjuggler/reports}/ReportTableLegend.rb +0 -0
  147. data/lib/{reports → taskjuggler/reports}/ReportTableLine.rb +1 -1
  148. data/lib/{reports → taskjuggler/reports}/ResourceListRE.rb +4 -4
  149. data/lib/{reports → taskjuggler/reports}/StatusSheetReport.rb +1 -1
  150. data/lib/{reports → taskjuggler/reports}/TableReport.rb +8 -7
  151. data/lib/{reports → taskjuggler/reports}/TaskListRE.rb +4 -4
  152. data/lib/{reports → taskjuggler/reports}/TextReport.rb +1 -1
  153. data/lib/{reports → taskjuggler/reports}/TimeSheetReport.rb +1 -1
  154. data/lib/{reports → taskjuggler/reports}/TjpExportRE.rb +87 -29
  155. data/lib/tj3.rb +2 -144
  156. data/lib/tj3client.rb +2 -442
  157. data/lib/tj3d.rb +1 -133
  158. data/lib/tj3man.rb +2 -75
  159. data/lib/tj3ss_receiver.rb +2 -42
  160. data/lib/tj3ss_sender.rb +1 -76
  161. data/lib/tj3ts_receiver.rb +1 -45
  162. data/lib/tj3ts_sender.rb +1 -63
  163. data/lib/tj3ts_summary.rb +1 -72
  164. data/manual/How_To_Contribute +19 -49
  165. data/manual/Installation +65 -6
  166. data/manual/Reporting_Bugs +6 -20
  167. data/manual/TaskJuggler_Internals +8 -1
  168. data/manual/Tutorial +16 -0
  169. data/prj_cfg.rb +2 -3
  170. data/spec/IntervalList_spec.rb +2 -1
  171. data/spec/ProjectBroker_spec.rb +1 -1
  172. data/spec/TernarySearchTree_spec.rb +131 -0
  173. data/spec/TimeSheets_spec.rb +129 -0
  174. data/spec/Tj3Daemon_spec.rb +51 -0
  175. data/spec/Tj3_spec.rb +36 -0
  176. data/spec/support/DaemonControl.rb +78 -0
  177. data/spec/support/StdIoWrapper.rb +43 -0
  178. data/spec/tj3client.log +23 -0
  179. data/tasks/changelog.rake +17 -2
  180. data/tasks/csts.rake +2 -2
  181. data/tasks/manual.rake +9 -5
  182. data/tasks/missing.rake +0 -4
  183. data/tasks/rdoc.rake +2 -2
  184. data/tasks/vim.rake +9 -0
  185. data/test/TestSuite/CSV-Reports/alert.tjp +9 -0
  186. data/test/TestSuite/CSV-Reports/celltext.tjp +1 -0
  187. data/test/TestSuite/CSV-Reports/inputs.tjp +19 -0
  188. data/test/TestSuite/CSV-Reports/project-1.tji +9 -0
  189. data/test/TestSuite/CSV-Reports/refs/alert.csv +15 -0
  190. data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -0
  191. data/test/TestSuite/CSV-Reports/refs/inputs.csv +6 -0
  192. data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +4 -4
  193. data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +22 -22
  194. data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -0
  195. data/test/TestSuite/CSV-Reports/refs/sortBy_duration.down.csv +1 -0
  196. data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -0
  197. data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +14 -13
  198. data/test/TestSuite/CSV-Reports/refs/targets.csv +5 -0
  199. data/test/TestSuite/CSV-Reports/refs/taskreport.csv +15 -14
  200. data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +33 -32
  201. data/test/TestSuite/CSV-Reports/resourcereport.tjp +1 -0
  202. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +1 -0
  203. data/test/TestSuite/CSV-Reports/sortByTree.tjp +1 -0
  204. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +1 -0
  205. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -0
  206. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +2 -1
  207. data/test/TestSuite/CSV-Reports/targets.tjp +20 -0
  208. data/test/TestSuite/CSV-Reports/taskreport.tjp +2 -1
  209. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +2 -1
  210. data/test/TestSuite/CSV-Reports/weekly.tjp +5 -2
  211. data/test/TestSuite/Export-Reports/export.tji +6 -0
  212. data/test/TestSuite/Export-Reports/refs/Account.tjp +92 -0
  213. data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +38 -0
  214. data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +124 -0
  215. data/test/TestSuite/Export-Reports/refs/Alternative.tjp +50 -0
  216. data/test/TestSuite/Export-Reports/refs/AutoID.tjp +45 -0
  217. data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +18 -0
  218. data/test/TestSuite/Export-Reports/refs/Booking.tjp +48 -0
  219. data/test/TestSuite/Export-Reports/refs/Caption.tjp +65 -0
  220. data/test/TestSuite/Export-Reports/refs/Celltext.tjp +45 -0
  221. data/test/TestSuite/Export-Reports/refs/Comments.tjp +67 -0
  222. data/test/TestSuite/Export-Reports/refs/Complete.tjp +50 -0
  223. data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +41 -0
  224. data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +18 -0
  225. data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +24 -0
  226. data/test/TestSuite/Export-Reports/refs/DST.tjp +89 -0
  227. data/test/TestSuite/Export-Reports/refs/Depends1.tjp +57 -0
  228. data/test/TestSuite/Export-Reports/refs/Durations.tjp +84 -0
  229. data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +58 -0
  230. data/test/TestSuite/Export-Reports/refs/Flags.tjp +51 -0
  231. data/test/TestSuite/Export-Reports/refs/Gap.tjp +38 -0
  232. data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +67 -0
  233. data/test/TestSuite/Export-Reports/refs/Include.tjp +58 -0
  234. data/test/TestSuite/Export-Reports/refs/Journal.tjp +28 -0
  235. data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +283 -0
  236. data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +617 -0
  237. data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +18 -0
  238. data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +57 -0
  239. data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +91 -0
  240. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +18 -0
  241. data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +18 -0
  242. data/test/TestSuite/Export-Reports/refs/Manager.tjp +121 -0
  243. data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +59 -0
  244. data/test/TestSuite/Export-Reports/refs/Milestone.tjp +27 -0
  245. data/test/TestSuite/Export-Reports/refs/MinMax.tjp +30 -0
  246. data/test/TestSuite/Export-Reports/refs/Niku.tjp +218 -0
  247. data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +18 -0
  248. data/test/TestSuite/Export-Reports/refs/Period.tjp +25 -0
  249. data/test/TestSuite/Export-Reports/refs/Persistent.tjp +49 -0
  250. data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +46 -0
  251. data/test/TestSuite/Export-Reports/refs/Priority.tjp +141 -0
  252. data/test/TestSuite/Export-Reports/refs/Project.tjp +18 -0
  253. data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +36 -0
  254. data/test/TestSuite/Export-Reports/refs/Query.tjp +49 -0
  255. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +79 -0
  256. data/test/TestSuite/Export-Reports/refs/Reports.tjp +130 -0
  257. data/test/TestSuite/Export-Reports/refs/Resource.tjp +59 -0
  258. data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +67 -0
  259. data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +90 -0
  260. data/test/TestSuite/Export-Reports/refs/Responsible.tjp +50 -0
  261. data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +90 -0
  262. data/test/TestSuite/Export-Reports/refs/Scenario.tjp +25 -0
  263. data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +55 -0
  264. data/test/TestSuite/Export-Reports/refs/Select.tjp +89 -0
  265. data/test/TestSuite/Export-Reports/refs/Shift.tjp +39 -0
  266. data/test/TestSuite/Export-Reports/refs/Simple.tjp +67 -0
  267. data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +95 -0
  268. data/test/TestSuite/Export-Reports/refs/String.tjp +33 -0
  269. data/test/TestSuite/Export-Reports/refs/Supplement.tjp +41 -0
  270. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +49 -0
  271. data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +75 -0
  272. data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +51 -0
  273. data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +81 -0
  274. data/test/TestSuite/Export-Reports/refs/Timezone.tjp +18 -0
  275. data/test/TestSuite/Export-Reports/refs/Vacation.tjp +69 -0
  276. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +1061 -0
  277. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +3 -1
  278. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +5 -3
  279. data/test/TestSuite/Scheduler/Correct/Precedes.tjp +19 -19
  280. data/test/TestSuite/Scheduler/Correct/PriorityInversion.tjp +32 -0
  281. data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +19 -0
  282. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +11 -0
  283. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +14 -14
  284. data/test/TestSuite/Scheduler/Correct/checks.tji +5 -0
  285. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +20 -0
  286. data/test/TestSuite/StatusSheets/boss_mail +1 -1
  287. data/test/TestSuite/StatusSheets/dev2_mail +1 -1
  288. data/test/TestSuite/StatusSheets/run +2 -3
  289. data/test/TestSuite/Syntax/Correct/Account.tjp +1 -0
  290. data/test/TestSuite/Syntax/Correct/AdoptedTasks.tjp +9 -0
  291. data/test/TestSuite/Syntax/Correct/Allocate-1.tjp +3 -1
  292. data/test/TestSuite/Syntax/Correct/Alternative.tjp +3 -1
  293. data/test/TestSuite/Syntax/Correct/AutoID.tjp +3 -1
  294. data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -0
  295. data/test/TestSuite/Syntax/Correct/Caption.tjp +3 -1
  296. data/test/TestSuite/Syntax/Correct/Celltext.tjp +3 -1
  297. data/test/TestSuite/Syntax/Correct/Comments.tjp +3 -1
  298. data/test/TestSuite/Syntax/Correct/Complete.tjp +1 -0
  299. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +2 -1
  300. data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +2 -1
  301. data/test/TestSuite/Syntax/Correct/CustomAttributes.tjp +3 -2
  302. data/test/TestSuite/Syntax/Correct/DST.tjp +11 -0
  303. data/test/TestSuite/Syntax/Correct/Depends1.tjp +6 -4
  304. data/test/TestSuite/Syntax/Correct/Durations.tjp +3 -1
  305. data/test/TestSuite/Syntax/Correct/Efficiency.tjp +4 -2
  306. data/test/TestSuite/Syntax/Correct/Export.tjp +6 -4
  307. data/test/TestSuite/Syntax/Correct/Flags.tjp +3 -1
  308. data/test/TestSuite/Syntax/Correct/Freeze.tjp +2 -2
  309. data/test/TestSuite/Syntax/Correct/Gap.tjp +3 -1
  310. data/test/TestSuite/Syntax/Correct/HtmlTaskReport.tjp +4 -2
  311. data/test/TestSuite/Syntax/Correct/Include.tjp +3 -1
  312. data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -1
  313. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +13 -9
  314. data/test/TestSuite/Syntax/Correct/LoadUnits.tjp +1 -0
  315. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +3 -1
  316. data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +3 -1
  317. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +3 -1
  318. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +3 -1
  319. data/test/TestSuite/Syntax/Correct/Macro-3.tjp +1 -0
  320. data/test/TestSuite/Syntax/Correct/Manager.tjp +4 -2
  321. data/test/TestSuite/Syntax/Correct/Mandatory.tjp +3 -1
  322. data/test/TestSuite/Syntax/Correct/Milestone.tjp +3 -1
  323. data/test/TestSuite/Syntax/Correct/MinMax.tjp +3 -1
  324. data/test/TestSuite/Syntax/Correct/Niku.tjp +1 -0
  325. data/test/TestSuite/Syntax/Correct/Numberformat.tjp +3 -2
  326. data/test/TestSuite/Syntax/Correct/Period.tjp +1 -0
  327. data/test/TestSuite/Syntax/Correct/Persistent.tjp +3 -1
  328. data/test/TestSuite/Syntax/Correct/Precedes1.tjp +6 -4
  329. data/test/TestSuite/Syntax/Correct/Priority.tjp +4 -2
  330. data/test/TestSuite/Syntax/Correct/Project.tjp +5 -4
  331. data/test/TestSuite/Syntax/Correct/ProjectIDs.tjp +3 -2
  332. data/test/TestSuite/Syntax/Correct/Query.tjp +1 -0
  333. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +3 -1
  334. data/test/TestSuite/Syntax/Correct/Reports.tjp +7 -5
  335. data/test/TestSuite/Syntax/Correct/Resource.tjp +4 -2
  336. data/test/TestSuite/Syntax/Correct/ResourcePrefix.tjp +4 -2
  337. data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +3 -1
  338. data/test/TestSuite/Syntax/Correct/Responsible.tjp +3 -1
  339. data/test/TestSuite/Syntax/Correct/RollupResource.tjp +3 -1
  340. data/test/TestSuite/Syntax/Correct/Scenario.tjp +2 -1
  341. data/test/TestSuite/Syntax/Correct/Scheduling.tjp +3 -1
  342. data/test/TestSuite/Syntax/Correct/Select.tjp +3 -1
  343. data/test/TestSuite/Syntax/Correct/Shift.tjp +4 -2
  344. data/test/TestSuite/Syntax/Correct/Simple.tjp +3 -1
  345. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +4 -2
  346. data/test/TestSuite/Syntax/Correct/String.tjp +3 -1
  347. data/test/TestSuite/Syntax/Correct/Supplement.tjp +3 -1
  348. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +3 -2
  349. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +3 -1
  350. data/test/TestSuite/Syntax/Correct/TimeFrame.tjp +3 -1
  351. data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -2
  352. data/test/TestSuite/Syntax/Correct/Vacation.tjp +5 -3
  353. data/test/TestSuite/Syntax/Correct/tutorial.tjp +23 -16
  354. data/test/TestSuite/Syntax/Errors/adopt_common_root.tjp +10 -0
  355. data/test/TestSuite/Syntax/Errors/adopt_duplicate_child.tjp +10 -0
  356. data/test/TestSuite/Syntax/Errors/adopt_duplicate_parent.tjp +10 -0
  357. data/test/TestSuite/{Scheduler/Errors/milestone_duration.tjp → Syntax/Errors/multiple_durations.tjp} +1 -1
  358. data/test/TestSuite/Syntax/Errors/operand_unkn_scen.tjp +6 -4
  359. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd1.tjp +5 -3
  360. data/test/TestSuite/TimeSheets/dev2_mail1 +1 -1
  361. data/test/TestSuite/TimeSheets/dev2_mail2 +1 -1
  362. data/test/TestSuite/TimeSheets/run +2 -2
  363. data/test/TestSuite/TimeSheets/uu.txt +29 -0
  364. data/test/test_AlgorithmDiff.rb +139 -0
  365. data/test/test_BatchProcessor.rb +2 -1
  366. data/test/test_CSV-Reports.rb +30 -19
  367. data/test/test_CSVFile.rb +2 -1
  368. data/test/test_CollisionDetector.rb +2 -1
  369. data/test/test_Export-Reports.rb +128 -0
  370. data/test/test_Journal.rb +2 -1
  371. data/test/test_Limits.rb +4 -3
  372. data/test/test_LogicalExpression.rb +2 -1
  373. data/test/test_MacroTable.rb +8 -6
  374. data/test/test_Project.rb +2 -1
  375. data/test/test_ProjectFileScanner.rb +4 -3
  376. data/test/test_PropertySet.rb +2 -1
  377. data/test/test_Query.rb +3 -2
  378. data/test/test_RealFormat.rb +2 -1
  379. data/test/test_ReportGenerator.rb +3 -2
  380. data/test/test_RichText.rb +14 -3
  381. data/test/test_Scheduler.rb +2 -1
  382. data/test/test_ShiftAssignments.rb +3 -1
  383. data/test/test_SimpleQueryExpander.rb +3 -2
  384. data/test/test_Syntax.rb +2 -1
  385. data/test/test_TextFormatter.rb +2 -1
  386. data/test/test_TjTime.rb +15 -14
  387. data/test/test_TjpExample.rb +2 -1
  388. data/test/test_URLParameter.rb +2 -1
  389. data/test/test_UTF8String.rb +2 -1
  390. data/test/test_WorkingHours.rb +3 -2
  391. data/test/test_deep_copy.rb +2 -1
  392. metadata +250 -541
  393. data/README +0 -31
  394. data/benchmarks/allocatedSlots.csv +0 -334
  395. data/benchmarks/profile.clt +0 -42974
  396. data/benchmarks/profile.html +0 -61128
  397. data/doc/AppConfig.html +0 -1471
  398. data/doc/Arguments.html +0 -720
  399. data/doc/CHANGELOG.html +0 -1987
  400. data/doc/COPYING.html +0 -879
  401. data/doc/Object.html +0 -1056
  402. data/doc/README.html +0 -565
  403. data/doc/RuntimeConfig.html +0 -804
  404. data/doc/String.html +0 -913
  405. data/doc/TaskJuggler.html +0 -2512
  406. data/doc/TaskJuggler/Account.html +0 -733
  407. data/doc/TaskJuggler/AccountAttribute.html +0 -749
  408. data/doc/TaskJuggler/AccountScenario.html +0 -692
  409. data/doc/TaskJuggler/Allocation.html +0 -943
  410. data/doc/TaskJuggler/AllocationAttribute.html +0 -779
  411. data/doc/TaskJuggler/AttributeBase.html +0 -1308
  412. data/doc/TaskJuggler/AttributeDefinition.html +0 -795
  413. data/doc/TaskJuggler/AttributeOverwrite.html +0 -586
  414. data/doc/TaskJuggler/BatchProcessor.html +0 -1158
  415. data/doc/TaskJuggler/Booking.html +0 -839
  416. data/doc/TaskJuggler/BookingListAttribute.html +0 -749
  417. data/doc/TaskJuggler/BooleanAttribute.html +0 -749
  418. data/doc/TaskJuggler/CSVFile.html +0 -1108
  419. data/doc/TaskJuggler/CellSettingPattern.html +0 -680
  420. data/doc/TaskJuggler/CellSettingPatternList.html +0 -729
  421. data/doc/TaskJuggler/Charge.html +0 -757
  422. data/doc/TaskJuggler/ChargeListAttribute.html +0 -713
  423. data/doc/TaskJuggler/ChargeSet.html +0 -929
  424. data/doc/TaskJuggler/ChargeSetListAttribute.html +0 -758
  425. data/doc/TaskJuggler/CollisionDetector.html +0 -1069
  426. data/doc/TaskJuggler/ColumnListAttribute.html +0 -713
  427. data/doc/TaskJuggler/ColumnTable.html +0 -743
  428. data/doc/TaskJuggler/Daemon.html +0 -798
  429. data/doc/TaskJuggler/DataCache.html +0 -930
  430. data/doc/TaskJuggler/DataCacheEntry.html +0 -717
  431. data/doc/TaskJuggler/DateAttribute.html +0 -717
  432. data/doc/TaskJuggler/DefinitionListAttribute.html +0 -635
  433. data/doc/TaskJuggler/DependencyListAttribute.html +0 -753
  434. data/doc/TaskJuggler/DurationAttribute.html +0 -750
  435. data/doc/TaskJuggler/FileList.html +0 -731
  436. data/doc/TaskJuggler/FileRecord.html +0 -682
  437. data/doc/TaskJuggler/FixnumAttribute.html +0 -671
  438. data/doc/TaskJuggler/FlagListAttribute.html +0 -749
  439. data/doc/TaskJuggler/FloatAttribute.html +0 -713
  440. data/doc/TaskJuggler/FormatListAttribute.html +0 -677
  441. data/doc/TaskJuggler/GanttChart.html +0 -1467
  442. data/doc/TaskJuggler/GanttContainer.html +0 -925
  443. data/doc/TaskJuggler/GanttHeader.html +0 -928
  444. data/doc/TaskJuggler/GanttHeaderScaleItem.html +0 -742
  445. data/doc/TaskJuggler/GanttLine.html +0 -1305
  446. data/doc/TaskJuggler/GanttLoadStack.html +0 -808
  447. data/doc/TaskJuggler/GanttMilestone.html +0 -906
  448. data/doc/TaskJuggler/GanttRouter.html +0 -1118
  449. data/doc/TaskJuggler/GanttTaskBar.html +0 -927
  450. data/doc/TaskJuggler/HTMLDocument.html +0 -761
  451. data/doc/TaskJuggler/HTMLGraphics.html +0 -817
  452. data/doc/TaskJuggler/Interval.html +0 -1056
  453. data/doc/TaskJuggler/IntervalList.html +0 -777
  454. data/doc/TaskJuggler/IntervalListAttribute.html +0 -753
  455. data/doc/TaskJuggler/JobInfo.html +0 -923
  456. data/doc/TaskJuggler/Journal.html +0 -1158
  457. data/doc/TaskJuggler/JournalEntry.html +0 -821
  458. data/doc/TaskJuggler/JournalEntryList.html +0 -1071
  459. data/doc/TaskJuggler/KeywordArray.html +0 -676
  460. data/doc/TaskJuggler/KeywordDocumentation.html +0 -1838
  461. data/doc/TaskJuggler/Limits.html +0 -1016
  462. data/doc/TaskJuggler/Limits/Limit.html +0 -927
  463. data/doc/TaskJuggler/LimitsAttribute.html +0 -714
  464. data/doc/TaskJuggler/ListAttributeBase.html +0 -683
  465. data/doc/TaskJuggler/Log.html +0 -1143
  466. data/doc/TaskJuggler/LogFile.html +0 -960
  467. data/doc/TaskJuggler/LogicalAttribute.html +0 -740
  468. data/doc/TaskJuggler/LogicalExpression.html +0 -781
  469. data/doc/TaskJuggler/LogicalExpressionAttribute.html +0 -671
  470. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +0 -671
  471. data/doc/TaskJuggler/LogicalFlag.html +0 -723
  472. data/doc/TaskJuggler/LogicalFunction.html +0 -1306
  473. data/doc/TaskJuggler/LogicalOperation.html +0 -1124
  474. data/doc/TaskJuggler/Macro.html +0 -688
  475. data/doc/TaskJuggler/MacroTable.html +0 -852
  476. data/doc/TaskJuggler/ManagerResponsibilities.html +0 -716
  477. data/doc/TaskJuggler/ManagerStatusRecord.html +0 -720
  478. data/doc/TaskJuggler/Message.html +0 -817
  479. data/doc/TaskJuggler/MessageHandler.html +0 -1036
  480. data/doc/TaskJuggler/Navigator.html +0 -922
  481. data/doc/TaskJuggler/NavigatorElement.html +0 -974
  482. data/doc/TaskJuggler/NikuProject.html +0 -704
  483. data/doc/TaskJuggler/NikuReport.html +0 -1449
  484. data/doc/TaskJuggler/NikuResource.html +0 -674
  485. data/doc/TaskJuggler/NodeListAttribute.html +0 -635
  486. data/doc/TaskJuggler/PlaceHolderCell.html +0 -728
  487. data/doc/TaskJuggler/ProcessIntercom.html +0 -997
  488. data/doc/TaskJuggler/ProcessIntercomIface.html +0 -753
  489. data/doc/TaskJuggler/Project.html +0 -3333
  490. data/doc/TaskJuggler/ProjectBroker.html +0 -1656
  491. data/doc/TaskJuggler/ProjectBrokerIface.html +0 -831
  492. data/doc/TaskJuggler/ProjectFileParser.html +0 -2033
  493. data/doc/TaskJuggler/ProjectFileScanner.html +0 -1816
  494. data/doc/TaskJuggler/ProjectRecord.html +0 -958
  495. data/doc/TaskJuggler/ProjectServer.html +0 -1229
  496. data/doc/TaskJuggler/ProjectServerIface.html +0 -848
  497. data/doc/TaskJuggler/PropertyAttribute.html +0 -671
  498. data/doc/TaskJuggler/PropertyList.html +0 -1379
  499. data/doc/TaskJuggler/PropertySet.html +0 -1799
  500. data/doc/TaskJuggler/PropertyTreeNode.html +0 -2579
  501. data/doc/TaskJuggler/Query.html +0 -1663
  502. data/doc/TaskJuggler/RTFHandlers.html +0 -644
  503. data/doc/TaskJuggler/RTFNavigator.html +0 -772
  504. data/doc/TaskJuggler/RTFQuery.html +0 -1040
  505. data/doc/TaskJuggler/RTFReport.html +0 -800
  506. data/doc/TaskJuggler/RTFReportLink.html +0 -792
  507. data/doc/TaskJuggler/RTFWithQuerySupport.html +0 -682
  508. data/doc/TaskJuggler/RealFormat.html +0 -785
  509. data/doc/TaskJuggler/RealFormatAttribute.html +0 -635
  510. data/doc/TaskJuggler/ReferenceAttribute.html +0 -824
  511. data/doc/TaskJuggler/Report.html +0 -1477
  512. data/doc/TaskJuggler/ReportBase.html +0 -1246
  513. data/doc/TaskJuggler/ReportContext.html +0 -816
  514. data/doc/TaskJuggler/ReportServer.html +0 -1048
  515. data/doc/TaskJuggler/ReportServerIface.html +0 -882
  516. data/doc/TaskJuggler/ReportServerRecord.html +0 -761
  517. data/doc/TaskJuggler/ReportServlet.html +0 -1024
  518. data/doc/TaskJuggler/ReportTable.html +0 -1159
  519. data/doc/TaskJuggler/ReportTableCell.html +0 -1646
  520. data/doc/TaskJuggler/ReportTableColumn.html +0 -870
  521. data/doc/TaskJuggler/ReportTableLegend.html +0 -1040
  522. data/doc/TaskJuggler/ReportTableLine.html +0 -1047
  523. data/doc/TaskJuggler/Resource.html +0 -972
  524. data/doc/TaskJuggler/ResourceListAttribute.html +0 -810
  525. data/doc/TaskJuggler/ResourceListRE.html +0 -717
  526. data/doc/TaskJuggler/ResourceScenario.html +0 -2599
  527. data/doc/TaskJuggler/RichText.html +0 -859
  528. data/doc/TaskJuggler/RichTextAttribute.html +0 -785
  529. data/doc/TaskJuggler/RichTextDocument.html +0 -1018
  530. data/doc/TaskJuggler/RichTextElement.html +0 -1754
  531. data/doc/TaskJuggler/RichTextFunctionExample.html +0 -779
  532. data/doc/TaskJuggler/RichTextFunctionHandler.html +0 -730
  533. data/doc/TaskJuggler/RichTextImage.html +0 -692
  534. data/doc/TaskJuggler/RichTextIntermediate.html +0 -1265
  535. data/doc/TaskJuggler/RichTextParser.html +0 -847
  536. data/doc/TaskJuggler/RichTextScanner.html +0 -1469
  537. data/doc/TaskJuggler/RichTextSnip.html +0 -980
  538. data/doc/TaskJuggler/RichTextSyntaxRules.html +0 -2018
  539. data/doc/TaskJuggler/Scenario.html +0 -636
  540. data/doc/TaskJuggler/ScenarioData.html +0 -818
  541. data/doc/TaskJuggler/ScenarioListAttribute.html +0 -713
  542. data/doc/TaskJuggler/Scoreboard.html +0 -1181
  543. data/doc/TaskJuggler/SheetHandlerBase.html +0 -1275
  544. data/doc/TaskJuggler/SheetReceiver.html +0 -1368
  545. data/doc/TaskJuggler/SheetSender.html +0 -1134
  546. data/doc/TaskJuggler/Shift.html +0 -731
  547. data/doc/TaskJuggler/ShiftAssignment.html +0 -988
  548. data/doc/TaskJuggler/ShiftAssignments.html +0 -1393
  549. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +0 -714
  550. data/doc/TaskJuggler/ShiftScenario.html +0 -762
  551. data/doc/TaskJuggler/SimpleQueryExpander.html +0 -713
  552. data/doc/TaskJuggler/SortListAttribute.html +0 -671
  553. data/doc/TaskJuggler/SourceFileInfo.html +0 -740
  554. data/doc/TaskJuggler/StatusSheetReceiver.html +0 -658
  555. data/doc/TaskJuggler/StatusSheetReport.html +0 -910
  556. data/doc/TaskJuggler/StatusSheetSender.html +0 -788
  557. data/doc/TaskJuggler/StringAttribute.html +0 -713
  558. data/doc/TaskJuggler/SymbolAttribute.html +0 -671
  559. data/doc/TaskJuggler/SyntaxReference.html +0 -1220
  560. data/doc/TaskJuggler/TOCEntry.html +0 -816
  561. data/doc/TaskJuggler/TSResourceRecord.html +0 -712
  562. data/doc/TaskJuggler/TSTaskRecord.html +0 -724
  563. data/doc/TaskJuggler/TableColumnDefinition.html +0 -928
  564. data/doc/TaskJuggler/TableOfContents.html +0 -770
  565. data/doc/TaskJuggler/TableReport.html +0 -2533
  566. data/doc/TaskJuggler/Task.html +0 -865
  567. data/doc/TaskJuggler/TaskDependency.html +0 -772
  568. data/doc/TaskJuggler/TaskListAttribute.html +0 -753
  569. data/doc/TaskJuggler/TaskListRE.html +0 -716
  570. data/doc/TaskJuggler/TaskScenario.html +0 -4959
  571. data/doc/TaskJuggler/TextFormatter.html +0 -953
  572. data/doc/TaskJuggler/TextParser.html +0 -1773
  573. data/doc/TaskJuggler/TextParser/Pattern.html +0 -1717
  574. data/doc/TaskJuggler/TextParser/Rule.html +0 -1399
  575. data/doc/TaskJuggler/TextParser/StackElement.html +0 -922
  576. data/doc/TaskJuggler/TextParser/State.html +0 -995
  577. data/doc/TaskJuggler/TextParser/StateTransition.html +0 -788
  578. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +0 -691
  579. data/doc/TaskJuggler/TextParser/TokenDoc.html +0 -722
  580. data/doc/TaskJuggler/TextReport.html +0 -901
  581. data/doc/TaskJuggler/TextScanner.html +0 -1482
  582. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +0 -641
  583. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +0 -707
  584. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +0 -704
  585. data/doc/TaskJuggler/TextScanner/StreamHandle.html +0 -1036
  586. data/doc/TaskJuggler/TimeSheet.html +0 -1232
  587. data/doc/TaskJuggler/TimeSheetReceiver.html +0 -655
  588. data/doc/TaskJuggler/TimeSheetRecord.html +0 -1395
  589. data/doc/TaskJuggler/TimeSheetReport.html +0 -991
  590. data/doc/TaskJuggler/TimeSheetSender.html +0 -680
  591. data/doc/TaskJuggler/TimeSheetSummary.html +0 -935
  592. data/doc/TaskJuggler/TimeSheets.html +0 -716
  593. data/doc/TaskJuggler/Tj3AppBase.html +0 -831
  594. data/doc/TaskJuggler/Tj3Client.html +0 -1477
  595. data/doc/TaskJuggler/Tj3Daemon.html +0 -884
  596. data/doc/TaskJuggler/Tj3SheetAppBase.html +0 -738
  597. data/doc/TaskJuggler/Tj3SsReceiver.html +0 -724
  598. data/doc/TaskJuggler/Tj3SsSender.html +0 -757
  599. data/doc/TaskJuggler/Tj3TsReceiver.html +0 -724
  600. data/doc/TaskJuggler/Tj3TsSender.html +0 -744
  601. data/doc/TaskJuggler/Tj3TsSummary.html +0 -752
  602. data/doc/TaskJuggler/TjException.html +0 -672
  603. data/doc/TaskJuggler/TjTime.html +0 -2807
  604. data/doc/TaskJuggler/TjpExample.html +0 -877
  605. data/doc/TaskJuggler/TjpExportRE.html +0 -1598
  606. data/doc/TaskJuggler/TjpSyntaxRules.html +0 -13611
  607. data/doc/TaskJuggler/URLParameter.html +0 -671
  608. data/doc/TaskJuggler/UserManual.html +0 -1188
  609. data/doc/TaskJuggler/VimSyntax.html +0 -1044
  610. data/doc/TaskJuggler/WebServer.html +0 -737
  611. data/doc/TaskJuggler/WelcomePage.html +0 -769
  612. data/doc/TaskJuggler/WorkingHours.html +0 -1207
  613. data/doc/TaskJuggler/WorkingHoursAttribute.html +0 -736
  614. data/doc/TaskJuggler/XMLBlob.html +0 -687
  615. data/doc/TaskJuggler/XMLComment.html +0 -682
  616. data/doc/TaskJuggler/XMLDocument.html +0 -774
  617. data/doc/TaskJuggler/XMLElement.html +0 -942
  618. data/doc/TaskJuggler/XMLNamedText.html +0 -643
  619. data/doc/TaskJuggler/XMLText.html +0 -697
  620. data/doc/index.html +0 -4127
  621. data/doc/lib/AccountScenario_rb.html +0 -69
  622. data/doc/lib/Account_rb.html +0 -71
  623. data/doc/lib/Allocation_rb.html +0 -71
  624. data/doc/lib/AppConfig_rb.html +0 -71
  625. data/doc/lib/AttributeBase_rb.html +0 -69
  626. data/doc/lib/AttributeDefinition_rb.html +0 -67
  627. data/doc/lib/Attributes_rb.html +0 -83
  628. data/doc/lib/BatchProcessor_rb.html +0 -71
  629. data/doc/lib/Booking_rb.html +0 -67
  630. data/doc/lib/ChargeSet_rb.html +0 -69
  631. data/doc/lib/Charge_rb.html +0 -69
  632. data/doc/lib/DataCache_rb.html +0 -71
  633. data/doc/lib/FileList_rb.html +0 -67
  634. data/doc/lib/HTMLDocument_rb.html +0 -69
  635. data/doc/lib/IntervalList_rb.html +0 -69
  636. data/doc/lib/Interval_rb.html +0 -69
  637. data/doc/lib/Journal_rb.html +0 -67
  638. data/doc/lib/KeywordArray_rb.html +0 -67
  639. data/doc/lib/KeywordDocumentation_rb.html +0 -77
  640. data/doc/lib/Limits_rb.html +0 -69
  641. data/doc/lib/LogFile_rb.html +0 -69
  642. data/doc/lib/Log_rb.html +0 -71
  643. data/doc/lib/LogicalExpression_rb.html +0 -73
  644. data/doc/lib/LogicalFunction_rb.html +0 -69
  645. data/doc/lib/LogicalOperation_rb.html +0 -69
  646. data/doc/lib/MacroTable_rb.html +0 -73
  647. data/doc/lib/MessageHandler_rb.html +0 -67
  648. data/doc/lib/ProjectFileParser_rb.html +0 -77
  649. data/doc/lib/ProjectFileScanner_rb.html +0 -69
  650. data/doc/lib/Project_rb.html +0 -113
  651. data/doc/lib/PropertyList_rb.html +0 -67
  652. data/doc/lib/PropertySet_rb.html +0 -71
  653. data/doc/lib/PropertyTreeNode_rb.html +0 -67
  654. data/doc/lib/Query_rb.html +0 -69
  655. data/doc/lib/RTFHandlers_rb.html +0 -75
  656. data/doc/lib/RTFNavigator_rb.html +0 -73
  657. data/doc/lib/RTFQuery_rb.html +0 -73
  658. data/doc/lib/RTFReportLink_rb.html +0 -75
  659. data/doc/lib/RTFReport_rb.html +0 -71
  660. data/doc/lib/RTFWithQuerySupport_rb.html +0 -69
  661. data/doc/lib/RealFormat_rb.html +0 -67
  662. data/doc/lib/ResourceScenario_rb.html +0 -69
  663. data/doc/lib/Resource_rb.html +0 -71
  664. data/doc/lib/RichTextDocument_rb.html +0 -73
  665. data/doc/lib/RichTextElement_rb.html +0 -75
  666. data/doc/lib/RichTextFunctionExample_rb.html +0 -73
  667. data/doc/lib/RichTextFunctionHandler_rb.html +0 -67
  668. data/doc/lib/RichTextParser_rb.html +0 -73
  669. data/doc/lib/RichTextScanner_rb.html +0 -71
  670. data/doc/lib/RichTextSnip_rb.html +0 -71
  671. data/doc/lib/RichTextSyntaxRules_rb.html +0 -67
  672. data/doc/lib/RichText_rb.html +0 -73
  673. data/doc/lib/RuntimeConfig_rb.html +0 -69
  674. data/doc/lib/ScenarioData_rb.html +0 -71
  675. data/doc/lib/Scenario_rb.html +0 -69
  676. data/doc/lib/Scoreboard_rb.html +0 -69
  677. data/doc/lib/SheetHandlerBase_rb.html +0 -75
  678. data/doc/lib/SheetReceiver_rb.html +0 -79
  679. data/doc/lib/SheetSender_rb.html +0 -77
  680. data/doc/lib/ShiftAssignments_rb.html +0 -71
  681. data/doc/lib/ShiftScenario_rb.html +0 -69
  682. data/doc/lib/Shift_rb.html +0 -71
  683. data/doc/lib/SimpleQueryExpander_rb.html +0 -69
  684. data/doc/lib/SourceFileInfo_rb.html +0 -67
  685. data/doc/lib/StatusSheetReceiver_rb.html +0 -69
  686. data/doc/lib/StatusSheetSender_rb.html +0 -69
  687. data/doc/lib/SyntaxReference_rb.html +0 -75
  688. data/doc/lib/TOCEntry_rb.html +0 -71
  689. data/doc/lib/TableColumnDefinition_rb.html +0 -67
  690. data/doc/lib/TableOfContents_rb.html +0 -71
  691. data/doc/lib/TaskDependency_rb.html +0 -67
  692. data/doc/lib/TaskJuggler_rb.html +0 -75
  693. data/doc/lib/TaskScenario_rb.html +0 -71
  694. data/doc/lib/Task_rb.html +0 -71
  695. data/doc/lib/TextFormatter_rb.html +0 -69
  696. data/doc/lib/TextParser/Pattern_rb.html +0 -71
  697. data/doc/lib/TextParser/Rule_rb.html +0 -69
  698. data/doc/lib/TextParser/StackElement_rb.html +0 -69
  699. data/doc/lib/TextParser/State_rb.html +0 -67
  700. data/doc/lib/TextParser/TokenDoc_rb.html +0 -67
  701. data/doc/lib/TextParser_rb.html +0 -79
  702. data/doc/lib/TextScanner_rb.html +0 -83
  703. data/doc/lib/TimeSheetReceiver_rb.html +0 -69
  704. data/doc/lib/TimeSheetSender_rb.html +0 -69
  705. data/doc/lib/TimeSheetSummary_rb.html +0 -69
  706. data/doc/lib/TimeSheets_rb.html +0 -67
  707. data/doc/lib/Tj3AppBase_rb.html +0 -79
  708. data/doc/lib/Tj3Config_rb.html +0 -71
  709. data/doc/lib/Tj3SheetAppBase_rb.html +0 -69
  710. data/doc/lib/TjException_rb.html +0 -67
  711. data/doc/lib/TjTime_rb.html +0 -71
  712. data/doc/lib/TjpExample_rb.html +0 -69
  713. data/doc/lib/TjpSyntaxRules_rb.html +0 -67
  714. data/doc/lib/URLParameter_rb.html +0 -69
  715. data/doc/lib/UTF8String_rb.html +0 -67
  716. data/doc/lib/UserManual_rb.html +0 -79
  717. data/doc/lib/VimSyntax_rb.html +0 -69
  718. data/doc/lib/WorkingHours_rb.html +0 -71
  719. data/doc/lib/XMLDocument_rb.html +0 -69
  720. data/doc/lib/XMLElement_rb.html +0 -69
  721. data/doc/lib/daemon/Daemon_rb.html +0 -69
  722. data/doc/lib/daemon/ProcessIntercom_rb.html +0 -71
  723. data/doc/lib/daemon/ProjectBroker_rb.html +0 -83
  724. data/doc/lib/daemon/ProjectServer_rb.html +0 -85
  725. data/doc/lib/daemon/ReportServer_rb.html +0 -73
  726. data/doc/lib/daemon/ReportServlet_rb.html +0 -69
  727. data/doc/lib/daemon/WebServer_rb.html +0 -81
  728. data/doc/lib/daemon/WelcomePage_rb.html +0 -71
  729. data/doc/lib/deep_copy_rb.html +0 -67
  730. data/doc/lib/exchangebug_rb.html +0 -69
  731. data/doc/lib/reports/CSVFile_rb.html +0 -69
  732. data/doc/lib/reports/CollisionDetector_rb.html +0 -69
  733. data/doc/lib/reports/ColumnTable_rb.html +0 -69
  734. data/doc/lib/reports/GanttChart_rb.html +0 -75
  735. data/doc/lib/reports/GanttContainer_rb.html +0 -69
  736. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +0 -67
  737. data/doc/lib/reports/GanttHeader_rb.html +0 -69
  738. data/doc/lib/reports/GanttLine_rb.html +0 -79
  739. data/doc/lib/reports/GanttLoadStack_rb.html +0 -69
  740. data/doc/lib/reports/GanttMilestone_rb.html +0 -69
  741. data/doc/lib/reports/GanttRouter_rb.html +0 -69
  742. data/doc/lib/reports/GanttTaskBar_rb.html +0 -69
  743. data/doc/lib/reports/HTMLGraphics_rb.html +0 -67
  744. data/doc/lib/reports/Navigator_rb.html +0 -69
  745. data/doc/lib/reports/NikuReport_rb.html +0 -71
  746. data/doc/lib/reports/ReportBase_rb.html +0 -67
  747. data/doc/lib/reports/ReportContext_rb.html +0 -67
  748. data/doc/lib/reports/ReportTableCell_rb.html +0 -67
  749. data/doc/lib/reports/ReportTableColumn_rb.html +0 -67
  750. data/doc/lib/reports/ReportTableLegend_rb.html +0 -67
  751. data/doc/lib/reports/ReportTableLine_rb.html +0 -69
  752. data/doc/lib/reports/ReportTable_rb.html +0 -71
  753. data/doc/lib/reports/Report_rb.html +0 -93
  754. data/doc/lib/reports/ResourceListRE_rb.html +0 -75
  755. data/doc/lib/reports/StatusSheetReport_rb.html +0 -69
  756. data/doc/lib/reports/TableReport_rb.html +0 -77
  757. data/doc/lib/reports/TaskListRE_rb.html +0 -75
  758. data/doc/lib/reports/TextReport_rb.html +0 -69
  759. data/doc/lib/reports/TimeSheetReport_rb.html +0 -69
  760. data/doc/lib/reports/TjpExportRE_rb.html +0 -69
  761. data/doc/lib/ruby-signal-bug_rb.html +0 -69
  762. data/doc/lib/test_rb.html +0 -73
  763. data/doc/lib/tj3_rb.html +0 -75
  764. data/doc/lib/tj3client_rb.html +0 -75
  765. data/doc/lib/tj3d_rb.html +0 -75
  766. data/doc/lib/tj3man_rb.html +0 -75
  767. data/doc/lib/tj3ss_receiver_rb.html +0 -71
  768. data/doc/lib/tj3ss_sender_rb.html +0 -71
  769. data/doc/lib/tj3ts_receiver_rb.html +0 -71
  770. data/doc/lib/tj3ts_sender_rb.html +0 -71
  771. data/doc/lib/tj3ts_summary_rb.html +0 -71
  772. data/doc/rdoc.css +0 -706
  773. data/lib/test.rb +0 -19
  774. data/setup.rb +0 -1585
  775. data/test/TestSuite/CSV-Reports/genrefs +0 -6
  776. data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -2922
  777. data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
  778. data/test/TestSuite/Scheduler/Correct/Container.html +0 -513
  779. data/test/TestSuite/Scheduler/Correct/Precedes.html +0 -834
  780. data/test/TestSuite/Scheduler/Correct/Shift.html +0 -429
  781. data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
  782. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
  783. data/test/TestSuite/Scheduler/Errors/task_underspecified_2.tjp +0 -8
  784. data/test/TestSuite/Syntax/Correct/ReleasePlan.html +0 -160
  785. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
  786. data/test/TestSuite/Syntax/Correct/ResourceRoot.html +0 -108
  787. data/test/TestSuite/Syntax/Correct/niku.html +0 -67
@@ -1,2599 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
- <head>
6
- <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
7
-
8
- <title>Class: TaskJuggler::ResourceScenario</title>
9
-
10
- <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
-
12
- <script src="../js/jquery.js" type="text/javascript"
13
- charset="utf-8"></script>
14
- <script src="../js/thickbox-compressed.js" type="text/javascript"
15
- charset="utf-8"></script>
16
- <script src="../js/quicksearch.js" type="text/javascript"
17
- charset="utf-8"></script>
18
- <script src="../js/darkfish.js" type="text/javascript"
19
- charset="utf-8"></script>
20
-
21
- </head>
22
- <body class="class">
23
-
24
- <div id="metadata">
25
- <div id="home-metadata">
26
- <div id="home-section" class="section">
27
- <h3 class="section-header">
28
- <a href="../index.html">Home</a>
29
- <a href="../index.html#classes">Classes</a>
30
- <a href="../index.html#methods">Methods</a>
31
- </h3>
32
- </div>
33
- </div>
34
-
35
- <div id="file-metadata">
36
- <div id="file-list-section" class="section">
37
- <h3 class="section-header">In Files</h3>
38
- <div class="section-body">
39
- <ul>
40
-
41
- <li><a href="../lib/ResourceScenario_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
- class="thickbox" title="lib/ResourceScenario.rb">lib/ResourceScenario.rb</a></li>
43
-
44
- </ul>
45
- </div>
46
- </div>
47
-
48
-
49
- </div>
50
-
51
- <div id="class-metadata">
52
-
53
- <!-- Parent Class -->
54
-
55
- <div id="parent-class-section" class="section">
56
- <h3 class="section-header">Parent</h3>
57
-
58
- <p class="link"><a href="ScenarioData.html">TaskJuggler::ScenarioData</a></p>
59
-
60
- </div>
61
-
62
-
63
- <!-- Namespace Contents -->
64
-
65
-
66
- <!-- Method Quickref -->
67
-
68
- <div id="method-list-section" class="section">
69
- <h3 class="section-header">Methods</h3>
70
- <ul class="link-list">
71
-
72
- <li><a href="#method-c-new">::new</a></li>
73
-
74
- <li><a href="#method-i-allocated%3F">#allocated?</a></li>
75
-
76
- <li><a href="#method-i-allocatedSub">#allocatedSub</a></li>
77
-
78
- <li><a href="#method-i-available%3F">#available?</a></li>
79
-
80
- <li><a href="#method-i-book">#book</a></li>
81
-
82
- <li><a href="#method-i-bookBooking">#bookBooking</a></li>
83
-
84
- <li><a href="#method-i-booked%3F">#booked?</a></li>
85
-
86
- <li><a href="#method-i-calcCriticalness">#calcCriticalness</a></li>
87
-
88
- <li><a href="#method-i-collectTimeOffIntervals">#collectTimeOffIntervals</a></li>
89
-
90
- <li><a href="#method-i-cost">#cost</a></li>
91
-
92
- <li><a href="#method-i-finishScheduling">#finishScheduling</a></li>
93
-
94
- <li><a href="#method-i-fitIndicies">#fitIndicies</a></li>
95
-
96
- <li><a href="#method-i-getAllocatedSlots">#getAllocatedSlots</a></li>
97
-
98
- <li><a href="#method-i-getAllocatedTime">#getAllocatedTime</a></li>
99
-
100
- <li><a href="#method-i-getBookings">#getBookings</a></li>
101
-
102
- <li><a href="#method-i-getEffectiveFreeTime">#getEffectiveFreeTime</a></li>
103
-
104
- <li><a href="#method-i-getEffectiveFreeWork">#getEffectiveFreeWork</a></li>
105
-
106
- <li><a href="#method-i-getEffectiveWork">#getEffectiveWork</a></li>
107
-
108
- <li><a href="#method-i-getFreeSlots">#getFreeSlots</a></li>
109
-
110
- <li><a href="#method-i-getVacationDays">#getVacationDays</a></li>
111
-
112
- <li><a href="#method-i-getVacationSlots">#getVacationSlots</a></li>
113
-
114
- <li><a href="#method-i-initScoreboard">#initScoreboard</a></li>
115
-
116
- <li><a href="#method-i-onShift%3F">#onShift?</a></li>
117
-
118
- <li><a href="#method-i-postScheduleCheck">#postScheduleCheck</a></li>
119
-
120
- <li><a href="#method-i-preScheduleCheck">#preScheduleCheck</a></li>
121
-
122
- <li><a href="#method-i-prepareScheduling">#prepareScheduling</a></li>
123
-
124
- <li><a href="#method-i-query_cost">#query_cost</a></li>
125
-
126
- <li><a href="#method-i-query_effort">#query_effort</a></li>
127
-
128
- <li><a href="#method-i-query_freetime">#query_freetime</a></li>
129
-
130
- <li><a href="#method-i-query_freework">#query_freework</a></li>
131
-
132
- <li><a href="#method-i-query_rate">#query_rate</a></li>
133
-
134
- <li><a href="#method-i-query_revenue">#query_revenue</a></li>
135
-
136
- <li><a href="#method-i-query_vacationdays">#query_vacationdays</a></li>
137
-
138
- <li><a href="#method-i-rate">#rate</a></li>
139
-
140
- <li><a href="#method-i-setDirectReports">#setDirectReports</a></li>
141
-
142
- <li><a href="#method-i-setReports">#setReports</a></li>
143
-
144
- <li><a href="#method-i-setReports_i">#setReports_i</a></li>
145
-
146
- <li><a href="#method-i-turnover">#turnover</a></li>
147
-
148
- </ul>
149
- </div>
150
-
151
-
152
- <!-- Included Modules -->
153
-
154
- </div>
155
-
156
- <div id="project-metadata">
157
-
158
-
159
- <div id="fileindex-section" class="section project-section">
160
- <h3 class="section-header">Files</h3>
161
- <ul>
162
-
163
- <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
164
-
165
- <li class="file"><a href="../COPYING.html">COPYING</a></li>
166
-
167
- <li class="file"><a href="../README.html">README</a></li>
168
-
169
- </ul>
170
- </div>
171
-
172
-
173
- <div id="classindex-section" class="section project-section">
174
- <h3 class="section-header">Class Index
175
- <span class="search-toggle"><img src="../images/find.png"
176
- height="16" width="16" alt="[+]"
177
- title="show/hide quicksearch" /></span></h3>
178
- <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
179
- <fieldset>
180
- <legend>Quicksearch</legend>
181
- <input type="text" name="quicksearch" value=""
182
- class="quicksearch-field" />
183
- </fieldset>
184
- </form>
185
-
186
- <ul class="link-list">
187
-
188
- <li><a href="../TaskJuggler.html">TaskJuggler</a></li>
189
-
190
- <li><a href="../TaskJuggler/Account.html">TaskJuggler::Account</a></li>
191
-
192
- <li><a href="../TaskJuggler/AccountAttribute.html">TaskJuggler::AccountAttribute</a></li>
193
-
194
- <li><a href="../TaskJuggler/AccountScenario.html">TaskJuggler::AccountScenario</a></li>
195
-
196
- <li><a href="../TaskJuggler/Allocation.html">TaskJuggler::Allocation</a></li>
197
-
198
- <li><a href="../TaskJuggler/AllocationAttribute.html">TaskJuggler::AllocationAttribute</a></li>
199
-
200
- <li><a href="../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li>
201
-
202
- <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
203
-
204
- <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
205
-
206
- <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
207
-
208
- <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
209
-
210
- <li><a href="../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li>
211
-
212
- <li><a href="../TaskJuggler/BooleanAttribute.html">TaskJuggler::BooleanAttribute</a></li>
213
-
214
- <li><a href="../TaskJuggler/CSVFile.html">TaskJuggler::CSVFile</a></li>
215
-
216
- <li><a href="../TaskJuggler/CellSettingPattern.html">TaskJuggler::CellSettingPattern</a></li>
217
-
218
- <li><a href="../TaskJuggler/CellSettingPatternList.html">TaskJuggler::CellSettingPatternList</a></li>
219
-
220
- <li><a href="../TaskJuggler/Charge.html">TaskJuggler::Charge</a></li>
221
-
222
- <li><a href="../TaskJuggler/ChargeListAttribute.html">TaskJuggler::ChargeListAttribute</a></li>
223
-
224
- <li><a href="../TaskJuggler/ChargeSet.html">TaskJuggler::ChargeSet</a></li>
225
-
226
- <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
227
-
228
- <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
229
-
230
- <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
231
-
232
- <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
233
-
234
- <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
235
-
236
- <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
237
-
238
- <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
239
-
240
- <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
241
-
242
- <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
243
-
244
- <li><a href="../TaskJuggler/DependencyListAttribute.html">TaskJuggler::DependencyListAttribute</a></li>
245
-
246
- <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
247
-
248
- <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
249
-
250
- <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
251
-
252
- <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
253
-
254
- <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
255
-
256
- <li><a href="../TaskJuggler/FloatAttribute.html">TaskJuggler::FloatAttribute</a></li>
257
-
258
- <li><a href="../TaskJuggler/FormatListAttribute.html">TaskJuggler::FormatListAttribute</a></li>
259
-
260
- <li><a href="../TaskJuggler/GanttChart.html">TaskJuggler::GanttChart</a></li>
261
-
262
- <li><a href="../TaskJuggler/GanttContainer.html">TaskJuggler::GanttContainer</a></li>
263
-
264
- <li><a href="../TaskJuggler/GanttHeader.html">TaskJuggler::GanttHeader</a></li>
265
-
266
- <li><a href="../TaskJuggler/GanttHeaderScaleItem.html">TaskJuggler::GanttHeaderScaleItem</a></li>
267
-
268
- <li><a href="../TaskJuggler/GanttLine.html">TaskJuggler::GanttLine</a></li>
269
-
270
- <li><a href="../TaskJuggler/GanttLoadStack.html">TaskJuggler::GanttLoadStack</a></li>
271
-
272
- <li><a href="../TaskJuggler/GanttMilestone.html">TaskJuggler::GanttMilestone</a></li>
273
-
274
- <li><a href="../TaskJuggler/GanttRouter.html">TaskJuggler::GanttRouter</a></li>
275
-
276
- <li><a href="../TaskJuggler/GanttTaskBar.html">TaskJuggler::GanttTaskBar</a></li>
277
-
278
- <li><a href="../TaskJuggler/HTMLDocument.html">TaskJuggler::HTMLDocument</a></li>
279
-
280
- <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
281
-
282
- <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
283
-
284
- <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
285
-
286
- <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
287
-
288
- <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
289
-
290
- <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
291
-
292
- <li><a href="../TaskJuggler/JournalEntry.html">TaskJuggler::JournalEntry</a></li>
293
-
294
- <li><a href="../TaskJuggler/JournalEntryList.html">TaskJuggler::JournalEntryList</a></li>
295
-
296
- <li><a href="../TaskJuggler/KeywordArray.html">TaskJuggler::KeywordArray</a></li>
297
-
298
- <li><a href="../TaskJuggler/KeywordDocumentation.html">TaskJuggler::KeywordDocumentation</a></li>
299
-
300
- <li><a href="../TaskJuggler/Limits.html">TaskJuggler::Limits</a></li>
301
-
302
- <li><a href="../TaskJuggler/Limits/Limit.html">TaskJuggler::Limits::Limit</a></li>
303
-
304
- <li><a href="../TaskJuggler/LimitsAttribute.html">TaskJuggler::LimitsAttribute</a></li>
305
-
306
- <li><a href="../TaskJuggler/ListAttributeBase.html">TaskJuggler::ListAttributeBase</a></li>
307
-
308
- <li><a href="../TaskJuggler/Log.html">TaskJuggler::Log</a></li>
309
-
310
- <li><a href="../TaskJuggler/LogFile.html">TaskJuggler::LogFile</a></li>
311
-
312
- <li><a href="../TaskJuggler/LogicalAttribute.html">TaskJuggler::LogicalAttribute</a></li>
313
-
314
- <li><a href="../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li>
315
-
316
- <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
317
-
318
- <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
319
-
320
- <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
321
-
322
- <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
323
-
324
- <li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
325
-
326
- <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
327
-
328
- <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
329
-
330
- <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
331
-
332
- <li><a href="../TaskJuggler/ManagerStatusRecord.html">TaskJuggler::ManagerStatusRecord</a></li>
333
-
334
- <li><a href="../TaskJuggler/Message.html">TaskJuggler::Message</a></li>
335
-
336
- <li><a href="../TaskJuggler/MessageHandler.html">TaskJuggler::MessageHandler</a></li>
337
-
338
- <li><a href="../TaskJuggler/Navigator.html">TaskJuggler::Navigator</a></li>
339
-
340
- <li><a href="../TaskJuggler/NavigatorElement.html">TaskJuggler::NavigatorElement</a></li>
341
-
342
- <li><a href="../TaskJuggler/NikuProject.html">TaskJuggler::NikuProject</a></li>
343
-
344
- <li><a href="../TaskJuggler/NikuReport.html">TaskJuggler::NikuReport</a></li>
345
-
346
- <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
347
-
348
- <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
349
-
350
- <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
351
-
352
- <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
353
-
354
- <li><a href="../TaskJuggler/ProcessIntercomIface.html">TaskJuggler::ProcessIntercomIface</a></li>
355
-
356
- <li><a href="../TaskJuggler/Project.html">TaskJuggler::Project</a></li>
357
-
358
- <li><a href="../TaskJuggler/ProjectBroker.html">TaskJuggler::ProjectBroker</a></li>
359
-
360
- <li><a href="../TaskJuggler/ProjectBrokerIface.html">TaskJuggler::ProjectBrokerIface</a></li>
361
-
362
- <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
363
-
364
- <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
365
-
366
- <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
367
-
368
- <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
369
-
370
- <li><a href="../TaskJuggler/ProjectServerIface.html">TaskJuggler::ProjectServerIface</a></li>
371
-
372
- <li><a href="../TaskJuggler/PropertyAttribute.html">TaskJuggler::PropertyAttribute</a></li>
373
-
374
- <li><a href="../TaskJuggler/PropertyList.html">TaskJuggler::PropertyList</a></li>
375
-
376
- <li><a href="../TaskJuggler/PropertySet.html">TaskJuggler::PropertySet</a></li>
377
-
378
- <li><a href="../TaskJuggler/PropertyTreeNode.html">TaskJuggler::PropertyTreeNode</a></li>
379
-
380
- <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
381
-
382
- <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
383
-
384
- <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
385
-
386
- <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
387
-
388
- <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
389
-
390
- <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
391
-
392
- <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
393
-
394
- <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
395
-
396
- <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
397
-
398
- <li><a href="../TaskJuggler/ReferenceAttribute.html">TaskJuggler::ReferenceAttribute</a></li>
399
-
400
- <li><a href="../TaskJuggler/Report.html">TaskJuggler::Report</a></li>
401
-
402
- <li><a href="../TaskJuggler/ReportBase.html">TaskJuggler::ReportBase</a></li>
403
-
404
- <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
405
-
406
- <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
407
-
408
- <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
409
-
410
- <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
411
-
412
- <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
413
-
414
- <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
415
-
416
- <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
417
-
418
- <li><a href="../TaskJuggler/ReportTableColumn.html">TaskJuggler::ReportTableColumn</a></li>
419
-
420
- <li><a href="../TaskJuggler/ReportTableLegend.html">TaskJuggler::ReportTableLegend</a></li>
421
-
422
- <li><a href="../TaskJuggler/ReportTableLine.html">TaskJuggler::ReportTableLine</a></li>
423
-
424
- <li><a href="../TaskJuggler/Resource.html">TaskJuggler::Resource</a></li>
425
-
426
- <li><a href="../TaskJuggler/ResourceListAttribute.html">TaskJuggler::ResourceListAttribute</a></li>
427
-
428
- <li><a href="../TaskJuggler/ResourceListRE.html">TaskJuggler::ResourceListRE</a></li>
429
-
430
- <li><a href="../TaskJuggler/ResourceScenario.html">TaskJuggler::ResourceScenario</a></li>
431
-
432
- <li><a href="../TaskJuggler/RichText.html">TaskJuggler::RichText</a></li>
433
-
434
- <li><a href="../TaskJuggler/RichTextAttribute.html">TaskJuggler::RichTextAttribute</a></li>
435
-
436
- <li><a href="../TaskJuggler/RichTextDocument.html">TaskJuggler::RichTextDocument</a></li>
437
-
438
- <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
439
-
440
- <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
441
-
442
- <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
443
-
444
- <li><a href="../TaskJuggler/RichTextImage.html">TaskJuggler::RichTextImage</a></li>
445
-
446
- <li><a href="../TaskJuggler/RichTextIntermediate.html">TaskJuggler::RichTextIntermediate</a></li>
447
-
448
- <li><a href="../TaskJuggler/RichTextParser.html">TaskJuggler::RichTextParser</a></li>
449
-
450
- <li><a href="../TaskJuggler/RichTextScanner.html">TaskJuggler::RichTextScanner</a></li>
451
-
452
- <li><a href="../TaskJuggler/RichTextSnip.html">TaskJuggler::RichTextSnip</a></li>
453
-
454
- <li><a href="../TaskJuggler/RichTextSyntaxRules.html">TaskJuggler::RichTextSyntaxRules</a></li>
455
-
456
- <li><a href="../TaskJuggler/Scenario.html">TaskJuggler::Scenario</a></li>
457
-
458
- <li><a href="../TaskJuggler/ScenarioData.html">TaskJuggler::ScenarioData</a></li>
459
-
460
- <li><a href="../TaskJuggler/ScenarioListAttribute.html">TaskJuggler::ScenarioListAttribute</a></li>
461
-
462
- <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
463
-
464
- <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
465
-
466
- <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
467
-
468
- <li><a href="../TaskJuggler/SheetSender.html">TaskJuggler::SheetSender</a></li>
469
-
470
- <li><a href="../TaskJuggler/Shift.html">TaskJuggler::Shift</a></li>
471
-
472
- <li><a href="../TaskJuggler/ShiftAssignment.html">TaskJuggler::ShiftAssignment</a></li>
473
-
474
- <li><a href="../TaskJuggler/ShiftAssignments.html">TaskJuggler::ShiftAssignments</a></li>
475
-
476
- <li><a href="../TaskJuggler/ShiftAssignmentsAttribute.html">TaskJuggler::ShiftAssignmentsAttribute</a></li>
477
-
478
- <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
479
-
480
- <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
481
-
482
- <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
483
-
484
- <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
485
-
486
- <li><a href="../TaskJuggler/StatusSheetReceiver.html">TaskJuggler::StatusSheetReceiver</a></li>
487
-
488
- <li><a href="../TaskJuggler/StatusSheetReport.html">TaskJuggler::StatusSheetReport</a></li>
489
-
490
- <li><a href="../TaskJuggler/StatusSheetSender.html">TaskJuggler::StatusSheetSender</a></li>
491
-
492
- <li><a href="../TaskJuggler/StringAttribute.html">TaskJuggler::StringAttribute</a></li>
493
-
494
- <li><a href="../TaskJuggler/SymbolAttribute.html">TaskJuggler::SymbolAttribute</a></li>
495
-
496
- <li><a href="../TaskJuggler/SyntaxReference.html">TaskJuggler::SyntaxReference</a></li>
497
-
498
- <li><a href="../TaskJuggler/TOCEntry.html">TaskJuggler::TOCEntry</a></li>
499
-
500
- <li><a href="../TaskJuggler/TSResourceRecord.html">TaskJuggler::TSResourceRecord</a></li>
501
-
502
- <li><a href="../TaskJuggler/TSTaskRecord.html">TaskJuggler::TSTaskRecord</a></li>
503
-
504
- <li><a href="../TaskJuggler/TableColumnDefinition.html">TaskJuggler::TableColumnDefinition</a></li>
505
-
506
- <li><a href="../TaskJuggler/TableOfContents.html">TaskJuggler::TableOfContents</a></li>
507
-
508
- <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
509
-
510
- <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
511
-
512
- <li><a href="../TaskJuggler/TaskDependency.html">TaskJuggler::TaskDependency</a></li>
513
-
514
- <li><a href="../TaskJuggler/TaskListAttribute.html">TaskJuggler::TaskListAttribute</a></li>
515
-
516
- <li><a href="../TaskJuggler/TaskListRE.html">TaskJuggler::TaskListRE</a></li>
517
-
518
- <li><a href="../TaskJuggler/TaskScenario.html">TaskJuggler::TaskScenario</a></li>
519
-
520
- <li><a href="../TaskJuggler/TextFormatter.html">TaskJuggler::TextFormatter</a></li>
521
-
522
- <li><a href="../TaskJuggler/TextParser.html">TaskJuggler::TextParser</a></li>
523
-
524
- <li><a href="../TaskJuggler/TextParser/Pattern.html">TaskJuggler::TextParser::Pattern</a></li>
525
-
526
- <li><a href="../TaskJuggler/TextParser/Rule.html">TaskJuggler::TextParser::Rule</a></li>
527
-
528
- <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
529
-
530
- <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
531
-
532
- <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
533
-
534
- <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
535
-
536
- <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
537
-
538
- <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
539
-
540
- <li><a href="../TaskJuggler/TextScanner.html">TaskJuggler::TextScanner</a></li>
541
-
542
- <li><a href="../TaskJuggler/TextScanner/BufferStreamHandle.html">TaskJuggler::TextScanner::BufferStreamHandle</a></li>
543
-
544
- <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
545
-
546
- <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
547
-
548
- <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
549
-
550
- <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
551
-
552
- <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
553
-
554
- <li><a href="../TaskJuggler/TimeSheetRecord.html">TaskJuggler::TimeSheetRecord</a></li>
555
-
556
- <li><a href="../TaskJuggler/TimeSheetReport.html">TaskJuggler::TimeSheetReport</a></li>
557
-
558
- <li><a href="../TaskJuggler/TimeSheetSender.html">TaskJuggler::TimeSheetSender</a></li>
559
-
560
- <li><a href="../TaskJuggler/TimeSheetSummary.html">TaskJuggler::TimeSheetSummary</a></li>
561
-
562
- <li><a href="../TaskJuggler/TimeSheets.html">TaskJuggler::TimeSheets</a></li>
563
-
564
- <li><a href="../TaskJuggler/Tj3AppBase.html">TaskJuggler::Tj3AppBase</a></li>
565
-
566
- <li><a href="../TaskJuggler/Tj3Client.html">TaskJuggler::Tj3Client</a></li>
567
-
568
- <li><a href="../TaskJuggler/Tj3Daemon.html">TaskJuggler::Tj3Daemon</a></li>
569
-
570
- <li><a href="../TaskJuggler/Tj3SheetAppBase.html">TaskJuggler::Tj3SheetAppBase</a></li>
571
-
572
- <li><a href="../TaskJuggler/Tj3SsReceiver.html">TaskJuggler::Tj3SsReceiver</a></li>
573
-
574
- <li><a href="../TaskJuggler/Tj3SsSender.html">TaskJuggler::Tj3SsSender</a></li>
575
-
576
- <li><a href="../TaskJuggler/Tj3TsReceiver.html">TaskJuggler::Tj3TsReceiver</a></li>
577
-
578
- <li><a href="../TaskJuggler/Tj3TsSender.html">TaskJuggler::Tj3TsSender</a></li>
579
-
580
- <li><a href="../TaskJuggler/Tj3TsSummary.html">TaskJuggler::Tj3TsSummary</a></li>
581
-
582
- <li><a href="../TaskJuggler/TjException.html">TaskJuggler::TjException</a></li>
583
-
584
- <li><a href="../TaskJuggler/TjTime.html">TaskJuggler::TjTime</a></li>
585
-
586
- <li><a href="../TaskJuggler/TjpExample.html">TaskJuggler::TjpExample</a></li>
587
-
588
- <li><a href="../TaskJuggler/TjpExportRE.html">TaskJuggler::TjpExportRE</a></li>
589
-
590
- <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
591
-
592
- <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
593
-
594
- <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
595
-
596
- <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
597
-
598
- <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
599
-
600
- <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
601
-
602
- <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
603
-
604
- <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
605
-
606
- <li><a href="../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li>
607
-
608
- <li><a href="../TaskJuggler/XMLComment.html">TaskJuggler::XMLComment</a></li>
609
-
610
- <li><a href="../TaskJuggler/XMLDocument.html">TaskJuggler::XMLDocument</a></li>
611
-
612
- <li><a href="../TaskJuggler/XMLElement.html">TaskJuggler::XMLElement</a></li>
613
-
614
- <li><a href="../TaskJuggler/XMLNamedText.html">TaskJuggler::XMLNamedText</a></li>
615
-
616
- <li><a href="../TaskJuggler/XMLText.html">TaskJuggler::XMLText</a></li>
617
-
618
- <li><a href="../AppConfig.html">AppConfig</a></li>
619
-
620
- <li><a href="../Arguments.html">Arguments</a></li>
621
-
622
- <li><a href="../Object.html">Object</a></li>
623
-
624
- <li><a href="../RuntimeConfig.html">RuntimeConfig</a></li>
625
-
626
- <li><a href="../String.html">String</a></li>
627
-
628
- </ul>
629
- <div id="no-class-search-results" style="display: none;">No matching classes.</div>
630
- </div>
631
-
632
-
633
- </div>
634
- </div>
635
-
636
- <div id="documentation">
637
- <h1 class="class">TaskJuggler::ResourceScenario</h1>
638
-
639
- <div id="description">
640
-
641
- </div>
642
-
643
- <!-- Constants -->
644
-
645
-
646
- <!-- Attributes -->
647
-
648
-
649
- <!-- Methods -->
650
-
651
- <div id="public-class-method-details" class="method-section section">
652
- <h3 class="section-header">Public Class Methods</h3>
653
-
654
-
655
- <div id="new-method" class="method-detail ">
656
- <a name="method-c-new"></a>
657
-
658
- <div class="method-heading">
659
-
660
- <span class="method-name">new</span><span
661
- class="method-args">(resource, scenarioIdx, attributes)</span>
662
- <span class="method-click-advice">click to toggle source</span>
663
-
664
- </div>
665
-
666
- <div class="method-description">
667
-
668
-
669
-
670
-
671
-
672
- <div class="method-source-code"
673
- id="new-source">
674
- <pre>
675
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 21</span>
676
- 21: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">resource</span>, <span class="ruby-identifier">scenarioIdx</span>, <span class="ruby-identifier">attributes</span>)
677
- 22: <span class="ruby-keyword kw">super</span>
678
- 23:
679
- 24: <span class="ruby-comment cmt"># Scoreboard may be nil, a Task, or a bit vector encoded as a Fixnum</span>
680
- 25: <span class="ruby-comment cmt"># nil: Value has not been determined yet.</span>
681
- 26: <span class="ruby-comment cmt"># Task: A reference to a Task object</span>
682
- 27: <span class="ruby-comment cmt"># Bit 0: Reserved</span>
683
- 28: <span class="ruby-comment cmt"># Bit 1: 0: Work time</span>
684
- 29: <span class="ruby-comment cmt"># 1: Off time</span>
685
- 30: <span class="ruby-comment cmt"># Bit 2 - 5: 0: No vacation or leave time</span>
686
- 31: <span class="ruby-comment cmt"># 1: Regular vacation</span>
687
- 32: <span class="ruby-comment cmt"># 2 - 15: Reserved</span>
688
- 33: <span class="ruby-comment cmt"># Bit 6: Reserved</span>
689
- 34: <span class="ruby-comment cmt"># Bit 7: 0: No global override</span>
690
- 35: <span class="ruby-comment cmt"># 1: Override global setting</span>
691
- 36: <span class="ruby-comment cmt"># The scoreboard is only created when needed to save memory for projects</span>
692
- 37: <span class="ruby-comment cmt"># which read-in the coporate employee database but only need a small</span>
693
- 38: <span class="ruby-comment cmt"># subset.</span>
694
- 39: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
695
- 40:
696
- 41: <span class="ruby-comment cmt"># The index of the earliest booked time slot.</span>
697
- 42: <span class="ruby-ivar">@firstBookedSlot</span> = <span class="ruby-keyword kw">nil</span>
698
- 43: <span class="ruby-comment cmt"># Same but for each assigned resource.</span>
699
- 44: <span class="ruby-ivar">@firstBookedSlots</span> = {}
700
- 45: <span class="ruby-comment cmt"># The index of the last booked time Slot.</span>
701
- 46: <span class="ruby-ivar">@lastBookedSlot</span> = <span class="ruby-keyword kw">nil</span>
702
- 47: <span class="ruby-comment cmt"># Same but for each assigned resource.</span>
703
- 48: <span class="ruby-ivar">@lastBookedSlots</span> = {}
704
- 49:
705
- 50: <span class="ruby-ivar">@dCache</span> = <span class="ruby-constant">DataCache</span>.<span class="ruby-identifier">instance</span>
706
- 51: <span class="ruby-keyword kw">end</span></pre>
707
- </div>
708
-
709
- </div>
710
-
711
-
712
-
713
-
714
- </div>
715
-
716
-
717
- </div>
718
-
719
- <div id="public-instance-method-details" class="method-section section">
720
- <h3 class="section-header">Public Instance Methods</h3>
721
-
722
-
723
- <div id="allocated--method" class="method-detail ">
724
- <a name="method-i-allocated%3F"></a>
725
-
726
- <div class="method-heading">
727
-
728
- <span class="method-name">allocated?</span><span
729
- class="method-args">(iv, task = nil)</span>
730
- <span class="method-click-advice">click to toggle source</span>
731
-
732
- </div>
733
-
734
- <div class="method-description">
735
-
736
- <p>
737
- Returns true if the resource or any of its children is allocated during the
738
- period specified with the <a href="Interval.html">Interval</a> <em>iv</em>.
739
- If task is not nil only allocations to this tasks are respected.
740
- </p>
741
-
742
-
743
-
744
- <div class="method-source-code"
745
- id="allocated--source">
746
- <pre>
747
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 475</span>
748
- 475: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">allocated?</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">task</span> = <span class="ruby-keyword kw">nil</span>)
749
- 476: <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">task</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'duties'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
750
- 477:
751
- 478: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">iv</span>.<span class="ruby-identifier">start</span>, <span class="ruby-keyword kw">true</span>)
752
- 479: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">iv</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">true</span>)
753
- 480:
754
- 481: <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">fitIndicies</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>)
755
- 482: <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">startIdx</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">endIdx</span>
756
- 483:
757
- 484: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">allocatedSub</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>)
758
- 485: <span class="ruby-keyword kw">end</span></pre>
759
- </div>
760
-
761
- </div>
762
-
763
-
764
-
765
-
766
- </div>
767
-
768
-
769
- <div id="available--method" class="method-detail ">
770
- <a name="method-i-available%3F"></a>
771
-
772
- <div class="method-heading">
773
-
774
- <span class="method-name">available?</span><span
775
- class="method-args">(sbIdx)</span>
776
- <span class="method-click-advice">click to toggle source</span>
777
-
778
- </div>
779
-
780
- <div class="method-description">
781
-
782
- <p>
783
- Returns true if the resource is available at the time specified by
784
- <em>sbIdx</em>.
785
- </p>
786
-
787
-
788
-
789
- <div class="method-source-code"
790
- id="available--source">
791
- <pre>
792
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 172</span>
793
- 172: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">available?</span>(<span class="ruby-identifier">sbIdx</span>)
794
- 173: <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">@scoreboard</span>[<span class="ruby-identifier">sbIdx</span>].<span class="ruby-identifier">nil?</span>
795
- 174:
796
- 175: <span class="ruby-identifier">limits</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'limits'</span>)
797
- 176: <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">limits</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">limits</span>.<span class="ruby-identifier">ok?</span>(<span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">sbIdx</span>))
798
- 177:
799
- 178: <span class="ruby-keyword kw">true</span>
800
- 179: <span class="ruby-keyword kw">end</span></pre>
801
- </div>
802
-
803
- </div>
804
-
805
-
806
-
807
-
808
- </div>
809
-
810
-
811
- <div id="book-method" class="method-detail ">
812
- <a name="method-i-book"></a>
813
-
814
- <div class="method-heading">
815
-
816
- <span class="method-name">book</span><span
817
- class="method-args">(sbIdx, task, force = false)</span>
818
- <span class="method-click-advice">click to toggle source</span>
819
-
820
- </div>
821
-
822
- <div class="method-description">
823
-
824
- <p>
825
- Book the slot indicated by the scoreboard index <tt>sbIdx</tt> for <a
826
- href="Task.html">Task</a> <tt>task</tt>. If <tt>force</tt> is true,
827
- overwrite the existing booking for this slot. The method returns true if
828
- the slot was available.
829
- </p>
830
-
831
-
832
-
833
- <div class="method-source-code"
834
- id="book-source">
835
- <pre>
836
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 190</span>
837
- 190: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">book</span>(<span class="ruby-identifier">sbIdx</span>, <span class="ruby-identifier">task</span>, <span class="ruby-identifier">force</span> = <span class="ruby-keyword kw">false</span>)
838
- 191: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">force</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">available?</span>(<span class="ruby-identifier">sbIdx</span>)
839
- 192:
840
- 193: <span class="ruby-comment cmt"># Make sure the task is in the list of duties.</span>
841
- 194: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duties'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
842
- 195: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'duties'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">task</span>
843
- 196: <span class="ruby-keyword kw">end</span>
844
- 197:
845
- 198: <span class="ruby-comment cmt">#puts &quot;Booking resource #{@property.fullId} at &quot; +</span>
846
- 199: <span class="ruby-comment cmt"># &quot;#{@scoreboard.idxToDate(sbIdx)}/#{sbIdx} for task #{task.fullId}\n&quot;</span>
847
- 200: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">sbIdx</span>] = <span class="ruby-identifier">task</span>
848
- 201: <span class="ruby-comment cmt"># Track the total allocated slots for this resource and all parent</span>
849
- 202: <span class="ruby-comment cmt"># resources.</span>
850
- 203: <span class="ruby-identifier">t</span> = <span class="ruby-ivar">@property</span>
851
- 204: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">t</span>
852
- 205: <span class="ruby-identifier">t</span>[<span class="ruby-value str">'effort'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
853
- 206: <span class="ruby-identifier">t</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">parent</span>
854
- 207: <span class="ruby-keyword kw">end</span>
855
- 208: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'limits'</span>).<span class="ruby-identifier">inc</span>(<span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">sbIdx</span>)) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'limits'</span>)
856
- 209:
857
- 210: <span class="ruby-comment cmt"># Scoreboard iterations are fairly expensive but they are very frequent</span>
858
- 211: <span class="ruby-comment cmt"># operations in later processing. To limit the interations to the</span>
859
- 212: <span class="ruby-comment cmt"># relevant intervals, we store the interval for all bookings and for</span>
860
- 213: <span class="ruby-comment cmt"># each individual task.</span>
861
- 214: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@firstBookedSlot</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@firstBookedSlot</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">sbIdx</span>
862
- 215: <span class="ruby-ivar">@firstBookedSlot</span> = <span class="ruby-identifier">sbIdx</span>
863
- 216: <span class="ruby-keyword kw">end</span>
864
- 217: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@lastBookedSlot</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@lastBookedSlot</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">sbIdx</span>
865
- 218: <span class="ruby-ivar">@lastBookedSlot</span> = <span class="ruby-identifier">sbIdx</span>
866
- 219: <span class="ruby-keyword kw">end</span>
867
- 220: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>
868
- 221: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@firstBookedSlots</span>[<span class="ruby-identifier">task</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@firstBookedSlots</span>[<span class="ruby-identifier">task</span>] <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">sbIdx</span>
869
- 222: <span class="ruby-ivar">@firstBookedSlots</span>[<span class="ruby-identifier">task</span>] = <span class="ruby-identifier">sbIdx</span>
870
- 223: <span class="ruby-keyword kw">end</span>
871
- 224: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@lastBookedSlots</span>[<span class="ruby-identifier">task</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@lastBookedSlots</span>[<span class="ruby-identifier">task</span>] <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">sbIdx</span>
872
- 225: <span class="ruby-ivar">@lastBookedSlots</span>[<span class="ruby-identifier">task</span>] = <span class="ruby-identifier">sbIdx</span>
873
- 226: <span class="ruby-keyword kw">end</span>
874
- 227: <span class="ruby-keyword kw">end</span>
875
- 228: <span class="ruby-keyword kw">true</span>
876
- 229: <span class="ruby-keyword kw">end</span></pre>
877
- </div>
878
-
879
- </div>
880
-
881
-
882
-
883
-
884
- </div>
885
-
886
-
887
- <div id="book-ooking-method" class="method-detail ">
888
- <a name="method-i-bookBooking"></a>
889
-
890
- <div class="method-heading">
891
-
892
- <span class="method-name">bookBooking</span><span
893
- class="method-args">(sbIdx, booking)</span>
894
- <span class="method-click-advice">click to toggle source</span>
895
-
896
- </div>
897
-
898
- <div class="method-description">
899
-
900
-
901
-
902
-
903
-
904
- <div class="method-source-code"
905
- id="book-ooking-source">
906
- <pre>
907
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 231</span>
908
- 231: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">bookBooking</span>(<span class="ruby-identifier">sbIdx</span>, <span class="ruby-identifier">booking</span>)
909
- 232: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">nil?</span>
910
- 233:
911
- 234: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">sbIdx</span>].<span class="ruby-identifier">nil?</span>
912
- 235: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">booked?</span>(<span class="ruby-identifier">sbIdx</span>)
913
- 236: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'booking_conflict'</span>,
914
- 237: <span class="ruby-node">&quot;Resource #{@property.fullId} has multiple conflicting &quot;</span> <span class="ruby-operator">+</span>
915
- 238: <span class="ruby-node">&quot;bookings for #{@scoreboard.idxToDate(sbIdx)}. The &quot;</span> <span class="ruby-operator">+</span>
916
- 239: <span class="ruby-node">&quot;conflicting tasks are #{@scoreboard[sbIdx].fullId} and &quot;</span> <span class="ruby-operator">+</span>
917
- 240: <span class="ruby-node">&quot;#{booking.task.fullId}.&quot;</span>, <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">sourceFileInfo</span>)
918
- 241: <span class="ruby-keyword kw">end</span>
919
- 242: <span class="ruby-identifier">val</span> = <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">sbIdx</span>]
920
- 243: <span class="ruby-keyword kw">if</span> ((<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">2</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">overtime</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">1</span>)
921
- 244: <span class="ruby-comment cmt"># The booking is blocked due to the overtime attribute. Now let's</span>
922
- 245: <span class="ruby-comment cmt"># see if the user wants to be warned about it.</span>
923
- 246: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">sloppy</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">1</span>
924
- 247: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'booking_no_duty'</span>,
925
- 248: <span class="ruby-node">&quot;Resource #{@property.fullId} has no duty at &quot;</span> <span class="ruby-operator">+</span>
926
- 249: <span class="ruby-node">&quot;#{@scoreboard.idxToDate(sbIdx)}.&quot;</span>,
927
- 250: <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">sourceFileInfo</span>)
928
- 251: <span class="ruby-keyword kw">end</span>
929
- 252: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
930
- 253: <span class="ruby-keyword kw">end</span>
931
- 254: <span class="ruby-keyword kw">if</span> ((<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x3C</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">overtime</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">2</span>)
932
- 255: <span class="ruby-comment cmt"># The booking is blocked due to the overtime attribute. Now let's</span>
933
- 256: <span class="ruby-comment cmt"># see if the user wants to be warned about it.</span>
934
- 257: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">sloppy</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">2</span>
935
- 258: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'booking_on_vacation'</span>,
936
- 259: <span class="ruby-node">&quot;Resource #{@property.fullId} is on vacation at &quot;</span> <span class="ruby-operator">+</span>
937
- 260: <span class="ruby-node">&quot;#{@scoreboard.idxToDate(sbIdx)}.&quot;</span>,
938
- 261: <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">sourceFileInfo</span>)
939
- 262: <span class="ruby-keyword kw">end</span>
940
- 263: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
941
- 264: <span class="ruby-keyword kw">end</span>
942
- 265: <span class="ruby-keyword kw">end</span>
943
- 266:
944
- 267: <span class="ruby-identifier">book</span>(<span class="ruby-identifier">sbIdx</span>, <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">task</span>, <span class="ruby-keyword kw">true</span>)
945
- 268: <span class="ruby-keyword kw">end</span></pre>
946
- </div>
947
-
948
- </div>
949
-
950
-
951
-
952
-
953
- </div>
954
-
955
-
956
- <div id="booked--method" class="method-detail ">
957
- <a name="method-i-booked%3F"></a>
958
-
959
- <div class="method-heading">
960
-
961
- <span class="method-name">booked?</span><span
962
- class="method-args">(sbIdx)</span>
963
- <span class="method-click-advice">click to toggle source</span>
964
-
965
- </div>
966
-
967
- <div class="method-description">
968
-
969
- <p>
970
- Return true if the resource is booked for a tasks at the time specified by
971
- <em>sbIdx</em>.
972
- </p>
973
-
974
-
975
-
976
- <div class="method-source-code"
977
- id="booked--source">
978
- <pre>
979
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 183</span>
980
- 183: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">booked?</span>(<span class="ruby-identifier">sbIdx</span>)
981
- 184: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">sbIdx</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>)
982
- 185: <span class="ruby-keyword kw">end</span></pre>
983
- </div>
984
-
985
- </div>
986
-
987
-
988
-
989
-
990
- </div>
991
-
992
-
993
- <div id="calc-riticalness-method" class="method-detail ">
994
- <a name="method-i-calcCriticalness"></a>
995
-
996
- <div class="method-heading">
997
-
998
- <span class="method-name">calcCriticalness</span><span
999
- class="method-args">()</span>
1000
- <span class="method-click-advice">click to toggle source</span>
1001
-
1002
- </div>
1003
-
1004
- <div class="method-description">
1005
-
1006
- <p>
1007
- The criticalness of a resource is a measure for the probabilty that all
1008
- allocations can be fullfilled. The smaller the value, the more likely will
1009
- the tasks get the resource. A value above 1.0 means that statistically some
1010
- tasks will not get their resources. A value between 0 and 1 implies no
1011
- guarantee, though.
1012
- </p>
1013
-
1014
-
1015
-
1016
- <div class="method-source-code"
1017
- id="calc-riticalness-source">
1018
- <pre>
1019
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 67</span>
1020
- 67: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">calcCriticalness</span>
1021
- 68: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">nil?</span>
1022
- 69: <span class="ruby-comment cmt"># Resources that are not allocated are not critical at all.</span>
1023
- 70: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'criticalness'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-value">0.0</span>
1024
- 71: <span class="ruby-keyword kw">else</span>
1025
- 72: <span class="ruby-identifier">freeSlots</span> = <span class="ruby-value">0</span>
1026
- 73: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">slot</span><span class="ruby-operator">|</span>
1027
- 74: <span class="ruby-identifier">freeSlots</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">slot</span>.<span class="ruby-identifier">nil?</span>
1028
- 75: <span class="ruby-keyword kw">end</span>
1029
- 76: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'criticalness'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-identifier">freeSlots</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-value">1.0</span> <span class="ruby-operator">:</span>
1030
- 77: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'alloctdeffort'</span>) <span class="ruby-operator">/</span> <span class="ruby-identifier">freeSlots</span>
1031
- 78: <span class="ruby-keyword kw">end</span>
1032
- 79: <span class="ruby-keyword kw">end</span></pre>
1033
- </div>
1034
-
1035
- </div>
1036
-
1037
-
1038
-
1039
-
1040
- </div>
1041
-
1042
-
1043
- <div id="collect-ime-ff-ntervals-method" class="method-detail ">
1044
- <a name="method-i-collectTimeOffIntervals"></a>
1045
-
1046
- <div class="method-heading">
1047
-
1048
- <span class="method-name">collectTimeOffIntervals</span><span
1049
- class="method-args">(iv, minDuration)</span>
1050
- <span class="method-click-advice">click to toggle source</span>
1051
-
1052
- </div>
1053
-
1054
- <div class="method-description">
1055
-
1056
- <p>
1057
- Return a list of scoreboard intervals that are at least
1058
- <em>minDuration</em> long and contain only off-duty and vacation slots. The
1059
- result is an Array of
1060
- </p>
1061
- <dl>
1062
- <dt> start, end </dt><dd><p>
1063
- <a href="TjTime.html">TjTime</a> values.
1064
- </p>
1065
- </dd>
1066
- </dl>
1067
-
1068
-
1069
-
1070
- <div class="method-source-code"
1071
- id="collect-ime-ff-ntervals-source">
1072
- <pre>
1073
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 546</span>
1074
- 546: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collectTimeOffIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>)
1075
- 547: <span class="ruby-comment cmt"># Time-off intervals are only useful for leaf resources. Group resources</span>
1076
- 548: <span class="ruby-comment cmt"># would just default to the global working hours.</span>
1077
- 549: <span class="ruby-keyword kw">return</span> [] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">leaf?</span>
1078
- 550:
1079
- 551: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">nil?</span>
1080
- 552:
1081
- 553: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">collectIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
1082
- 554: <span class="ruby-identifier">val</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x3E</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1083
- 555: <span class="ruby-keyword kw">end</span>
1084
- 556: <span class="ruby-keyword kw">end</span></pre>
1085
- </div>
1086
-
1087
- </div>
1088
-
1089
-
1090
-
1091
-
1092
- </div>
1093
-
1094
-
1095
- <div id="cost-method" class="method-detail ">
1096
- <a name="method-i-cost"></a>
1097
-
1098
- <div class="method-heading">
1099
-
1100
- <span class="method-name">cost</span><span
1101
- class="method-args">(startIdx, endIdx, task = nil)</span>
1102
- <span class="method-click-advice">click to toggle source</span>
1103
-
1104
- </div>
1105
-
1106
- <div class="method-description">
1107
-
1108
- <p>
1109
- Returns the cost for using this resource during the specified <a
1110
- href="Interval.html">Interval</a> <em>period</em>. If a <a
1111
- href="Task.html">Task</a> <em>task</em> is provided, only the work on this
1112
- particular task is considered.
1113
- </p>
1114
-
1115
-
1116
-
1117
- <div class="method-source-code"
1118
- id="cost-source">
1119
- <pre>
1120
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 468</span>
1121
- 468: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cost</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span> = <span class="ruby-keyword kw">nil</span>)
1122
- 469: <span class="ruby-identifier">getAllocatedTime</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>) * <span class="ruby-identifier">a</span>(<span class="ruby-value str">'rate'</span>)
1123
- 470: <span class="ruby-keyword kw">end</span></pre>
1124
- </div>
1125
-
1126
- </div>
1127
-
1128
-
1129
-
1130
-
1131
- </div>
1132
-
1133
-
1134
- <div id="finish-cheduling-method" class="method-detail ">
1135
- <a name="method-i-finishScheduling"></a>
1136
-
1137
- <div class="method-heading">
1138
-
1139
- <span class="method-name">finishScheduling</span><span
1140
- class="method-args">()</span>
1141
- <span class="method-click-advice">click to toggle source</span>
1142
-
1143
- </div>
1144
-
1145
- <div class="method-description">
1146
-
1147
- <p>
1148
- This method does some housekeeping work after the scheduling is completed.
1149
- It&#8217;s meant to be called for top-level resources and then recursively
1150
- descends into all child resources.
1151
- </p>
1152
-
1153
-
1154
-
1155
- <div class="method-source-code"
1156
- id="finish-cheduling-source">
1157
- <pre>
1158
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 120</span>
1159
- 120: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScheduling</span>
1160
- 121: <span class="ruby-comment cmt"># Recursively descend into all child resources.</span>
1161
- 122: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</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>
1162
- 123: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-ivar">@scenarioIdx</span>)
1163
- 124: <span class="ruby-keyword kw">end</span>
1164
- 125:
1165
- 126: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">parent</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>)
1166
- 127: <span class="ruby-comment cmt"># Add the assigned task to the parent duties list.</span>
1167
- 128: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duties'</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>
1168
- 129: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">parent</span>[<span class="ruby-value str">'duties'</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
1169
- 130: <span class="ruby-identifier">parent</span>[<span class="ruby-value str">'duties'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">task</span>
1170
- 131: <span class="ruby-keyword kw">end</span>
1171
- 132: <span class="ruby-keyword kw">end</span>
1172
- 133: <span class="ruby-keyword kw">end</span>
1173
- 134: <span class="ruby-keyword kw">end</span></pre>
1174
- </div>
1175
-
1176
- </div>
1177
-
1178
-
1179
-
1180
-
1181
- </div>
1182
-
1183
-
1184
- <div id="get-llocated-lots-method" class="method-detail ">
1185
- <a name="method-i-getAllocatedSlots"></a>
1186
-
1187
- <div class="method-heading">
1188
-
1189
- <span class="method-name">getAllocatedSlots</span><span
1190
- class="method-args">(startIdx, endIdx, task)</span>
1191
- <span class="method-click-advice">click to toggle source</span>
1192
-
1193
- </div>
1194
-
1195
- <div class="method-description">
1196
-
1197
- <p>
1198
- Count the booked slots between the start and end index. If <em>task</em> is
1199
- not nil count only those slots that are assigned to this particular task.
1200
- </p>
1201
-
1202
-
1203
-
1204
- <div class="method-source-code"
1205
- id="get-llocated-lots-source">
1206
- <pre>
1207
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 560</span>
1208
- 560: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getAllocatedSlots</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>)
1209
- 561: <span class="ruby-comment cmt"># If there is no scoreboard, we don't have any allocations.</span>
1210
- 562: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>
1211
- 563:
1212
- 564: <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">fitIndicies</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>)
1213
- 565: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">endIdx</span>
1214
- 566:
1215
- 567: <span class="ruby-identifier">bookedSlots</span> = <span class="ruby-value">0</span>
1216
- 568: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">each</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">slot</span><span class="ruby-operator">|</span>
1217
- 569: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">task</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">slot</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>)) <span class="ruby-operator">||</span> (<span class="ruby-identifier">task</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">slot</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">task</span>)
1218
- 570: <span class="ruby-identifier">bookedSlots</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1219
- 571: <span class="ruby-keyword kw">end</span>
1220
- 572: <span class="ruby-keyword kw">end</span>
1221
- 573:
1222
- 574: <span class="ruby-identifier">bookedSlots</span>
1223
- 575: <span class="ruby-keyword kw">end</span></pre>
1224
- </div>
1225
-
1226
- </div>
1227
-
1228
-
1229
-
1230
-
1231
- </div>
1232
-
1233
-
1234
- <div id="get-llocated-ime-method" class="method-detail ">
1235
- <a name="method-i-getAllocatedTime"></a>
1236
-
1237
- <div class="method-heading">
1238
-
1239
- <span class="method-name">getAllocatedTime</span><span
1240
- class="method-args">(startIdx, endIdx, task = nil)</span>
1241
- <span class="method-click-advice">click to toggle source</span>
1242
-
1243
- </div>
1244
-
1245
- <div class="method-description">
1246
-
1247
- <p>
1248
- Returns the allocated accumulated time of this resource and its children.
1249
- </p>
1250
-
1251
-
1252
-
1253
- <div class="method-source-code"
1254
- id="get-llocated-ime-source">
1255
- <pre>
1256
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 368</span>
1257
- 368: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getAllocatedTime</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span> = <span class="ruby-keyword kw">nil</span>)
1258
- 369: <span class="ruby-comment cmt"># Convert the interval dates to indexes if needed.</span>
1259
- 370: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1260
- 371: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">endIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">endIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1261
- 372:
1262
- 373: <span class="ruby-identifier">time</span> = <span class="ruby-value">0</span>
1263
- 374: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
1264
- 375: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</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>
1265
- 376: <span class="ruby-identifier">time</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getAllocatedTime</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>)
1266
- 377: <span class="ruby-keyword kw">end</span>
1267
- 378: <span class="ruby-keyword kw">else</span>
1268
- 379: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">nil?</span>
1269
- 380:
1270
- 381: <span class="ruby-identifier">time</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>] *
1271
- 382: <span class="ruby-identifier">getAllocatedSlots</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>))
1272
- 383: <span class="ruby-keyword kw">end</span>
1273
- 384: <span class="ruby-identifier">time</span>
1274
- 385: <span class="ruby-keyword kw">end</span></pre>
1275
- </div>
1276
-
1277
- </div>
1278
-
1279
-
1280
-
1281
-
1282
- </div>
1283
-
1284
-
1285
- <div id="get-ookings-method" class="method-detail ">
1286
- <a name="method-i-getBookings"></a>
1287
-
1288
- <div class="method-heading">
1289
-
1290
- <span class="method-name">getBookings</span><span
1291
- class="method-args">(iv = nil)</span>
1292
- <span class="method-click-advice">click to toggle source</span>
1293
-
1294
- </div>
1295
-
1296
- <div class="method-description">
1297
-
1298
- <p>
1299
- Iterate over the scoreboard and turn its content into a set of Bookings.
1300
- </p>
1301
- <pre>
1302
- _iv_ can be an Interval to limit the bookings within the provided
1303
- period.</pre>
1304
-
1305
-
1306
-
1307
- <div class="method-source-code"
1308
- id="get-ookings-source">
1309
- <pre>
1310
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 490</span>
1311
- 490: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getBookings</span>(<span class="ruby-identifier">iv</span> = <span class="ruby-keyword kw">nil</span>)
1312
- 491: <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span>
1313
- 492: <span class="ruby-ivar">@firstBookedSlot</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@lastBookedSlot</span>.<span class="ruby-identifier">nil?</span>
1314
- 493:
1315
- 494: <span class="ruby-identifier">bookings</span> = {}
1316
- 495: <span class="ruby-identifier">lastTask</span> = <span class="ruby-keyword kw">nil</span>
1317
- 496: <span class="ruby-identifier">bookingStart</span> = <span class="ruby-keyword kw">nil</span>
1318
- 497:
1319
- 498: <span class="ruby-comment cmt"># To speedup the collection we start with the first booked slot and end</span>
1320
- 499: <span class="ruby-comment cmt"># with the last booked slot.</span>
1321
- 500: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@firstBookedSlot</span>
1322
- 501: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@lastBookedSlot</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
1323
- 502:
1324
- 503: <span class="ruby-comment cmt"># In case the index markers are still uninitialized, we have no bookings.</span>
1325
- 504: <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">endIdx</span>.<span class="ruby-identifier">nil?</span>
1326
- 505:
1327
- 506: <span class="ruby-comment cmt"># If the user provided an Interval, we only return bookings within this</span>
1328
- 507: <span class="ruby-comment cmt"># Interval.</span>
1329
- 508: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>
1330
- 509: <span class="ruby-identifier">ivStartIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">iv</span>.<span class="ruby-identifier">start</span>)
1331
- 510: <span class="ruby-identifier">ivEndIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">iv</span>.<span class="ruby-identifier">end</span>)
1332
- 511: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">ivStartIdx</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ivStartIdx</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">startIdx</span>
1333
- 512: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">ivEndIdx</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ivEndIdx</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">endIdx</span>
1334
- 513: <span class="ruby-keyword kw">end</span>
1335
- 514:
1336
- 515: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
1337
- 516: <span class="ruby-identifier">task</span> = <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>]
1338
- 517: <span class="ruby-comment cmt"># Now we watch for task changes.</span>
1339
- 518: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">lastTask</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">lastTask</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>)) <span class="ruby-operator">||</span>
1340
- 519: (<span class="ruby-identifier">task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">idx</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">endIdx</span>)
1341
- 520: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">lastTask</span>.<span class="ruby-identifier">nil?</span>
1342
- 521: <span class="ruby-comment cmt"># If we don't have a Booking for the task yet, we create one.</span>
1343
- 522: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">bookings</span>[<span class="ruby-identifier">lastTask</span>].<span class="ruby-identifier">nil?</span>
1344
- 523: <span class="ruby-identifier">bookings</span>[<span class="ruby-identifier">lastTask</span>] = <span class="ruby-constant">Booking</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@property</span>, <span class="ruby-identifier">lastTask</span>, [])
1345
- 524: <span class="ruby-keyword kw">end</span>
1346
- 525:
1347
- 526: <span class="ruby-comment cmt"># Append the new interval to the Booking.</span>
1348
- 527: <span class="ruby-identifier">bookings</span>[<span class="ruby-identifier">lastTask</span>].<span class="ruby-identifier">intervals</span> <span class="ruby-operator">&lt;&lt;</span>
1349
- 528: <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">bookingStart</span>),
1350
- 529: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>))
1351
- 530: <span class="ruby-keyword kw">end</span>
1352
- 531: <span class="ruby-comment cmt"># Get ready for the next task booking interval</span>
1353
- 532: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Task</span>)
1354
- 533: <span class="ruby-identifier">lastTask</span> = <span class="ruby-identifier">task</span>
1355
- 534: <span class="ruby-identifier">bookingStart</span> = <span class="ruby-identifier">idx</span>
1356
- 535: <span class="ruby-keyword kw">else</span>
1357
- 536: <span class="ruby-identifier">lastTask</span> = <span class="ruby-identifier">bookingStart</span> = <span class="ruby-keyword kw">nil</span>
1358
- 537: <span class="ruby-keyword kw">end</span>
1359
- 538: <span class="ruby-keyword kw">end</span>
1360
- 539: <span class="ruby-keyword kw">end</span>
1361
- 540: <span class="ruby-identifier">bookings</span>
1362
- 541: <span class="ruby-keyword kw">end</span></pre>
1363
- </div>
1364
-
1365
- </div>
1366
-
1367
-
1368
-
1369
-
1370
- </div>
1371
-
1372
-
1373
- <div id="get-ffective-ree-ime-method" class="method-detail ">
1374
- <a name="method-i-getEffectiveFreeTime"></a>
1375
-
1376
- <div class="method-heading">
1377
-
1378
- <span class="method-name">getEffectiveFreeTime</span><span
1379
- class="method-args">(startIdx, endIdx)</span>
1380
- <span class="method-click-advice">click to toggle source</span>
1381
-
1382
- </div>
1383
-
1384
- <div class="method-description">
1385
-
1386
- <p>
1387
- Return the unallocated work time (in seconds) of the resource and its
1388
- children.
1389
- </p>
1390
-
1391
-
1392
-
1393
- <div class="method-source-code"
1394
- id="get-ffective-ree-ime-source">
1395
- <pre>
1396
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 389</span>
1397
- 389: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getEffectiveFreeTime</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>)
1398
- 390: <span class="ruby-comment cmt"># Convert the interval dates to indexes if needed.</span>
1399
- 391: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1400
- 392: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">endIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">endIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1401
- 393:
1402
- 394: <span class="ruby-identifier">freeTime</span> = <span class="ruby-value">0</span>
1403
- 395: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
1404
- 396: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</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>
1405
- 397: <span class="ruby-identifier">freeTime</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getEffectiveFreeTime</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>,
1406
- 398: <span class="ruby-identifier">endIdx</span>)
1407
- 399: <span class="ruby-keyword kw">end</span>
1408
- 400: <span class="ruby-keyword kw">else</span>
1409
- 401: <span class="ruby-identifier">freeTime</span> = <span class="ruby-identifier">getFreeSlots</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>) *
1410
- 402: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
1411
- 403: <span class="ruby-keyword kw">end</span>
1412
- 404: <span class="ruby-identifier">freeTime</span>
1413
- 405: <span class="ruby-keyword kw">end</span></pre>
1414
- </div>
1415
-
1416
- </div>
1417
-
1418
-
1419
-
1420
-
1421
- </div>
1422
-
1423
-
1424
- <div id="get-ffective-ree-ork-method" class="method-detail ">
1425
- <a name="method-i-getEffectiveFreeWork"></a>
1426
-
1427
- <div class="method-heading">
1428
-
1429
- <span class="method-name">getEffectiveFreeWork</span><span
1430
- class="method-args">(startIdx, endIdx)</span>
1431
- <span class="method-click-advice">click to toggle source</span>
1432
-
1433
- </div>
1434
-
1435
- <div class="method-description">
1436
-
1437
- <p>
1438
- Return the unallocated work of the resource and its children weighted by
1439
- their efficiency.
1440
- </p>
1441
-
1442
-
1443
-
1444
- <div class="method-source-code"
1445
- id="get-ffective-ree-ork-source">
1446
- <pre>
1447
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 409</span>
1448
- 409: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getEffectiveFreeWork</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>)
1449
- 410: <span class="ruby-comment cmt"># Convert the interval dates to indexes if needed.</span>
1450
- 411: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1451
- 412: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">endIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">endIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1452
- 413:
1453
- 414: <span class="ruby-identifier">work</span> = <span class="ruby-value">0.0</span>
1454
- 415: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
1455
- 416: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</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>
1456
- 417: <span class="ruby-identifier">work</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getEffectiveFreeWork</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>)
1457
- 418: <span class="ruby-keyword kw">end</span>
1458
- 419: <span class="ruby-keyword kw">else</span>
1459
- 420: <span class="ruby-identifier">work</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(
1460
- 421: <span class="ruby-identifier">getFreeSlots</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>) *
1461
- 422: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>]) * <span class="ruby-identifier">a</span>(<span class="ruby-value str">'efficiency'</span>)
1462
- 423: <span class="ruby-keyword kw">end</span>
1463
- 424: <span class="ruby-identifier">work</span>
1464
- 425: <span class="ruby-keyword kw">end</span></pre>
1465
- </div>
1466
-
1467
- </div>
1468
-
1469
-
1470
-
1471
-
1472
- </div>
1473
-
1474
-
1475
- <div id="get-ffective-ork-method" class="method-detail ">
1476
- <a name="method-i-getEffectiveWork"></a>
1477
-
1478
- <div class="method-heading">
1479
-
1480
- <span class="method-name">getEffectiveWork</span><span
1481
- class="method-args">(startIdx, endIdx, task = nil)</span>
1482
- <span class="method-click-advice">click to toggle source</span>
1483
-
1484
- </div>
1485
-
1486
- <div class="method-description">
1487
-
1488
- <p>
1489
- Returns the work of the resource (and its children) weighted by their
1490
- efficiency.
1491
- </p>
1492
-
1493
-
1494
-
1495
- <div class="method-source-code"
1496
- id="get-ffective-ork-source">
1497
- <pre>
1498
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 337</span>
1499
- 337: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span> = <span class="ruby-keyword kw">nil</span>)
1500
- 338: <span class="ruby-comment cmt"># There can't be any effective work if the start is after the end or the</span>
1501
- 339: <span class="ruby-comment cmt"># todo list doesn't contain the specified task.</span>
1502
- 340: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0.0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">endIdx</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">task</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'duties'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>))
1503
- 341:
1504
- 342: <span class="ruby-comment cmt"># The unique key we use to address the result in the cache.</span>
1505
- 343: <span class="ruby-identifier">key</span> = [ <span class="ruby-keyword kw">self</span>, <span class="ruby-value">:ResourceScenarioEffectiveWork</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
1506
- 344: <span class="ruby-identifier">task</span> ].<span class="ruby-identifier">hash</span>
1507
- 345: <span class="ruby-identifier">work</span> = <span class="ruby-ivar">@dCache</span>.<span class="ruby-identifier">load</span>(<span class="ruby-identifier">key</span>)
1508
- 346: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">work</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">work</span>
1509
- 347:
1510
- 348: <span class="ruby-comment cmt"># Convert the interval dates to indexes if needed.</span>
1511
- 349: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1512
- 350: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">endIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">endIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1513
- 351:
1514
- 352: <span class="ruby-identifier">work</span> = <span class="ruby-value">0.0</span>
1515
- 353: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
1516
- 354: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</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>
1517
- 355: <span class="ruby-identifier">work</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>)
1518
- 356: <span class="ruby-keyword kw">end</span>
1519
- 357: <span class="ruby-keyword kw">else</span>
1520
- 358: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0.0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">nil?</span>
1521
- 359:
1522
- 360: <span class="ruby-identifier">work</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(
1523
- 361: <span class="ruby-identifier">getAllocatedSlots</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>) *
1524
- 362: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>]) * <span class="ruby-identifier">a</span>(<span class="ruby-value str">'efficiency'</span>)
1525
- 363: <span class="ruby-keyword kw">end</span>
1526
- 364: <span class="ruby-ivar">@dCache</span>.<span class="ruby-identifier">store</span>(<span class="ruby-identifier">work</span>, <span class="ruby-identifier">key</span>)
1527
- 365: <span class="ruby-keyword kw">end</span></pre>
1528
- </div>
1529
-
1530
- </div>
1531
-
1532
-
1533
-
1534
-
1535
- </div>
1536
-
1537
-
1538
- <div id="get-ree-lots-method" class="method-detail ">
1539
- <a name="method-i-getFreeSlots"></a>
1540
-
1541
- <div class="method-heading">
1542
-
1543
- <span class="method-name">getFreeSlots</span><span
1544
- class="method-args">(startIdx, endIdx)</span>
1545
- <span class="method-click-advice">click to toggle source</span>
1546
-
1547
- </div>
1548
-
1549
- <div class="method-description">
1550
-
1551
- <p>
1552
- Count the free slots between the start and end index.
1553
- </p>
1554
-
1555
-
1556
-
1557
- <div class="method-source-code"
1558
- id="get-ree-lots-source">
1559
- <pre>
1560
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 578</span>
1561
- 578: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getFreeSlots</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>)
1562
- 579: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">endIdx</span>
1563
- 580:
1564
- 581: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>
1565
- 582:
1566
- 583: <span class="ruby-identifier">freeSlots</span> = <span class="ruby-value">0</span>
1567
- 584: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
1568
- 585: <span class="ruby-identifier">freeSlots</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>].<span class="ruby-identifier">nil?</span>
1569
- 586: <span class="ruby-keyword kw">end</span>
1570
- 587:
1571
- 588: <span class="ruby-identifier">freeSlots</span>
1572
- 589: <span class="ruby-keyword kw">end</span></pre>
1573
- </div>
1574
-
1575
- </div>
1576
-
1577
-
1578
-
1579
-
1580
- </div>
1581
-
1582
-
1583
- <div id="get-acation-ays-method" class="method-detail ">
1584
- <a name="method-i-getVacationDays"></a>
1585
-
1586
- <div class="method-heading">
1587
-
1588
- <span class="method-name">getVacationDays</span><span
1589
- class="method-args">(startIdx, endIdx)</span>
1590
- <span class="method-click-advice">click to toggle source</span>
1591
-
1592
- </div>
1593
-
1594
- <div class="method-description">
1595
-
1596
- <p>
1597
- Return the number of working days that are blocked by vacations.
1598
- </p>
1599
-
1600
-
1601
-
1602
- <div class="method-source-code"
1603
- id="get-acation-ays-source">
1604
- <pre>
1605
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 428</span>
1606
- 428: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getVacationDays</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>)
1607
- 429: <span class="ruby-comment cmt"># Convert the interval dates to indexes if needed.</span>
1608
- 430: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1609
- 431: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">endIdx</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">endIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1610
- 432:
1611
- 433: <span class="ruby-identifier">vacationDays</span> = <span class="ruby-value">0.0</span>
1612
- 434: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
1613
- 435: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</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>
1614
- 436: <span class="ruby-identifier">vacationDays</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getVacationDays</span>(<span class="ruby-ivar">@scenarioIdx</span>,
1615
- 437: <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>)
1616
- 438: <span class="ruby-keyword kw">end</span>
1617
- 439: <span class="ruby-keyword kw">else</span>
1618
- 440: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">nil?</span>
1619
- 441:
1620
- 442: <span class="ruby-identifier">vacationDays</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(
1621
- 443: <span class="ruby-identifier">getVacationSlots</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>) *
1622
- 444: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>]) * <span class="ruby-identifier">a</span>(<span class="ruby-value str">'efficiency'</span>)
1623
- 445: <span class="ruby-keyword kw">end</span>
1624
- 446: <span class="ruby-identifier">vacationDays</span>
1625
- 447: <span class="ruby-keyword kw">end</span></pre>
1626
- </div>
1627
-
1628
- </div>
1629
-
1630
-
1631
-
1632
-
1633
- </div>
1634
-
1635
-
1636
- <div id="get-acation-lots-method" class="method-detail ">
1637
- <a name="method-i-getVacationSlots"></a>
1638
-
1639
- <div class="method-heading">
1640
-
1641
- <span class="method-name">getVacationSlots</span><span
1642
- class="method-args">(startIdx, endIdx)</span>
1643
- <span class="method-click-advice">click to toggle source</span>
1644
-
1645
- </div>
1646
-
1647
- <div class="method-description">
1648
-
1649
- <p>
1650
- Count the regular work time slots between the start and end index that have
1651
- been blocked by a vacation.
1652
- </p>
1653
-
1654
-
1655
-
1656
- <div class="method-source-code"
1657
- id="get-acation-lots-source">
1658
- <pre>
1659
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 593</span>
1660
- 593: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getVacationSlots</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>)
1661
- 594: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startIdx</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">endIdx</span>
1662
- 595:
1663
- 596: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>
1664
- 597:
1665
- 598: <span class="ruby-identifier">vacationSlots</span> = <span class="ruby-value">0</span>
1666
- 599: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
1667
- 600: <span class="ruby-identifier">val</span> = <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>]
1668
- 601: <span class="ruby-comment cmt"># Bit 1 needs to be unset and the vacation bits must not be 0.</span>
1669
- 602: <span class="ruby-identifier">vacationSlots</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x2</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span>
1670
- 603: (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x3C</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1671
- 604: <span class="ruby-keyword kw">end</span>
1672
- 605: <span class="ruby-identifier">vacationSlots</span>
1673
- 606: <span class="ruby-keyword kw">end</span></pre>
1674
- </div>
1675
-
1676
- </div>
1677
-
1678
-
1679
-
1680
-
1681
- </div>
1682
-
1683
-
1684
- <div id="post-chedule-heck-method" class="method-detail ">
1685
- <a name="method-i-postScheduleCheck"></a>
1686
-
1687
- <div class="method-heading">
1688
-
1689
- <span class="method-name">postScheduleCheck</span><span
1690
- class="method-args">()</span>
1691
- <span class="method-click-advice">click to toggle source</span>
1692
-
1693
- </div>
1694
-
1695
- <div class="method-description">
1696
-
1697
-
1698
-
1699
-
1700
-
1701
- <div class="method-source-code"
1702
- id="post-chedule-heck-source">
1703
- <pre>
1704
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 136</span>
1705
- 136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">postScheduleCheck</span>
1706
- 137: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'fail'</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'warn'</span>).<span class="ruby-identifier">empty?</span>
1707
- 138: <span class="ruby-identifier">queryAttrs</span> = { <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
1708
- 139: <span class="ruby-value str">'scenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@scenarioIdx</span>,
1709
- 140: <span class="ruby-value str">'property'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@property</span>,
1710
- 141: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
1711
- 142: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>],
1712
- 143: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>],
1713
- 144: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">:days</span>,
1714
- 145: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'numberFormat'</span>],
1715
- 146: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'timeFormat'</span>],
1716
- 147: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'currencyFormat'</span>] }
1717
- 148: <span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
1718
- 149: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'fail'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">expr</span><span class="ruby-operator">|</span>
1719
- 150: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">expr</span>.<span class="ruby-identifier">eval</span>(<span class="ruby-identifier">query</span>)
1720
- 151: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'resource_fail_check'</span>,
1721
- 152: <span class="ruby-value str">&quot;User defined check failed for resource &quot;</span> <span class="ruby-operator">+</span>
1722
- 153: <span class="ruby-node">&quot;#{@property.fullId} \n&quot;</span> <span class="ruby-operator">+</span>
1723
- 154: <span class="ruby-node">&quot;Condition: #{expr.to_s}\n&quot;</span> <span class="ruby-operator">+</span>
1724
- 155: <span class="ruby-node">&quot;Result: #{expr.to_s(query)}&quot;</span>)
1725
- 156: <span class="ruby-keyword kw">end</span>
1726
- 157: <span class="ruby-keyword kw">end</span>
1727
- 158: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'warn'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">expr</span><span class="ruby-operator">|</span>
1728
- 159: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">expr</span>.<span class="ruby-identifier">eval</span>(<span class="ruby-identifier">query</span>)
1729
- 160: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'resource_warn_check'</span>,
1730
- 161: <span class="ruby-value str">&quot;User defined warning triggered for resource &quot;</span> <span class="ruby-operator">+</span>
1731
- 162: <span class="ruby-node">&quot;#{@property.fullId} \n&quot;</span> <span class="ruby-operator">+</span>
1732
- 163: <span class="ruby-node">&quot;Condition: #{expr.to_s}\n&quot;</span> <span class="ruby-operator">+</span>
1733
- 164: <span class="ruby-node">&quot;Result: #{expr.to_s(query)}&quot;</span>)
1734
- 165: <span class="ruby-keyword kw">end</span>
1735
- 166: <span class="ruby-keyword kw">end</span>
1736
- 167: <span class="ruby-keyword kw">end</span>
1737
- 168: <span class="ruby-keyword kw">end</span></pre>
1738
- </div>
1739
-
1740
- </div>
1741
-
1742
-
1743
-
1744
-
1745
- </div>
1746
-
1747
-
1748
- <div id="pre-chedule-heck-method" class="method-detail ">
1749
- <a name="method-i-preScheduleCheck"></a>
1750
-
1751
- <div class="method-heading">
1752
-
1753
- <span class="method-name">preScheduleCheck</span><span
1754
- class="method-args">()</span>
1755
- <span class="method-click-advice">click to toggle source</span>
1756
-
1757
- </div>
1758
-
1759
- <div class="method-description">
1760
-
1761
-
1762
-
1763
-
1764
-
1765
- <div class="method-source-code"
1766
- id="pre-chedule-heck-source">
1767
- <pre>
1768
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 103</span>
1769
- 103: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">preScheduleCheck</span>
1770
- 104: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'managers'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">manager</span><span class="ruby-operator">|</span>
1771
- 105: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">leaf?</span>
1772
- 106: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'manager_is_group'</span>,
1773
- 107: <span class="ruby-node">&quot;Resource #{@property.fullId} has group #{manager.fullId} &quot;</span> <span class="ruby-operator">+</span>
1774
- 108: <span class="ruby-value str">&quot;assigned as manager. Managers must be leaf resources.&quot;</span>)
1775
- 109: <span class="ruby-keyword kw">end</span>
1776
- 110: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">manager</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@property</span>
1777
- 111: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'manager_is_self'</span>,
1778
- 112: <span class="ruby-node">&quot;Resource #{@property.fullId} cannot manage itself.&quot;</span>)
1779
- 113: <span class="ruby-keyword kw">end</span>
1780
- 114: <span class="ruby-keyword kw">end</span>
1781
- 115: <span class="ruby-keyword kw">end</span></pre>
1782
- </div>
1783
-
1784
- </div>
1785
-
1786
-
1787
-
1788
-
1789
- </div>
1790
-
1791
-
1792
- <div id="prepare-cheduling-method" class="method-detail ">
1793
- <a name="method-i-prepareScheduling"></a>
1794
-
1795
- <div class="method-heading">
1796
-
1797
- <span class="method-name">prepareScheduling</span><span
1798
- class="method-args">()</span>
1799
- <span class="method-click-advice">click to toggle source</span>
1800
-
1801
- </div>
1802
-
1803
- <div class="method-description">
1804
-
1805
- <p>
1806
- This method must be called at the beginning of each scheduling run. It
1807
- initializes variables used during the scheduling process.
1808
- </p>
1809
-
1810
-
1811
-
1812
- <div class="method-source-code"
1813
- id="prepare-cheduling-source">
1814
- <pre>
1815
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 55</span>
1816
- 55: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScheduling</span>
1817
- 56: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'effort'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-value">0</span>
1818
- 57: <span class="ruby-identifier">initScoreboard</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">leaf?</span>
1819
- 58:
1820
- 59: <span class="ruby-identifier">setDirectReports</span>
1821
- 60: <span class="ruby-keyword kw">end</span></pre>
1822
- </div>
1823
-
1824
- </div>
1825
-
1826
-
1827
-
1828
-
1829
- </div>
1830
-
1831
-
1832
- <div id="query-cost-method" class="method-detail ">
1833
- <a name="method-i-query_cost"></a>
1834
-
1835
- <div class="method-heading">
1836
-
1837
- <span class="method-name">query_cost</span><span
1838
- class="method-args">(query)</span>
1839
- <span class="method-click-advice">click to toggle source</span>
1840
-
1841
- </div>
1842
-
1843
- <div class="method-description">
1844
-
1845
- <p>
1846
- Compute the cost generated by this <a href="Resource.html">Resource</a> for
1847
- a given <a href="Account.html">Account</a> during a given interval. If a
1848
- <a href="Task.html">Task</a> is provided as scopeProperty only the turnover
1849
- directly assiciated with the <a href="Task.html">Task</a> is taken into
1850
- account.
1851
- </p>
1852
-
1853
-
1854
-
1855
- <div class="method-source-code"
1856
- id="query-cost-source">
1857
- <pre>
1858
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 273</span>
1859
- 273: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_cost</span>(<span class="ruby-identifier">query</span>)
1860
- 274: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">query</span>.<span class="ruby-identifier">costAccount</span>
1861
- 275: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">cost</span> =
1862
- 276: <span class="ruby-identifier">turnover</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">costAccount</span>,
1863
- 277: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scopeProperty</span>)
1864
- 278: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">currencyFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">cost</span>)
1865
- 279: <span class="ruby-keyword kw">else</span>
1866
- 280: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'No cost account'</span>
1867
- 281: <span class="ruby-keyword kw">end</span>
1868
- 282: <span class="ruby-keyword kw">end</span></pre>
1869
- </div>
1870
-
1871
- </div>
1872
-
1873
-
1874
-
1875
-
1876
- </div>
1877
-
1878
-
1879
- <div id="query-effort-method" class="method-detail ">
1880
- <a name="method-i-query_effort"></a>
1881
-
1882
- <div class="method-heading">
1883
-
1884
- <span class="method-name">query_effort</span><span
1885
- class="method-args">(query)</span>
1886
- <span class="method-click-advice">click to toggle source</span>
1887
-
1888
- </div>
1889
-
1890
- <div class="method-description">
1891
-
1892
- <p>
1893
- The effort allocated to the <a href="Resource.html">Resource</a> in the
1894
- specified interval. In case a <a href="Task.html">Task</a> is given as
1895
- scope property only the effort allocated to this <a
1896
- href="Task.html">Task</a> is taken into account.
1897
- </p>
1898
-
1899
-
1900
-
1901
- <div class="method-source-code"
1902
- id="query-effort-source">
1903
- <pre>
1904
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 287</span>
1905
- 287: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_effort</span>(<span class="ruby-identifier">query</span>)
1906
- 288: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">effort</span> =
1907
- 289: <span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scopeProperty</span>)
1908
- 290: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scaleLoad</span>(<span class="ruby-identifier">effort</span>)
1909
- 291: <span class="ruby-keyword kw">end</span></pre>
1910
- </div>
1911
-
1912
- </div>
1913
-
1914
-
1915
-
1916
-
1917
- </div>
1918
-
1919
-
1920
- <div id="query-freetime-method" class="method-detail ">
1921
- <a name="method-i-query_freetime"></a>
1922
-
1923
- <div class="method-heading">
1924
-
1925
- <span class="method-name">query_freetime</span><span
1926
- class="method-args">(query)</span>
1927
- <span class="method-click-advice">click to toggle source</span>
1928
-
1929
- </div>
1930
-
1931
- <div class="method-description">
1932
-
1933
- <p>
1934
- The unallocated work time of the <a href="Resource.html">Resource</a>
1935
- during the specified interval.
1936
- </p>
1937
-
1938
-
1939
-
1940
- <div class="method-source-code"
1941
- id="query-freetime-source">
1942
- <pre>
1943
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 294</span>
1944
- 294: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_freetime</span>(<span class="ruby-identifier">query</span>)
1945
- 295: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">time</span> =
1946
- 296: <span class="ruby-identifier">getEffectiveFreeTime</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>) <span class="ruby-operator">/</span> (<span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span>)
1947
- 297: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scaleDuration</span>(<span class="ruby-identifier">time</span>)
1948
- 298: <span class="ruby-keyword kw">end</span></pre>
1949
- </div>
1950
-
1951
- </div>
1952
-
1953
-
1954
-
1955
-
1956
- </div>
1957
-
1958
-
1959
- <div id="query-freework-method" class="method-detail ">
1960
- <a name="method-i-query_freework"></a>
1961
-
1962
- <div class="method-heading">
1963
-
1964
- <span class="method-name">query_freework</span><span
1965
- class="method-args">(query)</span>
1966
- <span class="method-click-advice">click to toggle source</span>
1967
-
1968
- </div>
1969
-
1970
- <div class="method-description">
1971
-
1972
- <p>
1973
- The unallocated effort of the <a href="Resource.html">Resource</a> during
1974
- the specified interval.
1975
- </p>
1976
-
1977
-
1978
-
1979
- <div class="method-source-code"
1980
- id="query-freework-source">
1981
- <pre>
1982
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 301</span>
1983
- 301: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_freework</span>(<span class="ruby-identifier">query</span>)
1984
- 302: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">work</span> =
1985
- 303: <span class="ruby-identifier">getEffectiveFreeWork</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>)
1986
- 304: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scaleLoad</span>(<span class="ruby-identifier">work</span>)
1987
- 305: <span class="ruby-keyword kw">end</span></pre>
1988
- </div>
1989
-
1990
- </div>
1991
-
1992
-
1993
-
1994
-
1995
- </div>
1996
-
1997
-
1998
- <div id="query-rate-method" class="method-detail ">
1999
- <a name="method-i-query_rate"></a>
2000
-
2001
- <div class="method-heading">
2002
-
2003
- <span class="method-name">query_rate</span><span
2004
- class="method-args">(query)</span>
2005
- <span class="method-click-advice">click to toggle source</span>
2006
-
2007
- </div>
2008
-
2009
- <div class="method-description">
2010
-
2011
- <p>
2012
- Get the rate of the resource.
2013
- </p>
2014
-
2015
-
2016
-
2017
- <div class="method-source-code"
2018
- id="query-rate-source">
2019
- <pre>
2020
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 308</span>
2021
- 308: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_rate</span>(<span class="ruby-identifier">query</span>)
2022
- 309: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">r</span> = <span class="ruby-identifier">rate</span>
2023
- 310: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">currencyFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">r</span>)
2024
- 311: <span class="ruby-keyword kw">end</span></pre>
2025
- </div>
2026
-
2027
- </div>
2028
-
2029
-
2030
-
2031
-
2032
- </div>
2033
-
2034
-
2035
- <div id="query-revenue-method" class="method-detail ">
2036
- <a name="method-i-query_revenue"></a>
2037
-
2038
- <div class="method-heading">
2039
-
2040
- <span class="method-name">query_revenue</span><span
2041
- class="method-args">(query)</span>
2042
- <span class="method-click-advice">click to toggle source</span>
2043
-
2044
- </div>
2045
-
2046
- <div class="method-description">
2047
-
2048
- <p>
2049
- Compute the revenue generated by this <a href="Resource.html">Resource</a>
2050
- for a given <a href="Account.html">Account</a> during a given interval. If
2051
- a <a href="Task.html">Task</a> is provided as scopeProperty only the
2052
- revenue directly associated to this <a href="Task.html">Task</a> is taken
2053
- into account.
2054
- </p>
2055
-
2056
-
2057
-
2058
- <div class="method-source-code"
2059
- id="query-revenue-source">
2060
- <pre>
2061
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 316</span>
2062
- 316: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_revenue</span>(<span class="ruby-identifier">query</span>)
2063
- 317: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">query</span>.<span class="ruby-identifier">revenueAccount</span>
2064
- 318: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">revenue</span> =
2065
- 319: <span class="ruby-identifier">turnover</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">revenueAccount</span>,
2066
- 320: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scopeProperty</span>)
2067
- 321: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">currencyFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">revenue</span>)
2068
- 322: <span class="ruby-keyword kw">else</span>
2069
- 323: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'No revenue account'</span>
2070
- 324: <span class="ruby-keyword kw">end</span>
2071
- 325: <span class="ruby-keyword kw">end</span></pre>
2072
- </div>
2073
-
2074
- </div>
2075
-
2076
-
2077
-
2078
-
2079
- </div>
2080
-
2081
-
2082
- <div id="query-vacationdays-method" class="method-detail ">
2083
- <a name="method-i-query_vacationdays"></a>
2084
-
2085
- <div class="method-heading">
2086
-
2087
- <span class="method-name">query_vacationdays</span><span
2088
- class="method-args">(query)</span>
2089
- <span class="method-click-advice">click to toggle source</span>
2090
-
2091
- </div>
2092
-
2093
- <div class="method-description">
2094
-
2095
- <p>
2096
- The work time of the <a href="Resource.html">Resource</a> that was blocked
2097
- by a vacation during the specified <a href="Interval.html">Interval</a>.
2098
- The result is in working days (effort).
2099
- </p>
2100
-
2101
-
2102
-
2103
- <div class="method-source-code"
2104
- id="query-vacationdays-source">
2105
- <pre>
2106
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 329</span>
2107
- 329: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_vacationdays</span>(<span class="ruby-identifier">query</span>)
2108
- 330: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">time</span> =
2109
- 331: <span class="ruby-identifier">getVacationDays</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>)
2110
- 332: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scaleLoad</span>(<span class="ruby-identifier">time</span>)
2111
- 333: <span class="ruby-keyword kw">end</span></pre>
2112
- </div>
2113
-
2114
- </div>
2115
-
2116
-
2117
-
2118
-
2119
- </div>
2120
-
2121
-
2122
- <div id="set-irect-eports-method" class="method-detail ">
2123
- <a name="method-i-setDirectReports"></a>
2124
-
2125
- <div class="method-heading">
2126
-
2127
- <span class="method-name">setDirectReports</span><span
2128
- class="method-args">()</span>
2129
- <span class="method-click-advice">click to toggle source</span>
2130
-
2131
- </div>
2132
-
2133
- <div class="method-description">
2134
-
2135
-
2136
-
2137
-
2138
-
2139
- <div class="method-source-code"
2140
- id="set-irect-eports-source">
2141
- <pre>
2142
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 81</span>
2143
- 81: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setDirectReports</span>
2144
- 82: <span class="ruby-comment cmt"># Only leaf resources have reporting lines.</span>
2145
- 83: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">leaf?</span>
2146
- 84:
2147
- 85: <span class="ruby-comment cmt"># The 'directreports' attribute is the reverse link for the 'managers'</span>
2148
- 86: <span class="ruby-comment cmt"># attribute. In contrast to the 'managers' attribute, the</span>
2149
- 87: <span class="ruby-comment cmt"># 'directreports' list has no duplicate entries.</span>
2150
- 88: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'managers'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">manager</span><span class="ruby-operator">|</span>
2151
- 89: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">manager</span>[<span class="ruby-value str">'directreports'</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@property</span>)
2152
- 90: <span class="ruby-identifier">manager</span>[<span class="ruby-value str">'directreports'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@property</span>
2153
- 91: <span class="ruby-keyword kw">end</span>
2154
- 92: <span class="ruby-keyword kw">end</span>
2155
- 93: <span class="ruby-keyword kw">end</span></pre>
2156
- </div>
2157
-
2158
- </div>
2159
-
2160
-
2161
-
2162
-
2163
- </div>
2164
-
2165
-
2166
- <div id="set-eports-method" class="method-detail ">
2167
- <a name="method-i-setReports"></a>
2168
-
2169
- <div class="method-heading">
2170
-
2171
- <span class="method-name">setReports</span><span
2172
- class="method-args">()</span>
2173
- <span class="method-click-advice">click to toggle source</span>
2174
-
2175
- </div>
2176
-
2177
- <div class="method-description">
2178
-
2179
-
2180
-
2181
-
2182
-
2183
- <div class="method-source-code"
2184
- id="set-eports-source">
2185
- <pre>
2186
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 95</span>
2187
- 95: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setReports</span>
2188
- 96: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'directreports'</span>).<span class="ruby-identifier">empty?</span>
2189
- 97:
2190
- 98: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'managers'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
2191
- 99: <span class="ruby-identifier">r</span>.<span class="ruby-identifier">setReports_i</span>(<span class="ruby-ivar">@scenarioIdx</span>, [ <span class="ruby-ivar">@property</span> ])
2192
- 100: <span class="ruby-keyword kw">end</span>
2193
- 101: <span class="ruby-keyword kw">end</span></pre>
2194
- </div>
2195
-
2196
- </div>
2197
-
2198
-
2199
-
2200
-
2201
- </div>
2202
-
2203
-
2204
- <div id="turnover-method" class="method-detail ">
2205
- <a name="method-i-turnover"></a>
2206
-
2207
- <div class="method-heading">
2208
-
2209
- <span class="method-name">turnover</span><span
2210
- class="method-args">(startIdx, endIdx, account, task = nil)</span>
2211
- <span class="method-click-advice">click to toggle source</span>
2212
-
2213
- </div>
2214
-
2215
- <div class="method-description">
2216
-
2217
-
2218
-
2219
-
2220
-
2221
- <div class="method-source-code"
2222
- id="turnover-source">
2223
- <pre>
2224
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 449</span>
2225
- 449: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">turnover</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">account</span>, <span class="ruby-identifier">task</span> = <span class="ruby-keyword kw">nil</span>)
2226
- 450: <span class="ruby-identifier">amount</span> = <span class="ruby-value">0.0</span>
2227
- 451: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
2228
- 452: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
2229
- 453: <span class="ruby-identifier">amount</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">turnover</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">account</span>, <span class="ruby-identifier">task</span>)
2230
- 454: <span class="ruby-keyword kw">end</span>
2231
- 455: <span class="ruby-keyword kw">else</span>
2232
- 456: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duties'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">duty</span><span class="ruby-operator">|</span>
2233
- 457: <span class="ruby-identifier">amount</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">duty</span>.<span class="ruby-identifier">turnover</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">account</span>,
2234
- 458: <span class="ruby-ivar">@property</span>)
2235
- 459: <span class="ruby-keyword kw">end</span>
2236
- 460: <span class="ruby-keyword kw">end</span>
2237
- 461:
2238
- 462: <span class="ruby-identifier">amount</span>
2239
- 463: <span class="ruby-keyword kw">end</span></pre>
2240
- </div>
2241
-
2242
- </div>
2243
-
2244
-
2245
-
2246
-
2247
- </div>
2248
-
2249
-
2250
- </div>
2251
-
2252
- <div id="private-instance-method-details" class="method-section section">
2253
- <h3 class="section-header">Private Instance Methods</h3>
2254
-
2255
-
2256
- <div id="allocated-ub-method" class="method-detail ">
2257
- <a name="method-i-allocatedSub"></a>
2258
-
2259
- <div class="method-heading">
2260
-
2261
- <span class="method-name">allocatedSub</span><span
2262
- class="method-args">(startIdx, endIdx, task)</span>
2263
- <span class="method-click-advice">click to toggle source</span>
2264
-
2265
- </div>
2266
-
2267
- <div class="method-description">
2268
-
2269
- <p>
2270
- Returns true if the resource or any of its children is allocated during the
2271
- period specified with <em>startIdx</em> and <em>endIdx</em>. If task is not
2272
- nil only allocations to this tasks are respected.
2273
- </p>
2274
-
2275
-
2276
-
2277
- <div class="method-source-code"
2278
- id="allocated-ub-source">
2279
- <pre>
2280
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 717</span>
2281
- 717: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">allocatedSub</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>)
2282
- 718: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
2283
- 719: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</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>
2284
- 720: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">allocatedSub</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
2285
- 721: <span class="ruby-identifier">task</span>)
2286
- 722: <span class="ruby-keyword kw">end</span>
2287
- 723: <span class="ruby-keyword kw">else</span>
2288
- 724: <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">@scoreboard</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duties'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
2289
- 725:
2290
- 726: <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">fitIndicies</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span>)
2291
- 727: <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">startIdx</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">endIdx</span>
2292
- 728:
2293
- 729: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
2294
- 730: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">task</span>
2295
- 731: <span class="ruby-keyword kw">end</span>
2296
- 732: <span class="ruby-keyword kw">end</span>
2297
- 733: <span class="ruby-keyword kw">false</span>
2298
- 734: <span class="ruby-keyword kw">end</span></pre>
2299
- </div>
2300
-
2301
- </div>
2302
-
2303
-
2304
-
2305
-
2306
- </div>
2307
-
2308
-
2309
- <div id="fit-ndicies-method" class="method-detail ">
2310
- <a name="method-i-fitIndicies"></a>
2311
-
2312
- <div class="method-heading">
2313
-
2314
- <span class="method-name">fitIndicies</span><span
2315
- class="method-args">(startIdx, endIdx, task = nil)</span>
2316
- <span class="method-click-advice">click to toggle source</span>
2317
-
2318
- </div>
2319
-
2320
- <div class="method-description">
2321
-
2322
- <p>
2323
- Limit the <em>startIdx</em> and <em>endIdx</em> to the actually assigned
2324
- interval. If <em>task</em> is provided, fit it for the bookings of this
2325
- particular task.
2326
- </p>
2327
-
2328
-
2329
-
2330
- <div class="method-source-code"
2331
- id="fit-ndicies-source">
2332
- <pre>
2333
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 673</span>
2334
- 673: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fitIndicies</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">task</span> = <span class="ruby-keyword kw">nil</span>)
2335
- 674: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>
2336
- 675: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@firstBookedSlots</span>[<span class="ruby-identifier">task</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@firstBookedSlots</span>[<span class="ruby-identifier">task</span>] <span class="ruby-operator">&amp;&amp;</span>
2337
- 676: <span class="ruby-identifier">startIdx</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@firstBookedSlots</span>[<span class="ruby-identifier">task</span>]
2338
- 677: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@lastBookedSlots</span>[<span class="ruby-identifier">task</span>] <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@lastBookedSlots</span>[<span class="ruby-identifier">task</span>] <span class="ruby-operator">&amp;&amp;</span>
2339
- 678: <span class="ruby-identifier">endIdx</span> <span class="ruby-operator">&gt;</span>
2340
- 679: <span class="ruby-ivar">@lastBookedSlots</span>[<span class="ruby-identifier">task</span>] <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
2341
- 680: <span class="ruby-keyword kw">else</span>
2342
- 681: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@firstBookedSlot</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@firstBookedSlot</span> <span class="ruby-operator">&amp;&amp;</span>
2343
- 682: <span class="ruby-identifier">startIdx</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@firstBookedSlot</span>
2344
- 683: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@lastBookedSlot</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@lastBookedSlot</span> <span class="ruby-operator">&amp;&amp;</span>
2345
- 684: <span class="ruby-identifier">endIdx</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@lastBookedSlot</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
2346
- 685: <span class="ruby-keyword kw">end</span>
2347
- 686: [ <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span> ]
2348
- 687: <span class="ruby-keyword kw">end</span></pre>
2349
- </div>
2350
-
2351
- </div>
2352
-
2353
-
2354
-
2355
-
2356
- </div>
2357
-
2358
-
2359
- <div id="init-coreboard-method" class="method-detail ">
2360
- <a name="method-i-initScoreboard"></a>
2361
-
2362
- <div class="method-heading">
2363
-
2364
- <span class="method-name">initScoreboard</span><span
2365
- class="method-args">()</span>
2366
- <span class="method-click-advice">click to toggle source</span>
2367
-
2368
- </div>
2369
-
2370
- <div class="method-description">
2371
-
2372
-
2373
-
2374
-
2375
-
2376
- <div class="method-source-code"
2377
- id="init-coreboard-source">
2378
- <pre>
2379
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 610</span>
2380
- 610: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initScoreboard</span>
2381
- 611: <span class="ruby-comment cmt"># Create scoreboard and mark all slots as unavailable</span>
2382
- 612: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>],
2383
- 613: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>], <span class="ruby-value">2</span>)
2384
- 614:
2385
- 615: <span class="ruby-comment cmt"># We'll need this frequently and can savely cache it here.</span>
2386
- 616: <span class="ruby-ivar">@shifts</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'shifts'</span>)
2387
- 617: <span class="ruby-ivar">@workinghours</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'workinghours'</span>)
2388
- 618:
2389
- 619: <span class="ruby-comment cmt"># Change all work time slots to nil (available) again.</span>
2390
- 620: <span class="ruby-identifier">date</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-value">0</span>)
2391
- 621: <span class="ruby-identifier">delta</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
2392
- 622: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scoreboardSize</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
2393
- 623: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
2394
- 624: <span class="ruby-identifier">date</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">delta</span>
2395
- 625: <span class="ruby-keyword kw">end</span>
2396
- 626:
2397
- 627: <span class="ruby-comment cmt"># Mark all resource specific vacation slots as such</span>
2398
- 628: <span class="ruby-identifier">a</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>
2399
- 629: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">start</span>, <span class="ruby-keyword kw">true</span>)
2400
- 630: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">true</span>)
2401
- 631: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
2402
- 632: <span class="ruby-comment cmt"># If the slot is nil, we don't set the time-off bit.</span>
2403
- 633: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = (<span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">2</span>) <span class="ruby-operator">|</span> (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>)
2404
- 634: <span class="ruby-keyword kw">end</span>
2405
- 635: <span class="ruby-keyword kw">end</span>
2406
- 636:
2407
- 637: <span class="ruby-comment cmt"># Mark all global vacation slots as such</span>
2408
- 638: <span class="ruby-ivar">@project</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>
2409
- 639: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">start</span>, <span class="ruby-keyword kw">true</span>)
2410
- 640: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">true</span>)
2411
- 641: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
2412
- 642: <span class="ruby-comment cmt"># If the slot is nil or set to 4 then don't set the time-off bit.</span>
2413
- 643: <span class="ruby-identifier">sb</span> = <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>]
2414
- 644: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = ((<span class="ruby-identifier">sb</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">sb</span> <span class="ruby-operator">==</span> <span class="ruby-value">4</span>) <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">2</span>) <span class="ruby-operator">|</span> (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>)
2415
- 645: <span class="ruby-keyword kw">end</span>
2416
- 646: <span class="ruby-keyword kw">end</span>
2417
- 647:
2418
- 648: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">nil?</span>
2419
- 649: <span class="ruby-comment cmt"># Mark the vacations from all the shifts the resource is assigned to.</span>
2420
- 650: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scoreboardSize</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
2421
- 651: <span class="ruby-identifier">v</span> = <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">getSbSlot</span>(<span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">i</span>))
2422
- 652: <span class="ruby-comment cmt"># Check if the vacation replacement bit is set. In that case we copy</span>
2423
- 653: <span class="ruby-comment cmt"># the whole interval over to the resource scoreboard overriding any</span>
2424
- 654: <span class="ruby-comment cmt"># global vacations.</span>
2425
- 655: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">v</span> &amp; (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span>)) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
2426
- 656: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">v</span> &amp; <span class="ruby-value">0x3E</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
2427
- 657: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-keyword kw">nil</span>
2428
- 658: <span class="ruby-keyword kw">else</span>
2429
- 659: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-identifier">v</span> &amp; <span class="ruby-value">0x3E</span>
2430
- 660: <span class="ruby-keyword kw">end</span>
2431
- 661: <span class="ruby-keyword kw">elsif</span> ((<span class="ruby-identifier">sbV</span> = <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>]).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">sbV</span> &amp; <span class="ruby-value">0x3C</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-operator">&amp;&amp;</span>
2432
- 662: (<span class="ruby-identifier">v</span> &amp; <span class="ruby-value">0x3C</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
2433
- 663: <span class="ruby-comment cmt"># We only add the shift vacations but don't turn global vacation</span>
2434
- 664: <span class="ruby-comment cmt"># slots into working slots again.</span>
2435
- 665: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-identifier">v</span> &amp; <span class="ruby-value">0x3E</span>
2436
- 666: <span class="ruby-keyword kw">end</span>
2437
- 667: <span class="ruby-keyword kw">end</span>
2438
- 668: <span class="ruby-keyword kw">end</span>
2439
- 669: <span class="ruby-keyword kw">end</span></pre>
2440
- </div>
2441
-
2442
- </div>
2443
-
2444
-
2445
-
2446
-
2447
- </div>
2448
-
2449
-
2450
- <div id="on-hift--method" class="method-detail ">
2451
- <a name="method-i-onShift%3F"></a>
2452
-
2453
- <div class="method-heading">
2454
-
2455
- <span class="method-name">onShift?</span><span
2456
- class="method-args">(date)</span>
2457
- <span class="method-click-advice">click to toggle source</span>
2458
-
2459
- </div>
2460
-
2461
- <div class="method-description">
2462
-
2463
-
2464
-
2465
-
2466
-
2467
- <div class="method-source-code"
2468
- id="on-hift--source">
2469
- <pre>
2470
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 706</span>
2471
- 706: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
2472
- 707: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@shifts</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
2473
- 708: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
2474
- 709: <span class="ruby-keyword kw">else</span>
2475
- 710: <span class="ruby-ivar">@workinghours</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
2476
- 711: <span class="ruby-keyword kw">end</span>
2477
- 712: <span class="ruby-keyword kw">end</span></pre>
2478
- </div>
2479
-
2480
- </div>
2481
-
2482
-
2483
-
2484
-
2485
- </div>
2486
-
2487
-
2488
- <div id="rate-method" class="method-detail ">
2489
- <a name="method-i-rate"></a>
2490
-
2491
- <div class="method-heading">
2492
-
2493
- <span class="method-name">rate</span><span
2494
- class="method-args">()</span>
2495
- <span class="method-click-advice">click to toggle source</span>
2496
-
2497
- </div>
2498
-
2499
- <div class="method-description">
2500
-
2501
- <p>
2502
- Return the daily cost of a resource or resource group.
2503
- </p>
2504
-
2505
-
2506
-
2507
- <div class="method-source-code"
2508
- id="rate-source">
2509
- <pre>
2510
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 737</span>
2511
- 737: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rate</span>
2512
- 738: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
2513
- 739: <span class="ruby-identifier">dailyRate</span> = <span class="ruby-value">0.0</span>
2514
- 740: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</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>
2515
- 741: <span class="ruby-identifier">dailyRate</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">rate</span>(<span class="ruby-ivar">@scenarioIdx</span>)
2516
- 742: <span class="ruby-keyword kw">end</span>
2517
- 743: <span class="ruby-identifier">dailyRate</span>
2518
- 744: <span class="ruby-keyword kw">else</span>
2519
- 745: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'rate'</span>)
2520
- 746: <span class="ruby-keyword kw">end</span>
2521
- 747: <span class="ruby-keyword kw">end</span></pre>
2522
- </div>
2523
-
2524
- </div>
2525
-
2526
-
2527
-
2528
-
2529
- </div>
2530
-
2531
-
2532
- <div id="set-eports-i-method" class="method-detail ">
2533
- <a name="method-i-setReports_i"></a>
2534
-
2535
- <div class="method-heading">
2536
-
2537
- <span class="method-name">setReports_i</span><span
2538
- class="method-args">(reports)</span>
2539
- <span class="method-click-advice">click to toggle source</span>
2540
-
2541
- </div>
2542
-
2543
- <div class="method-description">
2544
-
2545
-
2546
-
2547
-
2548
-
2549
- <div class="method-source-code"
2550
- id="set-eports-i-source">
2551
- <pre>
2552
- <span class="ruby-comment cmt"># File lib/ResourceScenario.rb, line 689</span>
2553
- 689: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setReports_i</span>(<span class="ruby-identifier">reports</span>)
2554
- 690: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reports</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@property</span>)
2555
- 691: <span class="ruby-comment cmt"># A manager must never show up in the list of his/her own reports.</span>
2556
- 692: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'manager_loop'</span>,
2557
- 693: <span class="ruby-node">&quot;Management loop detected. #{@property.fullId} has self &quot;</span> <span class="ruby-operator">+</span>
2558
- 694: <span class="ruby-value str">&quot;in list of reports&quot;</span>)
2559
- 695: <span class="ruby-keyword kw">end</span>
2560
- 696: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'reports'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">+=</span> <span class="ruby-identifier">reports</span>
2561
- 697: <span class="ruby-comment cmt"># Resources can end up multiple times in the list if they have multiple</span>
2562
- 698: <span class="ruby-comment cmt"># reporting chains. We only need them once in the list.</span>
2563
- 699: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'reports'</span>).<span class="ruby-identifier">uniq!</span>
2564
- 700:
2565
- 701: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'managers'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
2566
- 702: <span class="ruby-identifier">r</span>.<span class="ruby-identifier">setReports_i</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">a</span>(<span class="ruby-value str">'reports'</span>))
2567
- 703: <span class="ruby-keyword kw">end</span>
2568
- 704: <span class="ruby-keyword kw">end</span></pre>
2569
- </div>
2570
-
2571
- </div>
2572
-
2573
-
2574
-
2575
-
2576
- </div>
2577
-
2578
-
2579
- </div>
2580
-
2581
-
2582
- </div>
2583
-
2584
-
2585
- <div id="rdoc-debugging-section-dump" class="debugging-section">
2586
-
2587
- <p>Disabled; run with --debug to generate this.</p>
2588
-
2589
- </div>
2590
-
2591
- <div id="validator-badges">
2592
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
2593
- <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
2594
- Rdoc Generator</a> 1.1.6</small>.</p>
2595
- </div>
2596
-
2597
- </body>
2598
- </html>
2599
-