taskjuggler 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
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
-