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,3333 +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::Project</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/Project_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
- class="thickbox" title="lib/Project.rb">lib/Project.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="../Object.html">Object</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-maxScheduleGranularity">::maxScheduleGranularity</a></li>
73
-
74
- <li><a href="#method-c-new">::new</a></li>
75
-
76
- <li><a href="#method-i-%5B%5D">#[]</a></li>
77
-
78
- <li><a href="#method-i-%5B%5D%3D">#[]=</a></li>
79
-
80
- <li><a href="#method-i-account">#account</a></li>
81
-
82
- <li><a href="#method-i-alertLevelColor">#alertLevelColor</a></li>
83
-
84
- <li><a href="#method-i-alertLevelId">#alertLevelId</a></li>
85
-
86
- <li><a href="#method-i-alertLevelIndex">#alertLevelIndex</a></li>
87
-
88
- <li><a href="#method-i-alertLevelName">#alertLevelName</a></li>
89
-
90
- <li><a href="#method-i-attributeName">#attributeName</a></li>
91
-
92
- <li><a href="#method-i-checkReports">#checkReports</a></li>
93
-
94
- <li><a href="#method-i-checkTimeSheets">#checkTimeSheets</a></li>
95
-
96
- <li><a href="#method-i-collectTimeOffIntervals">#collectTimeOffIntervals</a></li>
97
-
98
- <li><a href="#method-i-convertToDailyLoad">#convertToDailyLoad</a></li>
99
-
100
- <li><a href="#method-i-dailyWorkingHours">#dailyWorkingHours</a></li>
101
-
102
- <li><a href="#method-i-dateToIdx">#dateToIdx</a></li>
103
-
104
- <li><a href="#method-i-deep_clone">#deep_clone</a></li>
105
-
106
- <li><a href="#method-i-error">#error</a></li>
107
-
108
- <li><a href="#method-i-finishScenario">#finishScenario</a></li>
109
-
110
- <li><a href="#method-i-generateReport">#generateReport</a></li>
111
-
112
- <li><a href="#method-i-generateReports">#generateReports</a></li>
113
-
114
- <li><a href="#method-i-idxToDate">#idxToDate</a></li>
115
-
116
- <li><a href="#method-i-initScoreboards">#initScoreboards</a></li>
117
-
118
- <li><a href="#method-i-isWorkingTime">#isWorkingTime</a></li>
119
-
120
- <li><a href="#method-i-listReports">#listReports</a></li>
121
-
122
- <li><a href="#method-i-matchingReports">#matchingReports</a></li>
123
-
124
- <li><a href="#method-i-monthlyWorkingDays">#monthlyWorkingDays</a></li>
125
-
126
- <li><a href="#method-i-prepareScenario">#prepareScenario</a></li>
127
-
128
- <li><a href="#method-i-report">#report</a></li>
129
-
130
- <li><a href="#method-i-reportByName">#reportByName</a></li>
131
-
132
- <li><a href="#method-i-resource">#resource</a></li>
133
-
134
- <li><a href="#method-i-scenario">#scenario</a></li>
135
-
136
- <li><a href="#method-i-scenarioCount">#scenarioCount</a></li>
137
-
138
- <li><a href="#method-i-scenarioIdx">#scenarioIdx</a></li>
139
-
140
- <li><a href="#method-i-schedule">#schedule</a></li>
141
-
142
- <li><a href="#method-i-scheduleScenario">#scheduleScenario</a></li>
143
-
144
- <li><a href="#method-i-scoreboardSize">#scoreboardSize</a></li>
145
-
146
- <li><a href="#method-i-shift">#shift</a></li>
147
-
148
- <li><a href="#method-i-slotsToDays">#slotsToDays</a></li>
149
-
150
- <li><a href="#method-i-task">#task</a></li>
151
-
152
- <li><a href="#method-i-to_s">#to_s</a></li>
153
-
154
- <li><a href="#method-i-weeklyWorkingDays">#weeklyWorkingDays</a></li>
155
-
156
- <li><a href="#method-i-workingDays">#workingDays</a></li>
157
-
158
- <li><a href="#method-i-yearlyWorkingDays">#yearlyWorkingDays</a></li>
159
-
160
- </ul>
161
- </div>
162
-
163
-
164
- <!-- Included Modules -->
165
-
166
- </div>
167
-
168
- <div id="project-metadata">
169
-
170
-
171
- <div id="fileindex-section" class="section project-section">
172
- <h3 class="section-header">Files</h3>
173
- <ul>
174
-
175
- <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
176
-
177
- <li class="file"><a href="../COPYING.html">COPYING</a></li>
178
-
179
- <li class="file"><a href="../README.html">README</a></li>
180
-
181
- </ul>
182
- </div>
183
-
184
-
185
- <div id="classindex-section" class="section project-section">
186
- <h3 class="section-header">Class Index
187
- <span class="search-toggle"><img src="../images/find.png"
188
- height="16" width="16" alt="[+]"
189
- title="show/hide quicksearch" /></span></h3>
190
- <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
191
- <fieldset>
192
- <legend>Quicksearch</legend>
193
- <input type="text" name="quicksearch" value=""
194
- class="quicksearch-field" />
195
- </fieldset>
196
- </form>
197
-
198
- <ul class="link-list">
199
-
200
- <li><a href="../TaskJuggler.html">TaskJuggler</a></li>
201
-
202
- <li><a href="../TaskJuggler/Account.html">TaskJuggler::Account</a></li>
203
-
204
- <li><a href="../TaskJuggler/AccountAttribute.html">TaskJuggler::AccountAttribute</a></li>
205
-
206
- <li><a href="../TaskJuggler/AccountScenario.html">TaskJuggler::AccountScenario</a></li>
207
-
208
- <li><a href="../TaskJuggler/Allocation.html">TaskJuggler::Allocation</a></li>
209
-
210
- <li><a href="../TaskJuggler/AllocationAttribute.html">TaskJuggler::AllocationAttribute</a></li>
211
-
212
- <li><a href="../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li>
213
-
214
- <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
215
-
216
- <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
217
-
218
- <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
219
-
220
- <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
221
-
222
- <li><a href="../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li>
223
-
224
- <li><a href="../TaskJuggler/BooleanAttribute.html">TaskJuggler::BooleanAttribute</a></li>
225
-
226
- <li><a href="../TaskJuggler/CSVFile.html">TaskJuggler::CSVFile</a></li>
227
-
228
- <li><a href="../TaskJuggler/CellSettingPattern.html">TaskJuggler::CellSettingPattern</a></li>
229
-
230
- <li><a href="../TaskJuggler/CellSettingPatternList.html">TaskJuggler::CellSettingPatternList</a></li>
231
-
232
- <li><a href="../TaskJuggler/Charge.html">TaskJuggler::Charge</a></li>
233
-
234
- <li><a href="../TaskJuggler/ChargeListAttribute.html">TaskJuggler::ChargeListAttribute</a></li>
235
-
236
- <li><a href="../TaskJuggler/ChargeSet.html">TaskJuggler::ChargeSet</a></li>
237
-
238
- <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
239
-
240
- <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
241
-
242
- <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
243
-
244
- <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
245
-
246
- <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
247
-
248
- <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
249
-
250
- <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
251
-
252
- <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
253
-
254
- <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
255
-
256
- <li><a href="../TaskJuggler/DependencyListAttribute.html">TaskJuggler::DependencyListAttribute</a></li>
257
-
258
- <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
259
-
260
- <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
261
-
262
- <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
263
-
264
- <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
265
-
266
- <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
267
-
268
- <li><a href="../TaskJuggler/FloatAttribute.html">TaskJuggler::FloatAttribute</a></li>
269
-
270
- <li><a href="../TaskJuggler/FormatListAttribute.html">TaskJuggler::FormatListAttribute</a></li>
271
-
272
- <li><a href="../TaskJuggler/GanttChart.html">TaskJuggler::GanttChart</a></li>
273
-
274
- <li><a href="../TaskJuggler/GanttContainer.html">TaskJuggler::GanttContainer</a></li>
275
-
276
- <li><a href="../TaskJuggler/GanttHeader.html">TaskJuggler::GanttHeader</a></li>
277
-
278
- <li><a href="../TaskJuggler/GanttHeaderScaleItem.html">TaskJuggler::GanttHeaderScaleItem</a></li>
279
-
280
- <li><a href="../TaskJuggler/GanttLine.html">TaskJuggler::GanttLine</a></li>
281
-
282
- <li><a href="../TaskJuggler/GanttLoadStack.html">TaskJuggler::GanttLoadStack</a></li>
283
-
284
- <li><a href="../TaskJuggler/GanttMilestone.html">TaskJuggler::GanttMilestone</a></li>
285
-
286
- <li><a href="../TaskJuggler/GanttRouter.html">TaskJuggler::GanttRouter</a></li>
287
-
288
- <li><a href="../TaskJuggler/GanttTaskBar.html">TaskJuggler::GanttTaskBar</a></li>
289
-
290
- <li><a href="../TaskJuggler/HTMLDocument.html">TaskJuggler::HTMLDocument</a></li>
291
-
292
- <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
293
-
294
- <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
295
-
296
- <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
297
-
298
- <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
299
-
300
- <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
301
-
302
- <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
303
-
304
- <li><a href="../TaskJuggler/JournalEntry.html">TaskJuggler::JournalEntry</a></li>
305
-
306
- <li><a href="../TaskJuggler/JournalEntryList.html">TaskJuggler::JournalEntryList</a></li>
307
-
308
- <li><a href="../TaskJuggler/KeywordArray.html">TaskJuggler::KeywordArray</a></li>
309
-
310
- <li><a href="../TaskJuggler/KeywordDocumentation.html">TaskJuggler::KeywordDocumentation</a></li>
311
-
312
- <li><a href="../TaskJuggler/Limits.html">TaskJuggler::Limits</a></li>
313
-
314
- <li><a href="../TaskJuggler/Limits/Limit.html">TaskJuggler::Limits::Limit</a></li>
315
-
316
- <li><a href="../TaskJuggler/LimitsAttribute.html">TaskJuggler::LimitsAttribute</a></li>
317
-
318
- <li><a href="../TaskJuggler/ListAttributeBase.html">TaskJuggler::ListAttributeBase</a></li>
319
-
320
- <li><a href="../TaskJuggler/Log.html">TaskJuggler::Log</a></li>
321
-
322
- <li><a href="../TaskJuggler/LogFile.html">TaskJuggler::LogFile</a></li>
323
-
324
- <li><a href="../TaskJuggler/LogicalAttribute.html">TaskJuggler::LogicalAttribute</a></li>
325
-
326
- <li><a href="../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li>
327
-
328
- <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
329
-
330
- <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
331
-
332
- <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
333
-
334
- <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
335
-
336
- <li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
337
-
338
- <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
339
-
340
- <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
341
-
342
- <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
343
-
344
- <li><a href="../TaskJuggler/ManagerStatusRecord.html">TaskJuggler::ManagerStatusRecord</a></li>
345
-
346
- <li><a href="../TaskJuggler/Message.html">TaskJuggler::Message</a></li>
347
-
348
- <li><a href="../TaskJuggler/MessageHandler.html">TaskJuggler::MessageHandler</a></li>
349
-
350
- <li><a href="../TaskJuggler/Navigator.html">TaskJuggler::Navigator</a></li>
351
-
352
- <li><a href="../TaskJuggler/NavigatorElement.html">TaskJuggler::NavigatorElement</a></li>
353
-
354
- <li><a href="../TaskJuggler/NikuProject.html">TaskJuggler::NikuProject</a></li>
355
-
356
- <li><a href="../TaskJuggler/NikuReport.html">TaskJuggler::NikuReport</a></li>
357
-
358
- <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
359
-
360
- <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
361
-
362
- <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
363
-
364
- <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
365
-
366
- <li><a href="../TaskJuggler/ProcessIntercomIface.html">TaskJuggler::ProcessIntercomIface</a></li>
367
-
368
- <li><a href="../TaskJuggler/Project.html">TaskJuggler::Project</a></li>
369
-
370
- <li><a href="../TaskJuggler/ProjectBroker.html">TaskJuggler::ProjectBroker</a></li>
371
-
372
- <li><a href="../TaskJuggler/ProjectBrokerIface.html">TaskJuggler::ProjectBrokerIface</a></li>
373
-
374
- <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
375
-
376
- <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
377
-
378
- <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
379
-
380
- <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
381
-
382
- <li><a href="../TaskJuggler/ProjectServerIface.html">TaskJuggler::ProjectServerIface</a></li>
383
-
384
- <li><a href="../TaskJuggler/PropertyAttribute.html">TaskJuggler::PropertyAttribute</a></li>
385
-
386
- <li><a href="../TaskJuggler/PropertyList.html">TaskJuggler::PropertyList</a></li>
387
-
388
- <li><a href="../TaskJuggler/PropertySet.html">TaskJuggler::PropertySet</a></li>
389
-
390
- <li><a href="../TaskJuggler/PropertyTreeNode.html">TaskJuggler::PropertyTreeNode</a></li>
391
-
392
- <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
393
-
394
- <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
395
-
396
- <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
397
-
398
- <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
399
-
400
- <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
401
-
402
- <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
403
-
404
- <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
405
-
406
- <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
407
-
408
- <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
409
-
410
- <li><a href="../TaskJuggler/ReferenceAttribute.html">TaskJuggler::ReferenceAttribute</a></li>
411
-
412
- <li><a href="../TaskJuggler/Report.html">TaskJuggler::Report</a></li>
413
-
414
- <li><a href="../TaskJuggler/ReportBase.html">TaskJuggler::ReportBase</a></li>
415
-
416
- <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
417
-
418
- <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
419
-
420
- <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
421
-
422
- <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
423
-
424
- <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
425
-
426
- <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
427
-
428
- <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
429
-
430
- <li><a href="../TaskJuggler/ReportTableColumn.html">TaskJuggler::ReportTableColumn</a></li>
431
-
432
- <li><a href="../TaskJuggler/ReportTableLegend.html">TaskJuggler::ReportTableLegend</a></li>
433
-
434
- <li><a href="../TaskJuggler/ReportTableLine.html">TaskJuggler::ReportTableLine</a></li>
435
-
436
- <li><a href="../TaskJuggler/Resource.html">TaskJuggler::Resource</a></li>
437
-
438
- <li><a href="../TaskJuggler/ResourceListAttribute.html">TaskJuggler::ResourceListAttribute</a></li>
439
-
440
- <li><a href="../TaskJuggler/ResourceListRE.html">TaskJuggler::ResourceListRE</a></li>
441
-
442
- <li><a href="../TaskJuggler/ResourceScenario.html">TaskJuggler::ResourceScenario</a></li>
443
-
444
- <li><a href="../TaskJuggler/RichText.html">TaskJuggler::RichText</a></li>
445
-
446
- <li><a href="../TaskJuggler/RichTextAttribute.html">TaskJuggler::RichTextAttribute</a></li>
447
-
448
- <li><a href="../TaskJuggler/RichTextDocument.html">TaskJuggler::RichTextDocument</a></li>
449
-
450
- <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
451
-
452
- <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
453
-
454
- <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
455
-
456
- <li><a href="../TaskJuggler/RichTextImage.html">TaskJuggler::RichTextImage</a></li>
457
-
458
- <li><a href="../TaskJuggler/RichTextIntermediate.html">TaskJuggler::RichTextIntermediate</a></li>
459
-
460
- <li><a href="../TaskJuggler/RichTextParser.html">TaskJuggler::RichTextParser</a></li>
461
-
462
- <li><a href="../TaskJuggler/RichTextScanner.html">TaskJuggler::RichTextScanner</a></li>
463
-
464
- <li><a href="../TaskJuggler/RichTextSnip.html">TaskJuggler::RichTextSnip</a></li>
465
-
466
- <li><a href="../TaskJuggler/RichTextSyntaxRules.html">TaskJuggler::RichTextSyntaxRules</a></li>
467
-
468
- <li><a href="../TaskJuggler/Scenario.html">TaskJuggler::Scenario</a></li>
469
-
470
- <li><a href="../TaskJuggler/ScenarioData.html">TaskJuggler::ScenarioData</a></li>
471
-
472
- <li><a href="../TaskJuggler/ScenarioListAttribute.html">TaskJuggler::ScenarioListAttribute</a></li>
473
-
474
- <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
475
-
476
- <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
477
-
478
- <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
479
-
480
- <li><a href="../TaskJuggler/SheetSender.html">TaskJuggler::SheetSender</a></li>
481
-
482
- <li><a href="../TaskJuggler/Shift.html">TaskJuggler::Shift</a></li>
483
-
484
- <li><a href="../TaskJuggler/ShiftAssignment.html">TaskJuggler::ShiftAssignment</a></li>
485
-
486
- <li><a href="../TaskJuggler/ShiftAssignments.html">TaskJuggler::ShiftAssignments</a></li>
487
-
488
- <li><a href="../TaskJuggler/ShiftAssignmentsAttribute.html">TaskJuggler::ShiftAssignmentsAttribute</a></li>
489
-
490
- <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
491
-
492
- <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
493
-
494
- <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
495
-
496
- <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
497
-
498
- <li><a href="../TaskJuggler/StatusSheetReceiver.html">TaskJuggler::StatusSheetReceiver</a></li>
499
-
500
- <li><a href="../TaskJuggler/StatusSheetReport.html">TaskJuggler::StatusSheetReport</a></li>
501
-
502
- <li><a href="../TaskJuggler/StatusSheetSender.html">TaskJuggler::StatusSheetSender</a></li>
503
-
504
- <li><a href="../TaskJuggler/StringAttribute.html">TaskJuggler::StringAttribute</a></li>
505
-
506
- <li><a href="../TaskJuggler/SymbolAttribute.html">TaskJuggler::SymbolAttribute</a></li>
507
-
508
- <li><a href="../TaskJuggler/SyntaxReference.html">TaskJuggler::SyntaxReference</a></li>
509
-
510
- <li><a href="../TaskJuggler/TOCEntry.html">TaskJuggler::TOCEntry</a></li>
511
-
512
- <li><a href="../TaskJuggler/TSResourceRecord.html">TaskJuggler::TSResourceRecord</a></li>
513
-
514
- <li><a href="../TaskJuggler/TSTaskRecord.html">TaskJuggler::TSTaskRecord</a></li>
515
-
516
- <li><a href="../TaskJuggler/TableColumnDefinition.html">TaskJuggler::TableColumnDefinition</a></li>
517
-
518
- <li><a href="../TaskJuggler/TableOfContents.html">TaskJuggler::TableOfContents</a></li>
519
-
520
- <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
521
-
522
- <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
523
-
524
- <li><a href="../TaskJuggler/TaskDependency.html">TaskJuggler::TaskDependency</a></li>
525
-
526
- <li><a href="../TaskJuggler/TaskListAttribute.html">TaskJuggler::TaskListAttribute</a></li>
527
-
528
- <li><a href="../TaskJuggler/TaskListRE.html">TaskJuggler::TaskListRE</a></li>
529
-
530
- <li><a href="../TaskJuggler/TaskScenario.html">TaskJuggler::TaskScenario</a></li>
531
-
532
- <li><a href="../TaskJuggler/TextFormatter.html">TaskJuggler::TextFormatter</a></li>
533
-
534
- <li><a href="../TaskJuggler/TextParser.html">TaskJuggler::TextParser</a></li>
535
-
536
- <li><a href="../TaskJuggler/TextParser/Pattern.html">TaskJuggler::TextParser::Pattern</a></li>
537
-
538
- <li><a href="../TaskJuggler/TextParser/Rule.html">TaskJuggler::TextParser::Rule</a></li>
539
-
540
- <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
541
-
542
- <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
543
-
544
- <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
545
-
546
- <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
547
-
548
- <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
549
-
550
- <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
551
-
552
- <li><a href="../TaskJuggler/TextScanner.html">TaskJuggler::TextScanner</a></li>
553
-
554
- <li><a href="../TaskJuggler/TextScanner/BufferStreamHandle.html">TaskJuggler::TextScanner::BufferStreamHandle</a></li>
555
-
556
- <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
557
-
558
- <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
559
-
560
- <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
561
-
562
- <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
563
-
564
- <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
565
-
566
- <li><a href="../TaskJuggler/TimeSheetRecord.html">TaskJuggler::TimeSheetRecord</a></li>
567
-
568
- <li><a href="../TaskJuggler/TimeSheetReport.html">TaskJuggler::TimeSheetReport</a></li>
569
-
570
- <li><a href="../TaskJuggler/TimeSheetSender.html">TaskJuggler::TimeSheetSender</a></li>
571
-
572
- <li><a href="../TaskJuggler/TimeSheetSummary.html">TaskJuggler::TimeSheetSummary</a></li>
573
-
574
- <li><a href="../TaskJuggler/TimeSheets.html">TaskJuggler::TimeSheets</a></li>
575
-
576
- <li><a href="../TaskJuggler/Tj3AppBase.html">TaskJuggler::Tj3AppBase</a></li>
577
-
578
- <li><a href="../TaskJuggler/Tj3Client.html">TaskJuggler::Tj3Client</a></li>
579
-
580
- <li><a href="../TaskJuggler/Tj3Daemon.html">TaskJuggler::Tj3Daemon</a></li>
581
-
582
- <li><a href="../TaskJuggler/Tj3SheetAppBase.html">TaskJuggler::Tj3SheetAppBase</a></li>
583
-
584
- <li><a href="../TaskJuggler/Tj3SsReceiver.html">TaskJuggler::Tj3SsReceiver</a></li>
585
-
586
- <li><a href="../TaskJuggler/Tj3SsSender.html">TaskJuggler::Tj3SsSender</a></li>
587
-
588
- <li><a href="../TaskJuggler/Tj3TsReceiver.html">TaskJuggler::Tj3TsReceiver</a></li>
589
-
590
- <li><a href="../TaskJuggler/Tj3TsSender.html">TaskJuggler::Tj3TsSender</a></li>
591
-
592
- <li><a href="../TaskJuggler/Tj3TsSummary.html">TaskJuggler::Tj3TsSummary</a></li>
593
-
594
- <li><a href="../TaskJuggler/TjException.html">TaskJuggler::TjException</a></li>
595
-
596
- <li><a href="../TaskJuggler/TjTime.html">TaskJuggler::TjTime</a></li>
597
-
598
- <li><a href="../TaskJuggler/TjpExample.html">TaskJuggler::TjpExample</a></li>
599
-
600
- <li><a href="../TaskJuggler/TjpExportRE.html">TaskJuggler::TjpExportRE</a></li>
601
-
602
- <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
603
-
604
- <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
605
-
606
- <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
607
-
608
- <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
609
-
610
- <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
611
-
612
- <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
613
-
614
- <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
615
-
616
- <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
617
-
618
- <li><a href="../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li>
619
-
620
- <li><a href="../TaskJuggler/XMLComment.html">TaskJuggler::XMLComment</a></li>
621
-
622
- <li><a href="../TaskJuggler/XMLDocument.html">TaskJuggler::XMLDocument</a></li>
623
-
624
- <li><a href="../TaskJuggler/XMLElement.html">TaskJuggler::XMLElement</a></li>
625
-
626
- <li><a href="../TaskJuggler/XMLNamedText.html">TaskJuggler::XMLNamedText</a></li>
627
-
628
- <li><a href="../TaskJuggler/XMLText.html">TaskJuggler::XMLText</a></li>
629
-
630
- <li><a href="../AppConfig.html">AppConfig</a></li>
631
-
632
- <li><a href="../Arguments.html">Arguments</a></li>
633
-
634
- <li><a href="../Object.html">Object</a></li>
635
-
636
- <li><a href="../RuntimeConfig.html">RuntimeConfig</a></li>
637
-
638
- <li><a href="../String.html">String</a></li>
639
-
640
- </ul>
641
- <div id="no-class-search-results" style="display: none;">No matching classes.</div>
642
- </div>
643
-
644
-
645
- </div>
646
- </div>
647
-
648
- <div id="documentation">
649
- <h1 class="class">TaskJuggler::Project</h1>
650
-
651
- <div id="description">
652
- <p>
653
- This class implements objects that hold all project properties. <a
654
- href="Project.html">Project</a> generally consist of resources, tasks and a
655
- number of other optional properties. Tasks, Resources, Accounts and Shifts
656
- are all build on the same underlying storage class <a
657
- href="PropertyTreeNode.html">PropertyTreeNode</a>. Properties of the same
658
- kind are kept in <a href="PropertySet.html">PropertySet</a> objects. There
659
- is only one <a href="PropertySet.html">PropertySet</a> for each type of
660
- property. Additionally, each property may belong to various <a
661
- href="PropertyList.html">PropertyList</a> objects. In contrast to <a
662
- href="PropertySet.html">PropertySet</a> objects, <a
663
- href="PropertyList.html">PropertyList</a> object have well defined sorting
664
- order and no information about the attributes of each type of property. The
665
- <a href="PropertySet.html">PropertySet</a> holds the blueprints for the
666
- data construction inside the <a
667
- href="PropertyTreeNode.html">PropertyTreeNode</a> objects. It contains the
668
- list of known Attributes.
669
- </p>
670
-
671
- </div>
672
-
673
- <!-- Constants -->
674
-
675
-
676
- <!-- Attributes -->
677
-
678
- <div id="attribute-method-details" class="method-section section">
679
- <h3 class="section-header">Attributes</h3>
680
-
681
-
682
- <div id="accounts-attribute-method" class="method-detail">
683
- <a name="accounts"></a>
684
-
685
- <div class="method-heading attribute-method-heading">
686
- <span class="method-name">accounts</span><span
687
- class="attribute-access-type">[R]</span>
688
- </div>
689
-
690
- <div class="method-description">
691
-
692
-
693
-
694
- </div>
695
- </div>
696
-
697
- <div id="shifts-attribute-method" class="method-detail">
698
- <a name="shifts"></a>
699
-
700
- <div class="method-heading attribute-method-heading">
701
- <span class="method-name">shifts</span><span
702
- class="attribute-access-type">[R]</span>
703
- </div>
704
-
705
- <div class="method-description">
706
-
707
-
708
-
709
- </div>
710
- </div>
711
-
712
- <div id="tasks-attribute-method" class="method-detail">
713
- <a name="tasks"></a>
714
-
715
- <div class="method-heading attribute-method-heading">
716
- <span class="method-name">tasks</span><span
717
- class="attribute-access-type">[R]</span>
718
- </div>
719
-
720
- <div class="method-description">
721
-
722
-
723
-
724
- </div>
725
- </div>
726
-
727
- <div id="resources-attribute-method" class="method-detail">
728
- <a name="resources"></a>
729
-
730
- <div class="method-heading attribute-method-heading">
731
- <span class="method-name">resources</span><span
732
- class="attribute-access-type">[R]</span>
733
- </div>
734
-
735
- <div class="method-description">
736
-
737
-
738
-
739
- </div>
740
- </div>
741
-
742
- <div id="scenarios-attribute-method" class="method-detail">
743
- <a name="scenarios"></a>
744
-
745
- <div class="method-heading attribute-method-heading">
746
- <span class="method-name">scenarios</span><span
747
- class="attribute-access-type">[R]</span>
748
- </div>
749
-
750
- <div class="method-description">
751
-
752
-
753
-
754
- </div>
755
- </div>
756
-
757
- <div id="time-heets-attribute-method" class="method-detail">
758
- <a name="timeSheets"></a>
759
-
760
- <div class="method-heading attribute-method-heading">
761
- <span class="method-name">timeSheets</span><span
762
- class="attribute-access-type">[R]</span>
763
- </div>
764
-
765
- <div class="method-description">
766
-
767
-
768
-
769
- </div>
770
- </div>
771
-
772
- <div id="reports-attribute-method" class="method-detail">
773
- <a name="reports"></a>
774
-
775
- <div class="method-heading attribute-method-heading">
776
- <span class="method-name">reports</span><span
777
- class="attribute-access-type">[R]</span>
778
- </div>
779
-
780
- <div class="method-description">
781
-
782
-
783
-
784
- </div>
785
- </div>
786
-
787
- <div id="message-andler-attribute-method" class="method-detail">
788
- <a name="messageHandler"></a>
789
-
790
- <div class="method-heading attribute-method-heading">
791
- <span class="method-name">messageHandler</span><span
792
- class="attribute-access-type">[R]</span>
793
- </div>
794
-
795
- <div class="method-description">
796
-
797
-
798
-
799
- </div>
800
- </div>
801
-
802
- <div id="input-iles-attribute-method" class="method-detail">
803
- <a name="inputFiles"></a>
804
-
805
- <div class="method-heading attribute-method-heading">
806
- <span class="method-name">inputFiles</span><span
807
- class="attribute-access-type">[R]</span>
808
- </div>
809
-
810
- <div class="method-description">
811
-
812
-
813
-
814
- </div>
815
- </div>
816
-
817
- <div id="report-ontexts-attribute-method" class="method-detail">
818
- <a name="reportContexts"></a>
819
-
820
- <a name="reportContexts="></a>
821
-
822
- <div class="method-heading attribute-method-heading">
823
- <span class="method-name">reportContexts</span><span
824
- class="attribute-access-type">[RW]</span>
825
- </div>
826
-
827
- <div class="method-description">
828
-
829
-
830
-
831
- </div>
832
- </div>
833
-
834
- <div id="output-ir-attribute-method" class="method-detail">
835
- <a name="outputDir"></a>
836
-
837
- <a name="outputDir="></a>
838
-
839
- <div class="method-heading attribute-method-heading">
840
- <span class="method-name">outputDir</span><span
841
- class="attribute-access-type">[RW]</span>
842
- </div>
843
-
844
- <div class="method-description">
845
-
846
-
847
-
848
- </div>
849
- </div>
850
-
851
- <div id="warn-s-eltas-attribute-method" class="method-detail">
852
- <a name="warnTsDeltas"></a>
853
-
854
- <a name="warnTsDeltas="></a>
855
-
856
- <div class="method-heading attribute-method-heading">
857
- <span class="method-name">warnTsDeltas</span><span
858
- class="attribute-access-type">[RW]</span>
859
- </div>
860
-
861
- <div class="method-description">
862
-
863
-
864
-
865
- </div>
866
- </div>
867
-
868
- </div>
869
-
870
-
871
- <!-- Methods -->
872
-
873
- <div id="public-class-method-details" class="method-section section">
874
- <h3 class="section-header">Public Class Methods</h3>
875
-
876
-
877
- <div id="max-chedule-ranularity-method" class="method-detail ">
878
- <a name="method-c-maxScheduleGranularity"></a>
879
-
880
- <div class="method-heading">
881
-
882
- <span class="method-name">maxScheduleGranularity</span><span
883
- class="method-args">()</span>
884
- <span class="method-click-advice">click to toggle source</span>
885
-
886
- </div>
887
-
888
- <div class="method-description">
889
-
890
- <p>
891
- <a href="../TaskJuggler.html">TaskJuggler</a> keeps all times in UTC. All
892
- time values must be multiples of the used scheduling granularity. If the
893
- local time zone is not hour-aligned to UTC, the maximum allowed schedule
894
- granularity is reduced.
895
- </p>
896
-
897
-
898
-
899
- <div class="method-source-code"
900
- id="max-chedule-ranularity-source">
901
- <pre>
902
- <span class="ruby-comment cmt"># File lib/Project.rb, line 880</span>
903
- 880: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>
904
- 881: <span class="ruby-identifier">refTime</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>)
905
- 882: <span class="ruby-keyword kw">case</span> (<span class="ruby-identifier">min</span> = <span class="ruby-identifier">refTime</span>.<span class="ruby-identifier">getlocal</span>.<span class="ruby-identifier">min</span>)
906
- 883: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
907
- 884: <span class="ruby-comment cmt"># We are hour-aligned to UTC; scheduleGranularity is 1 hour</span>
908
- 885: <span class="ruby-value">60</span> * <span class="ruby-value">60</span>
909
- 886: <span class="ruby-keyword kw">when</span> <span class="ruby-value">30</span>
910
- 887: <span class="ruby-comment cmt"># We are half-hour off from UTC; scheduleGranularity is 30 minutes</span>
911
- 888: <span class="ruby-value">30</span> * <span class="ruby-value">60</span>
912
- 889: <span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span>, <span class="ruby-value">45</span>
913
- 890: <span class="ruby-comment cmt"># We are 15 or 45 minutes off from UTC; scheduleGranularity is 15</span>
914
- 891: <span class="ruby-comment cmt"># minutes</span>
915
- 892: <span class="ruby-value">15</span> * <span class="ruby-value">60</span>
916
- 893: <span class="ruby-keyword kw">else</span>
917
- 894: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown Time zone alignment #{min}&quot;</span>
918
- 895: <span class="ruby-keyword kw">end</span>
919
- 896: <span class="ruby-keyword kw">end</span></pre>
920
- </div>
921
-
922
- </div>
923
-
924
-
925
-
926
-
927
- </div>
928
-
929
-
930
- <div id="new-method" class="method-detail ">
931
- <a name="method-c-new"></a>
932
-
933
- <div class="method-heading">
934
-
935
- <span class="method-name">new</span><span
936
- class="method-args">(id, name, version, messageHandler)</span>
937
- <span class="method-click-advice">click to toggle source</span>
938
-
939
- </div>
940
-
941
- <div class="method-description">
942
-
943
- <p>
944
- Create a project with the specified <tt>id</tt>, <tt>name</tt> and
945
- <tt>version</tt>. <tt>messageHandler</tt> is a <a
946
- href="MessageHandler.html">MessageHandler</a> reference that is used to
947
- handle all error and warning messages that might occur during processing.
948
- The constructor will set default values for all project attributes.
949
- </p>
950
-
951
-
952
-
953
- <div class="method-source-code"
954
- id="new-source">
955
- <pre>
956
- <span class="ruby-comment cmt"># File lib/Project.rb, line 61</span>
957
- 61: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">version</span>, <span class="ruby-identifier">messageHandler</span>)
958
- 62: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
959
- 63: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">0</span>)
960
- 64: <span class="ruby-ivar">@attributes</span> = {
961
- 65: <span class="ruby-comment cmt"># This nested Array defines the supported alert levels. The lowest</span>
962
- 66: <span class="ruby-comment cmt"># level comes first at index 0 and the level rises from there on.</span>
963
- 67: <span class="ruby-comment cmt"># Currently, these levels are hardcoded. Each level entry has 3</span>
964
- 68: <span class="ruby-comment cmt"># members: the tjp syntax token, the user visible name and the</span>
965
- 69: <span class="ruby-comment cmt"># associated color as RGB byte array.</span>
966
- 70: <span class="ruby-value str">'alertLevels'</span> =<span class="ruby-operator">&gt;</span> [
967
- 71: [ <span class="ruby-value str">'green'</span>, <span class="ruby-value str">'Green'</span>, <span class="ruby-value str">'#008000'</span> ],
968
- 72: [ <span class="ruby-value str">'yellow'</span>, <span class="ruby-value str">'Yellow'</span>, <span class="ruby-value str">'#BEA800'</span> ],
969
- 73: [ <span class="ruby-value str">'red'</span>, <span class="ruby-value str">'Red'</span>, <span class="ruby-value str">'#C00000'</span> ] ],
970
- 74: <span class="ruby-value str">'copyright'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
971
- 75: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
972
- 76: <span class="ruby-value str">'currency'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;EUR&quot;</span>,
973
- 77: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">RealFormat</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'-'</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">','</span>, <span class="ruby-value">2</span> ]),
974
- 78: <span class="ruby-value str">'dailyworkinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">8.0</span>,
975
- 79: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
976
- 80: <span class="ruby-value str">'flags'</span> =<span class="ruby-operator">&gt;</span> [],
977
- 81: <span class="ruby-value str">'journal'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Journal</span>.<span class="ruby-identifier">new</span>,
978
- 82: <span class="ruby-value str">'limits'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
979
- 83: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">:days</span>,
980
- 84: <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>,
981
- 85: <span class="ruby-value str">'navigators'</span> =<span class="ruby-operator">&gt;</span> {},
982
- 86: <span class="ruby-value str">'now'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">align</span>(<span class="ruby-value">3600</span>),
983
- 87: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">RealFormat</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'-'</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">'.'</span>, <span class="ruby-value">1</span>]),
984
- 88: <span class="ruby-value str">'priority'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">500</span>,
985
- 89: <span class="ruby-value str">'projectid'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;prj&quot;</span>,
986
- 90: <span class="ruby-value str">'projectids'</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-identifier">id</span> ],
987
- 91: <span class="ruby-value str">'rate'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0.0</span>,
988
- 92: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
989
- 93: <span class="ruby-value str">'scheduleGranularity'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Project</span>.<span class="ruby-identifier">maxScheduleGranularity</span>,
990
- 94: <span class="ruby-value str">'shortTimeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%H:%M&quot;</span>,
991
- 95: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
992
- 96: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;%Y-%m-%d&quot;</span>,
993
- 97: <span class="ruby-value str">'timezone'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
994
- 98: <span class="ruby-value str">'trackingScenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>,
995
- 99: <span class="ruby-value str">'vacations'</span> =<span class="ruby-operator">&gt;</span> [],
996
- 100: <span class="ruby-value str">'version'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">version</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;1.0&quot;</span>,
997
- 101: <span class="ruby-value str">'weekStartsMonday'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>,
998
- 102: <span class="ruby-value str">'workinghours'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
999
- 103: <span class="ruby-value str">'yearlyworkingdays'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">260.714</span>
1000
- 104: }
1001
- 105:
1002
- 106: <span class="ruby-comment cmt"># Before we can add any properties to this project, we need to define the</span>
1003
- 107: <span class="ruby-comment cmt"># attributes that each of the property types will be using. In TaskJuggler</span>
1004
- 108: <span class="ruby-comment cmt"># lingo, properties of a project are resources, tasks, accounts, shifts</span>
1005
- 109: <span class="ruby-comment cmt"># and scenarios. Each of these properties can have lots of further</span>
1006
- 110: <span class="ruby-comment cmt"># information attached to it. These bits of information are called</span>
1007
- 111: <span class="ruby-comment cmt"># attributes. An attribute is defined by the AttributeDefinition class.</span>
1008
- 112: <span class="ruby-comment cmt"># The PropertySet objects need to be fed with a list of such attribute</span>
1009
- 113: <span class="ruby-comment cmt"># definitions to register the attributes with the properties.</span>
1010
- 114: <span class="ruby-ivar">@scenarios</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1011
- 115: <span class="ruby-identifier">attrs</span> = [
1012
- 116: <span class="ruby-comment cmt"># ID Name Type</span>
1013
- 117: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1014
- 118: [ <span class="ruby-value str">'enabled'</span>, <span class="ruby-value str">'Enabled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1015
- 119: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
1016
- 120: [ <span class="ruby-value str">'minslackrate'</span>, <span class="ruby-value str">'Min. Slack Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
1017
- 121: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1.0</span> ],
1018
- 122: [ <span class="ruby-value str">'projection'</span>, <span class="ruby-value str">'Projection Mode'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1019
- 123: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1020
- 124: [ <span class="ruby-value str">'strict'</span>, <span class="ruby-value str">'Strict Bookings'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1021
- 125: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
1022
- 126: ]
1023
- 127: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1024
- 128:
1025
- 129: <span class="ruby-ivar">@shifts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1026
- 130: <span class="ruby-identifier">attrs</span> = [
1027
- 131: <span class="ruby-comment cmt"># ID Name Type</span>
1028
- 132: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1029
- 133: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1030
- 134: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1031
- 135: [ <span class="ruby-value str">'replace'</span>, <span class="ruby-value str">'Replace'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1032
- 136: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1033
- 137: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1034
- 138: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1035
- 139: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1036
- 140: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1037
- 141: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
1038
- 142: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
1039
- 143: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1040
- 144: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1041
- 145: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
1042
- 146: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
1043
- 147: ]
1044
- 148: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@shifts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1045
- 149:
1046
- 150: <span class="ruby-ivar">@accounts</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1047
- 151: <span class="ruby-identifier">attrs</span> = [
1048
- 152: <span class="ruby-comment cmt"># ID Name Type</span>
1049
- 153: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1050
- 154: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1051
- 155: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1052
- 156: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1053
- 157: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1054
- 158: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1055
- 159: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1056
- 160: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1057
- 161: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ]
1058
- 162: ]
1059
- 163: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@accounts</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1060
- 164:
1061
- 165: <span class="ruby-ivar">@resources</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">true</span>)
1062
- 166: <span class="ruby-identifier">attrs</span> = [
1063
- 167: <span class="ruby-comment cmt"># ID Name Type</span>
1064
- 168: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1065
- 169: [ <span class="ruby-value str">'alloctdeffort'</span>, <span class="ruby-value str">'Alloctd. Effort'</span>, <span class="ruby-constant">FloatAttribute</span>,
1066
- 170: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1067
- 171: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1068
- 172: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1069
- 173: [ <span class="ruby-value str">'duties'</span>, <span class="ruby-value str">'Duties'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1070
- 174: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1071
- 175: [ <span class="ruby-value str">'directreports'</span>, <span class="ruby-value str">'Direct Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1072
- 176: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1073
- 177: [ <span class="ruby-value str">'efficiency'</span>,<span class="ruby-value str">'Efficiency'</span>, <span class="ruby-constant">FloatAttribute</span>,
1074
- 178: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
1075
- 179: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Total Effort'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1076
- 180: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1077
- 181: [ <span class="ruby-value str">'email'</span>, <span class="ruby-value str">'Email'</span>, <span class="ruby-constant">StringAttribute</span>,
1078
- 182: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1079
- 183: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Conditions'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1080
- 184: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1081
- 185: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1082
- 186: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1083
- 187: [ <span class="ruby-value str">'fte'</span>, <span class="ruby-value str">'FTE'</span>, <span class="ruby-constant">FloatAttribute</span>,
1084
- 188: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1.0</span> ],
1085
- 189: [ <span class="ruby-value str">'headcount'</span>, <span class="ruby-value str">'Headcount'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1086
- 190: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ],
1087
- 191: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1088
- 192: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1089
- 193: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1090
- 194: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1091
- 195: [ <span class="ruby-value str">'managers'</span>, <span class="ruby-value str">'Managers'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1092
- 196: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1093
- 197: [ <span class="ruby-value str">'rate'</span>, <span class="ruby-value str">'Rate'</span>, <span class="ruby-constant">FloatAttribute</span>,
1094
- 198: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1095
- 199: [ <span class="ruby-value str">'reports'</span>, <span class="ruby-value str">'Reports'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1096
- 200: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1097
- 201: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1098
- 202: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1099
- 203: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1100
- 204: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1101
- 205: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1102
- 206: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1103
- 207: [ <span class="ruby-value str">'vacations'</span>, <span class="ruby-value str">'Vacations'</span>, <span class="ruby-constant">IntervalListAttribute</span>,
1104
- 208: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, [] ],
1105
- 209: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1106
- 210: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1107
- 211: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1108
- 212: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1109
- 213: [ <span class="ruby-value str">'workinghours'</span>, <span class="ruby-value str">'Working Hours'</span>, <span class="ruby-constant">WorkingHoursAttribute</span>,
1110
- 214: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ]
1111
- 215: ]
1112
- 216: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1113
- 217:
1114
- 218: <span class="ruby-ivar">@tasks</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
1115
- 219: <span class="ruby-identifier">attrs</span> = [
1116
- 220: <span class="ruby-comment cmt"># ID Name Type</span>
1117
- 221: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1118
- 222: [ <span class="ruby-value str">'allocate'</span>, <span class="ruby-value str">'Allocations'</span>, <span class="ruby-constant">AllocationAttribute</span>,
1119
- 223: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1120
- 224: [ <span class="ruby-value str">'assignedresources'</span>, <span class="ruby-value str">'Assigned Resources'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1121
- 225: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1122
- 226: [ <span class="ruby-value str">'booking'</span>, <span class="ruby-value str">'Bookings'</span>, <span class="ruby-constant">BookingListAttribute</span>,
1123
- 227: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1124
- 228: [ <span class="ruby-value str">'charge'</span>, <span class="ruby-value str">'Charges'</span>, <span class="ruby-constant">ChargeListAttribute</span>,
1125
- 229: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1126
- 230: [ <span class="ruby-value str">'chargeset'</span>, <span class="ruby-value str">'Charge Sets'</span>, <span class="ruby-constant">ChargeSetListAttribute</span>,
1127
- 231: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1128
- 232: [ <span class="ruby-value str">'complete'</span>, <span class="ruby-value str">'Completion'</span>, <span class="ruby-constant">FloatAttribute</span>,
1129
- 233: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1130
- 234: [ <span class="ruby-value str">'criticalness'</span>, <span class="ruby-value str">'Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1131
- 235: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1132
- 236: [ <span class="ruby-value str">'depends'</span>, <span class="ruby-value str">'Preceding tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1133
- 237: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1134
- 238: [ <span class="ruby-value str">'duration'</span>, <span class="ruby-value str">'Duration'</span>, <span class="ruby-constant">DurationAttribute</span>,
1135
- 239: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1136
- 240: [ <span class="ruby-value str">'effort'</span>, <span class="ruby-value str">'Effort'</span>, <span class="ruby-constant">DurationAttribute</span>,
1137
- 241: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1138
- 242: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1139
- 243: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1140
- 244: [ <span class="ruby-value str">'endpreds'</span>, <span class="ruby-value str">'End Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1141
- 245: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1142
- 246: [ <span class="ruby-value str">'endsuccs'</span>, <span class="ruby-value str">'End Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1143
- 247: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1144
- 248: [ <span class="ruby-value str">'fail'</span>, <span class="ruby-value str">'Failure Conditions'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1145
- 249: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1146
- 250: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1147
- 251: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1148
- 252: [ <span class="ruby-value str">'forward'</span>, <span class="ruby-value str">'Scheduling'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1149
- 253: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span> ],
1150
- 254: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1151
- 255: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1152
- 256: [ <span class="ruby-value str">'length'</span>, <span class="ruby-value str">'Length'</span>, <span class="ruby-constant">DurationAttribute</span>,
1153
- 257: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0</span> ],
1154
- 258: [ <span class="ruby-value str">'limits'</span>, <span class="ruby-value str">'Limits'</span>, <span class="ruby-constant">LimitsAttribute</span>,
1155
- 259: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1156
- 260: [ <span class="ruby-value str">'maxend'</span>, <span class="ruby-value str">'Max. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1157
- 261: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1158
- 262: [ <span class="ruby-value str">'maxstart'</span>, <span class="ruby-value str">'Max. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1159
- 263: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1160
- 264: [ <span class="ruby-value str">'milestone'</span>, <span class="ruby-value str">'Milestone'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1161
- 265: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1162
- 266: [ <span class="ruby-value str">'minend'</span>, <span class="ruby-value str">'Min. End'</span>, <span class="ruby-constant">DateAttribute</span>,
1163
- 267: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1164
- 268: [ <span class="ruby-value str">'minstart'</span>, <span class="ruby-value str">'Min. Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1165
- 269: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1166
- 270: [ <span class="ruby-value str">'note'</span>, <span class="ruby-value str">'Note'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1167
- 271: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1168
- 272: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-value str">'Path Criticalness'</span>, <span class="ruby-constant">FloatAttribute</span>,
1169
- 273: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">0.0</span> ],
1170
- 274: [ <span class="ruby-value str">'precedes'</span>, <span class="ruby-value str">'Following tasks'</span>, <span class="ruby-constant">DependencyListAttribute</span>,
1171
- 275: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1172
- 276: [ <span class="ruby-value str">'priority'</span>, <span class="ruby-value str">'Priority'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1173
- 277: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">500</span> ],
1174
- 278: [ <span class="ruby-value str">'projectid'</span>, <span class="ruby-value str">'Project ID'</span>, <span class="ruby-constant">SymbolAttribute</span>,
1175
- 279: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1176
- 280: [ <span class="ruby-value str">'responsible'</span>, <span class="ruby-value str">'Responsible'</span>, <span class="ruby-constant">ResourceListAttribute</span>,
1177
- 281: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1178
- 282: [ <span class="ruby-value str">'scheduled'</span>, <span class="ruby-value str">'Scheduled'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1179
- 283: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span> ],
1180
- 284: [ <span class="ruby-value str">'shifts'</span>, <span class="ruby-value str">'Shifts'</span>, <span class="ruby-constant">ShiftAssignmentsAttribute</span>,
1181
- 285: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1182
- 286: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1183
- 287: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">nil</span> ],
1184
- 288: [ <span class="ruby-value str">'startpreds'</span>, <span class="ruby-value str">'Start Preds.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1185
- 289: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1186
- 290: [ <span class="ruby-value str">'startsuccs'</span>, <span class="ruby-value str">'Start Succs.'</span>, <span class="ruby-constant">TaskListAttribute</span>,
1187
- 291: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1188
- 292: [ <span class="ruby-value str">'status'</span>, <span class="ruby-value str">'Task Status'</span>, <span class="ruby-constant">StringAttribute</span>,
1189
- 293: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1190
- 294: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1191
- 295: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1192
- 296: [ <span class="ruby-value str">'warn'</span>, <span class="ruby-value str">'Warning Condition'</span>, <span class="ruby-constant">LogicalExpressionListAttribute</span>,
1193
- 297: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1194
- 298: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1195
- 299: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ]
1196
- 300: ]
1197
- 301: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1198
- 302:
1199
- 303: <span class="ruby-ivar">@reports</span> = <span class="ruby-constant">PropertySet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">false</span>)
1200
- 304: <span class="ruby-identifier">attrs</span> = [
1201
- 305: <span class="ruby-comment cmt"># ID Name Type</span>
1202
- 306: <span class="ruby-comment cmt"># Inh. Inh.Prj Scen. Default</span>
1203
- 307: [ <span class="ruby-value str">'caption'</span>, <span class="ruby-value str">'Caption'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1204
- 308: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1205
- 309: [ <span class="ruby-value str">'center'</span>, <span class="ruby-value str">'Center'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1206
- 310: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1207
- 311: [ <span class="ruby-value str">'columns'</span>, <span class="ruby-value str">'Columns'</span>, <span class="ruby-constant">ColumnListAttribute</span>,
1208
- 312: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1209
- 313: [ <span class="ruby-value str">'costAccount'</span>, <span class="ruby-value str">'Cost Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1210
- 314: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1211
- 315: [ <span class="ruby-value str">'currencyFormat'</span>, <span class="ruby-value str">'Currency Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1212
- 316: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1213
- 317: [ <span class="ruby-value str">'definitions'</span>, <span class="ruby-value str">'Definitions'</span>, <span class="ruby-constant">DefinitionListAttribute</span>,
1214
- 318: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1215
- 319: [ <span class="ruby-value str">'end'</span>, <span class="ruby-value str">'End'</span>, <span class="ruby-constant">DateAttribute</span>,
1216
- 320: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1217
- 321: [ <span class="ruby-value str">'epilog'</span>, <span class="ruby-value str">'Epilog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1218
- 322: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1219
- 323: [ <span class="ruby-value str">'flags'</span>, <span class="ruby-value str">'Flags'</span>, <span class="ruby-constant">FlagListAttribute</span>,
1220
- 324: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, [] ],
1221
- 325: [ <span class="ruby-value str">'footer'</span>, <span class="ruby-value str">'Footer'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1222
- 326: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1223
- 327: [ <span class="ruby-value str">'formats'</span>, <span class="ruby-value str">'Formats'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1224
- 328: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [] ],
1225
- 329: [ <span class="ruby-value str">'ganttBars'</span>, <span class="ruby-value str">'Gantt Bars'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1226
- 330: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span> ],
1227
- 331: [ <span class="ruby-value str">'header'</span>, <span class="ruby-value str">'Header'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1228
- 332: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1229
- 333: [ <span class="ruby-value str">'headline'</span>, <span class="ruby-value str">'Headline'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1230
- 334: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1231
- 335: [ <span class="ruby-value str">'hideResource'</span>, <span class="ruby-value str">'Hide Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1232
- 336: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1233
- 337: [ <span class="ruby-value str">'hideTask'</span>, <span class="ruby-value str">'Hide Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1234
- 338: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1235
- 339: [ <span class="ruby-value str">'index'</span>, <span class="ruby-value str">'Index'</span>, <span class="ruby-constant">FixnumAttribute</span>,
1236
- 340: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value">1</span> ],
1237
- 341: [ <span class="ruby-value str">'interactive'</span>, <span class="ruby-value str">'Interactive'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1238
- 342: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1239
- 343: [ <span class="ruby-value str">'left'</span>, <span class="ruby-value str">'Left'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1240
- 344: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1241
- 345: [ <span class="ruby-value str">'loadUnit'</span>, <span class="ruby-value str">'Load Unit'</span>, <span class="ruby-constant">StringAttribute</span>,
1242
- 346: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1243
- 347: [ <span class="ruby-value str">'now'</span>, <span class="ruby-value str">'Now'</span>, <span class="ruby-constant">DateAttribute</span>,
1244
- 348: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1245
- 349: [ <span class="ruby-value str">'numberFormat'</span>, <span class="ruby-value str">'Number Format'</span>, <span class="ruby-constant">RealFormatAttribute</span>,
1246
- 350: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1247
- 351: [ <span class="ruby-value str">'openNodes'</span>, <span class="ruby-value str">'Open Nodes'</span>, <span class="ruby-constant">NodeListAttribute</span>,
1248
- 352: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1249
- 353: [ <span class="ruby-value str">'prolog'</span>, <span class="ruby-value str">'Prolog'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1250
- 354: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span>],
1251
- 355: [ <span class="ruby-value str">'resourceAttributes'</span>, <span class="ruby-value str">'Resource Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1252
- 356: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1253
- 357: [ <span class="ruby-value str">'resourceRoot'</span>, <span class="ruby-value str">'resource Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1254
- 358: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1255
- 359: [ <span class="ruby-value str">'revenueAccount'</span>, <span class="ruby-value str">'Revenue Account'</span>, <span class="ruby-constant">AccountAttribute</span>,
1256
- 360: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1257
- 361: [ <span class="ruby-value str">'right'</span>, <span class="ruby-value str">'Right'</span>, <span class="ruby-constant">RichTextAttribute</span>,
1258
- 362: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1259
- 363: [ <span class="ruby-value str">'rollupResource'</span>, <span class="ruby-value str">'Rollup Resource'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1260
- 364: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1261
- 365: [ <span class="ruby-value str">'rollupTask'</span>, <span class="ruby-value str">'Rollup Task'</span>, <span class="ruby-constant">LogicalExpressionAttribute</span>,
1262
- 366: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1263
- 367: [ <span class="ruby-value str">'scenarios'</span>, <span class="ruby-value str">'Scenarios'</span>, <span class="ruby-constant">ScenarioListAttribute</span>,
1264
- 368: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [ <span class="ruby-value">0</span> ] ],
1265
- 369: [ <span class="ruby-value str">'selfcontained'</span>, <span class="ruby-value str">'Selfcontained'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1266
- 370: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ],
1267
- 371: [ <span class="ruby-value str">'shortTimeFormat'</span>, <span class="ruby-value str">'Short Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1268
- 372: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1269
- 373: [ <span class="ruby-value str">'sortResources'</span>, <span class="ruby-value str">'Sort Resources'</span>, <span class="ruby-constant">SortListAttribute</span>,
1270
- 374: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1271
- 375: [ <span class="ruby-value str">'sortTasks'</span>, <span class="ruby-value str">'Sort Tasks'</span>, <span class="ruby-constant">SortListAttribute</span>,
1272
- 376: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, [[ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]] ],
1273
- 377: [ <span class="ruby-value str">'start'</span>, <span class="ruby-value str">'Start'</span>, <span class="ruby-constant">DateAttribute</span>,
1274
- 378: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1275
- 379: [ <span class="ruby-value str">'taskAttributes'</span>, <span class="ruby-value str">'Task Attributes'</span>, <span class="ruby-constant">FormatListAttribute</span>,
1276
- 380: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ]) ],
1277
- 381: [ <span class="ruby-value str">'taskRoot'</span>, <span class="ruby-value str">'Task Root'</span>, <span class="ruby-constant">PropertyAttribute</span>,
1278
- 382: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1279
- 383: [ <span class="ruby-value str">'timeFormat'</span>, <span class="ruby-value str">'Time Format'</span>, <span class="ruby-constant">StringAttribute</span>,
1280
- 384: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1281
- 385: [ <span class="ruby-value str">'timeOffId'</span>, <span class="ruby-value str">'Time Off ID'</span>, <span class="ruby-constant">StringAttribute</span>,
1282
- 386: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1283
- 387: [ <span class="ruby-value str">'timeOffName'</span>, <span class="ruby-value str">'Time Off Name'</span>, <span class="ruby-constant">StringAttribute</span>,
1284
- 388: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1285
- 389: [ <span class="ruby-value str">'timezone'</span>, <span class="ruby-value str">'Time Zone'</span>, <span class="ruby-constant">StringAttribute</span>,
1286
- 390: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1287
- 391: [ <span class="ruby-value str">'title'</span>, <span class="ruby-value str">'Title'</span>, <span class="ruby-constant">StringAttribute</span>,
1288
- 392: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">nil</span> ],
1289
- 393: [ <span class="ruby-value str">'tree'</span>, <span class="ruby-value str">'Tree Index'</span>, <span class="ruby-constant">StringAttribute</span>,
1290
- 394: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1291
- 395: [ <span class="ruby-value str">'wbs'</span>, <span class="ruby-value str">'WBS'</span>, <span class="ruby-constant">StringAttribute</span>,
1292
- 396: <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">&quot;&quot;</span> ],
1293
- 397: [ <span class="ruby-value str">'weekStartsMonday'</span>, <span class="ruby-value str">'Week Starts Monday'</span>, <span class="ruby-constant">BooleanAttribute</span>,
1294
- 398: <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span> ]
1295
- 399: ]
1296
- 400: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(*<span class="ruby-identifier">a</span>)) }
1297
- 401:
1298
- 402: <span class="ruby-constant">Scenario</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'plan'</span>, <span class="ruby-value str">'Plan Scenario'</span>, <span class="ruby-keyword kw">nil</span>)
1299
- 403:
1300
- 404: <span class="ruby-comment cmt"># A list of files that contained the project data.</span>
1301
- 405: <span class="ruby-ivar">@inputFiles</span> = <span class="ruby-constant">FileList</span>.<span class="ruby-identifier">new</span>
1302
- 406:
1303
- 407: <span class="ruby-ivar">@timeSheets</span> = <span class="ruby-constant">TimeSheets</span>.<span class="ruby-identifier">new</span>
1304
- 408:
1305
- 409: <span class="ruby-comment cmt"># A scoreboard that reflects the global working hours and vacations.</span>
1306
- 410: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
1307
- 411: <span class="ruby-comment cmt"># A scoreboard that reflects the global working hours but no vacations.</span>
1308
- 412: <span class="ruby-ivar">@scoreboardNoVacations</span> = <span class="ruby-keyword kw">nil</span>
1309
- 413:
1310
- 414: <span class="ruby-comment cmt"># The ReportContext provides additional settings to the report that can</span>
1311
- 415: <span class="ruby-comment cmt"># complement or replace the report attributes. Reports can include other</span>
1312
- 416: <span class="ruby-comment cmt"># reports. During report generation, only one context is active, but the</span>
1313
- 417: <span class="ruby-comment cmt"># context of enclosing reports needs to be preserved. Therefor we use a</span>
1314
- 418: <span class="ruby-comment cmt"># stack to implement this.</span>
1315
- 419: <span class="ruby-ivar">@reportContexts</span> = []
1316
- 420: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
1317
- 421: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
1318
- 422: <span class="ruby-keyword kw">end</span></pre>
1319
- </div>
1320
-
1321
- </div>
1322
-
1323
-
1324
-
1325
-
1326
- </div>
1327
-
1328
-
1329
- </div>
1330
-
1331
- <div id="public-instance-method-details" class="method-section section">
1332
- <h3 class="section-header">Public Instance Methods</h3>
1333
-
1334
-
1335
- <div id="--method" class="method-detail ">
1336
- <a name="method-i-%5B%5D"></a>
1337
-
1338
- <div class="method-heading">
1339
-
1340
- <span class="method-name">[]</span><span
1341
- class="method-args">(name)</span>
1342
- <span class="method-click-advice">click to toggle source</span>
1343
-
1344
- </div>
1345
-
1346
- <div class="method-description">
1347
-
1348
- <p>
1349
- <a href="Query.html">Query</a> the value of a <a
1350
- href="Project.html">Project</a> attribute. <em>name</em> is the ID of the
1351
- attribute.
1352
- </p>
1353
-
1354
-
1355
-
1356
- <div class="method-source-code"
1357
- id="--source">
1358
- <pre>
1359
- <span class="ruby-comment cmt"># File lib/Project.rb, line 431</span>
1360
- 431: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">name</span>)
1361
- 432: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1362
- 433: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1363
- 434: <span class="ruby-keyword kw">end</span>
1364
- 435: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>]
1365
- 436: <span class="ruby-keyword kw">end</span></pre>
1366
- </div>
1367
-
1368
- </div>
1369
-
1370
-
1371
-
1372
-
1373
- </div>
1374
-
1375
-
1376
- <div id="--method" class="method-detail ">
1377
- <a name="method-i-%5B%5D%3D"></a>
1378
-
1379
- <div class="method-heading">
1380
-
1381
- <span class="method-name">[]=</span><span
1382
- class="method-args">(name, value)</span>
1383
- <span class="method-click-advice">click to toggle source</span>
1384
-
1385
- </div>
1386
-
1387
- <div class="method-description">
1388
-
1389
- <p>
1390
- Set the <a href="Project.html">Project</a> attribute with ID <em>name</em>
1391
- to <em>value</em>.
1392
- </p>
1393
-
1394
-
1395
-
1396
- <div class="method-source-code"
1397
- id="--source">
1398
- <pre>
1399
- <span class="ruby-comment cmt"># File lib/Project.rb, line 439</span>
1400
- 439: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
1401
- 440: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
1402
- 441: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown project attribute #{name}&quot;</span>
1403
- 442: <span class="ruby-keyword kw">end</span>
1404
- 443: <span class="ruby-ivar">@attributes</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
1405
- 444:
1406
- 445: <span class="ruby-comment cmt"># If the start, end or schedule granularity have been changed, we have</span>
1407
- 446: <span class="ruby-comment cmt"># to reset the working hours.</span>
1408
- 447: <span class="ruby-keyword kw">if</span> <span class="ruby-node">%(start end scheduleGranularity timezone timingresolution)</span>.
1409
- 448: <span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>)
1410
- 449: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>]
1411
- 450: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>] =
1412
- 451: <span class="ruby-constant">WorkingHours</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>],
1413
- 452: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>])
1414
- 453: <span class="ruby-comment cmt"># WorkingHours is using a copy-on-write scheme to prevent multiple</span>
1415
- 454: <span class="ruby-comment cmt"># copies of the same Scoreboard. All other WorkingHours objects are</span>
1416
- 455: <span class="ruby-comment cmt"># created as copies of this object. By calling</span>
1417
- 456: <span class="ruby-comment cmt"># WorkingHours::onShift? we make sure this instance has got a</span>
1418
- 457: <span class="ruby-comment cmt"># Scoreboard than gets reused by the other instances.</span>
1419
- 458: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>].<span class="ruby-identifier">onShift?</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>])
1420
- 459: <span class="ruby-keyword kw">end</span>
1421
- 460: <span class="ruby-keyword kw">end</span>
1422
- 461: <span class="ruby-keyword kw">end</span></pre>
1423
- </div>
1424
-
1425
- </div>
1426
-
1427
-
1428
-
1429
-
1430
- </div>
1431
-
1432
-
1433
- <div id="account-method" class="method-detail ">
1434
- <a name="method-i-account"></a>
1435
-
1436
- <div class="method-heading">
1437
-
1438
- <span class="method-name">account</span><span
1439
- class="method-args">(id)</span>
1440
- <span class="method-click-advice">click to toggle source</span>
1441
-
1442
- </div>
1443
-
1444
- <div class="method-description">
1445
-
1446
- <p>
1447
- Return the <a href="Account.html">Account</a> with the ID <em>id</em> or
1448
- return nil if it does not exist.
1449
- </p>
1450
-
1451
-
1452
-
1453
- <div class="method-source-code"
1454
- id="account-source">
1455
- <pre>
1456
- <span class="ruby-comment cmt"># File lib/Project.rb, line 564</span>
1457
- 564: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">account</span>(<span class="ruby-identifier">id</span>)
1458
- 565: <span class="ruby-ivar">@accounts</span>[<span class="ruby-identifier">id</span>]
1459
- 566: <span class="ruby-keyword kw">end</span></pre>
1460
- </div>
1461
-
1462
- </div>
1463
-
1464
-
1465
-
1466
-
1467
- </div>
1468
-
1469
-
1470
- <div id="alert-evel-olor-method" class="method-detail ">
1471
- <a name="method-i-alertLevelColor"></a>
1472
-
1473
- <div class="method-heading">
1474
-
1475
- <span class="method-name">alertLevelColor</span><span
1476
- class="method-args">(levelIndex)</span>
1477
- <span class="method-click-advice">click to toggle source</span>
1478
-
1479
- </div>
1480
-
1481
- <div class="method-description">
1482
-
1483
- <p>
1484
- Return the color of the alert level with the given <em>levelIndex</em>. Or
1485
- nil if the level does not exist. The color is an RGB encoded byte array,
1486
- stored as hexadecimal <a href="../String.html">String</a>, prefixed with a
1487
- pound sign.
1488
- </p>
1489
-
1490
-
1491
-
1492
- <div class="method-source-code"
1493
- id="alert-evel-olor-source">
1494
- <pre>
1495
- <span class="ruby-comment cmt"># File lib/Project.rb, line 496</span>
1496
- 496: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelColor</span>(<span class="ruby-identifier">levelIndex</span>)
1497
- 497: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1498
- 498: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">2</span>]
1499
- 499: <span class="ruby-keyword kw">end</span></pre>
1500
- </div>
1501
-
1502
- </div>
1503
-
1504
-
1505
-
1506
-
1507
- </div>
1508
-
1509
-
1510
- <div id="alert-evel-d-method" class="method-detail ">
1511
- <a name="method-i-alertLevelId"></a>
1512
-
1513
- <div class="method-heading">
1514
-
1515
- <span class="method-name">alertLevelId</span><span
1516
- class="method-args">(levelIndex)</span>
1517
- <span class="method-click-advice">click to toggle source</span>
1518
-
1519
- </div>
1520
-
1521
- <div class="method-description">
1522
-
1523
- <p>
1524
- Return the ID or keyword of the alert level with the given
1525
- <em>levelIndex</em>. Or nil if the level does not exist.
1526
- </p>
1527
-
1528
-
1529
-
1530
- <div class="method-source-code"
1531
- id="alert-evel-d-source">
1532
- <pre>
1533
- <span class="ruby-comment cmt"># File lib/Project.rb, line 481</span>
1534
- 481: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelId</span>(<span class="ruby-identifier">levelIndex</span>)
1535
- 482: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1536
- 483: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">0</span>]
1537
- 484: <span class="ruby-keyword kw">end</span></pre>
1538
- </div>
1539
-
1540
- </div>
1541
-
1542
-
1543
-
1544
-
1545
- </div>
1546
-
1547
-
1548
- <div id="alert-evel-ndex-method" class="method-detail ">
1549
- <a name="method-i-alertLevelIndex"></a>
1550
-
1551
- <div class="method-heading">
1552
-
1553
- <span class="method-name">alertLevelIndex</span><span
1554
- class="method-args">(levelName)</span>
1555
- <span class="method-click-advice">click to toggle source</span>
1556
-
1557
- </div>
1558
-
1559
- <div class="method-description">
1560
-
1561
- <p>
1562
- Try to match <em>levelName</em> to a defined alert level name and return
1563
- the index of it. If no level is found, nil is returned.
1564
- </p>
1565
-
1566
-
1567
-
1568
- <div class="method-source-code"
1569
- id="alert-evel-ndex-source">
1570
- <pre>
1571
- <span class="ruby-comment cmt"># File lib/Project.rb, line 470</span>
1572
- 470: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelIndex</span>(<span class="ruby-identifier">levelName</span>)
1573
- 471: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>].<span class="ruby-identifier">length</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>
1574
- 472: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">levelName</span>
1575
- 473: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span>
1576
- 474: <span class="ruby-keyword kw">end</span>
1577
- 475: <span class="ruby-keyword kw">end</span>
1578
- 476: <span class="ruby-keyword kw">nil</span>
1579
- 477: <span class="ruby-keyword kw">end</span></pre>
1580
- </div>
1581
-
1582
- </div>
1583
-
1584
-
1585
-
1586
-
1587
- </div>
1588
-
1589
-
1590
- <div id="alert-evel-ame-method" class="method-detail ">
1591
- <a name="method-i-alertLevelName"></a>
1592
-
1593
- <div class="method-heading">
1594
-
1595
- <span class="method-name">alertLevelName</span><span
1596
- class="method-args">(levelIndex)</span>
1597
- <span class="method-click-advice">click to toggle source</span>
1598
-
1599
- </div>
1600
-
1601
- <div class="method-description">
1602
-
1603
- <p>
1604
- Return the user readable name of the alert level with the given
1605
- <em>levelIndex</em>. Or nil if the level does not exist.
1606
- </p>
1607
-
1608
-
1609
-
1610
- <div class="method-source-code"
1611
- id="alert-evel-ame-source">
1612
- <pre>
1613
- <span class="ruby-comment cmt"># File lib/Project.rb, line 488</span>
1614
- 488: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alertLevelName</span>(<span class="ruby-identifier">levelIndex</span>)
1615
- 489: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'unknown'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>]
1616
- 490: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">levelIndex</span>][<span class="ruby-value">1</span>]
1617
- 491: <span class="ruby-keyword kw">end</span></pre>
1618
- </div>
1619
-
1620
- </div>
1621
-
1622
-
1623
-
1624
-
1625
- </div>
1626
-
1627
-
1628
- <div id="attribute-ame-method" class="method-detail ">
1629
- <a name="method-i-attributeName"></a>
1630
-
1631
- <div class="method-heading">
1632
-
1633
- <span class="method-name">attributeName</span><span
1634
- class="method-args">(id)</span>
1635
- <span class="method-click-advice">click to toggle source</span>
1636
-
1637
- </div>
1638
-
1639
- <div class="method-description">
1640
-
1641
- <p>
1642
- Return the name of the attribute <em>id</em>. Since we don&#8217;t know
1643
- whether we are looking for a task, resource, etc. attribute, we prefer
1644
- tasks over resources here.
1645
- </p>
1646
-
1647
-
1648
-
1649
- <div class="method-source-code"
1650
- id="attribute-ame-source">
1651
- <pre>
1652
- <span class="ruby-comment cmt"># File lib/Project.rb, line 901</span>
1653
- 901: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)
1654
- 902: <span class="ruby-comment cmt"># We have to see if the attribute id is a task or resource attribute and</span>
1655
- 903: <span class="ruby-comment cmt"># return it's name.</span>
1656
- 904: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span>
1657
- 905: (<span class="ruby-identifier">name</span> = <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">id</span>)).<span class="ruby-identifier">nil?</span>
1658
- 906: <span class="ruby-identifier">name</span>
1659
- 907: <span class="ruby-keyword kw">end</span></pre>
1660
- </div>
1661
-
1662
- </div>
1663
-
1664
-
1665
-
1666
-
1667
- </div>
1668
-
1669
-
1670
- <div id="check-eports-method" class="method-detail ">
1671
- <a name="method-i-checkReports"></a>
1672
-
1673
- <div class="method-heading">
1674
-
1675
- <span class="method-name">checkReports</span><span
1676
- class="method-args">()</span>
1677
- <span class="method-click-advice">click to toggle source</span>
1678
-
1679
- </div>
1680
-
1681
- <div class="method-description">
1682
-
1683
- <p>
1684
- Make sure that we have a least one report defined that has an output
1685
- format.
1686
- </p>
1687
-
1688
-
1689
-
1690
- <div class="method-source-code"
1691
- id="check-eports-source">
1692
- <pre>
1693
- <span class="ruby-comment cmt"># File lib/Project.rb, line 636</span>
1694
- 636: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkReports</span>
1695
- 637: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">empty?</span>
1696
- 638: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'no_report_defined'</span>,
1697
- 639: <span class="ruby-value str">&quot;This project has no reports defined. &quot;</span> <span class="ruby-operator">+</span>
1698
- 640: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
1699
- 641: <span class="ruby-keyword kw">end</span>
1700
- 642:
1701
- 643: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
1702
- 644: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
1703
- 645: <span class="ruby-keyword kw">end</span>
1704
- 646:
1705
- 647: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'all_formats_empty'</span>,
1706
- 648: <span class="ruby-value str">&quot;None of the reports has a 'formats' attribute. &quot;</span> <span class="ruby-operator">+</span>
1707
- 649: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
1708
- 650: <span class="ruby-keyword kw">end</span></pre>
1709
- </div>
1710
-
1711
- </div>
1712
-
1713
-
1714
-
1715
-
1716
- </div>
1717
-
1718
-
1719
- <div id="check-ime-heets-method" class="method-detail ">
1720
- <a name="method-i-checkTimeSheets"></a>
1721
-
1722
- <div class="method-heading">
1723
-
1724
- <span class="method-name">checkTimeSheets</span><span
1725
- class="method-args">()</span>
1726
- <span class="method-click-advice">click to toggle source</span>
1727
-
1728
- </div>
1729
-
1730
- <div class="method-description">
1731
-
1732
-
1733
-
1734
-
1735
-
1736
- <div class="method-source-code"
1737
- id="check-ime-heets-source">
1738
- <pre>
1739
- <span class="ruby-comment cmt"># File lib/Project.rb, line 747</span>
1740
- 747: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheets</span>
1741
- 748: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
1742
- 749: <span class="ruby-keyword kw">end</span></pre>
1743
- </div>
1744
-
1745
- </div>
1746
-
1747
-
1748
-
1749
-
1750
- </div>
1751
-
1752
-
1753
- <div id="collect-ime-ff-ntervals-method" class="method-detail ">
1754
- <a name="method-i-collectTimeOffIntervals"></a>
1755
-
1756
- <div class="method-heading">
1757
-
1758
- <span class="method-name">collectTimeOffIntervals</span><span
1759
- class="method-args">(iv, minDuration)</span>
1760
- <span class="method-click-advice">click to toggle source</span>
1761
-
1762
- </div>
1763
-
1764
- <div class="method-description">
1765
-
1766
-
1767
-
1768
-
1769
-
1770
- <div class="method-source-code"
1771
- id="collect-ime-ff-ntervals-source">
1772
- <pre>
1773
- <span class="ruby-comment cmt"># File lib/Project.rb, line 858</span>
1774
- 858: <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>)
1775
- 859: <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>
1776
- 860: <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>
1777
- 861: <span class="ruby-keyword kw">end</span>
1778
- 862: <span class="ruby-keyword kw">end</span></pre>
1779
- </div>
1780
-
1781
- </div>
1782
-
1783
-
1784
-
1785
-
1786
- </div>
1787
-
1788
-
1789
- <div id="convert-o-aily-oad-method" class="method-detail ">
1790
- <a name="method-i-convertToDailyLoad"></a>
1791
-
1792
- <div class="method-heading">
1793
-
1794
- <span class="method-name">convertToDailyLoad</span><span
1795
- class="method-args">(seconds)</span>
1796
- <span class="method-click-advice">click to toggle source</span>
1797
-
1798
- </div>
1799
-
1800
- <div class="method-description">
1801
-
1802
- <p>
1803
- Convert working <em>seconds</em> to working days. The result depends on the
1804
- setting of the global &#8216;dailyworkinghours&#8217; attribute.
1805
- </p>
1806
-
1807
-
1808
-
1809
- <div class="method-source-code"
1810
- id="convert-o-aily-oad-source">
1811
- <pre>
1812
- <span class="ruby-comment cmt"># File lib/Project.rb, line 817</span>
1813
- 817: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convertToDailyLoad</span>(<span class="ruby-identifier">seconds</span>)
1814
- 818: <span class="ruby-identifier">seconds</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>] * <span class="ruby-value">3600.0</span>)
1815
- 819: <span class="ruby-keyword kw">end</span></pre>
1816
- </div>
1817
-
1818
- </div>
1819
-
1820
-
1821
-
1822
-
1823
- </div>
1824
-
1825
-
1826
- <div id="daily-orking-ours-method" class="method-detail ">
1827
- <a name="method-i-dailyWorkingHours"></a>
1828
-
1829
- <div class="method-heading">
1830
-
1831
- <span class="method-name">dailyWorkingHours</span><span
1832
- class="method-args">()</span>
1833
- <span class="method-click-advice">click to toggle source</span>
1834
-
1835
- </div>
1836
-
1837
- <div class="method-description">
1838
-
1839
- <p>
1840
- Return the average number of working hours per day. This defaults to 8 but
1841
- can be set to other values by the user.
1842
- </p>
1843
-
1844
-
1845
-
1846
- <div class="method-source-code"
1847
- id="daily-orking-ours-source">
1848
- <pre>
1849
- <span class="ruby-comment cmt"># File lib/Project.rb, line 503</span>
1850
- 503: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dailyWorkingHours</span>
1851
- 504: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'dailyworkinghours'</span>].<span class="ruby-identifier">to_f</span>
1852
- 505: <span class="ruby-keyword kw">end</span></pre>
1853
- </div>
1854
-
1855
- </div>
1856
-
1857
-
1858
-
1859
-
1860
- </div>
1861
-
1862
-
1863
- <div id="date-o-dx-method" class="method-detail ">
1864
- <a name="method-i-dateToIdx"></a>
1865
-
1866
- <div class="method-heading">
1867
-
1868
- <span class="method-name">dateToIdx</span><span
1869
- class="method-args">(date, forceIntoProject = false)</span>
1870
- <span class="method-click-advice">click to toggle source</span>
1871
-
1872
- </div>
1873
-
1874
- <div class="method-description">
1875
-
1876
- <p>
1877
- Convert a <em>date</em> (<a href="TjTime.html">TjTime</a>) to the
1878
- equivalent <a href="Scoreboard.html">Scoreboard</a> index. If
1879
- <em>forceIntoProject</em> is true, the date will be pushed into the project
1880
- time frame.
1881
- </p>
1882
-
1883
-
1884
-
1885
- <div class="method-source-code"
1886
- id="date-o-dx-source">
1887
- <pre>
1888
- <span class="ruby-comment cmt"># File lib/Project.rb, line 843</span>
1889
- 843: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">forceIntoProject</span> = <span class="ruby-keyword kw">false</span>)
1890
- 844: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>])
1891
- 845: <span class="ruby-comment cmt"># Date is out of range.</span>
1892
- 846: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">forceIntoProject</span>
1893
- 847: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]
1894
- 848: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">scoreboardSize</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>]
1895
- 849: <span class="ruby-keyword kw">else</span>
1896
- 850: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Date #{date} is out of project time range &quot;</span> <span class="ruby-operator">+</span>
1897
- 851: <span class="ruby-node">&quot;(#{@attributes['start']} - #{@attributes['end']})&quot;</span>
1898
- 852: <span class="ruby-keyword kw">end</span>
1899
- 853: <span class="ruby-keyword kw">end</span>
1900
- 854: <span class="ruby-comment cmt"># Calculate the corresponding index.</span>
1901
- 855: ((<span class="ruby-identifier">date</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
1902
- 856: <span class="ruby-keyword kw">end</span></pre>
1903
- </div>
1904
-
1905
- </div>
1906
-
1907
-
1908
-
1909
-
1910
- </div>
1911
-
1912
-
1913
- <div id="deep-clone-method" class="method-detail ">
1914
- <a name="method-i-deep_clone"></a>
1915
-
1916
- <div class="method-heading">
1917
-
1918
- <span class="method-name">deep_clone</span><span
1919
- class="method-args">()</span>
1920
- <span class="method-click-advice">click to toggle source</span>
1921
-
1922
- </div>
1923
-
1924
- <div class="method-description">
1925
-
1926
- <p>
1927
- Overload the <a href="Project.html#method-i-deep_clone">deep_clone</a>
1928
- function so that references to the project don&#8217;t lead to deep copying
1929
- of the whole project.
1930
- </p>
1931
-
1932
-
1933
-
1934
- <div class="method-source-code"
1935
- id="deep-clone-source">
1936
- <pre>
1937
- <span class="ruby-comment cmt"># File lib/Project.rb, line 426</span>
1938
- 426: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
1939
- 427: <span class="ruby-keyword kw">self</span>
1940
- 428: <span class="ruby-keyword kw">end</span></pre>
1941
- </div>
1942
-
1943
- </div>
1944
-
1945
-
1946
-
1947
-
1948
- </div>
1949
-
1950
-
1951
- <div id="error-method" class="method-detail ">
1952
- <a name="method-i-error"></a>
1953
-
1954
- <div class="method-heading">
1955
-
1956
- <span class="method-name">error</span><span
1957
- class="method-args">(id, text)</span>
1958
- <span class="method-click-advice">click to toggle source</span>
1959
-
1960
- </div>
1961
-
1962
- <div class="method-description">
1963
-
1964
- <p>
1965
- This function sends an error message to the message handler.
1966
- </p>
1967
-
1968
-
1969
-
1970
- <div class="method-source-code"
1971
- id="error-source">
1972
- <pre>
1973
- <span class="ruby-comment cmt"># File lib/Project.rb, line 923</span>
1974
- 923: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1975
- 924: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>)
1976
- 925: <span class="ruby-keyword kw">end</span></pre>
1977
- </div>
1978
-
1979
- </div>
1980
-
1981
-
1982
-
1983
-
1984
- </div>
1985
-
1986
-
1987
- <div id="generate-eport-method" class="method-detail ">
1988
- <a name="method-i-generateReport"></a>
1989
-
1990
- <div class="method-heading">
1991
-
1992
- <span class="method-name">generateReport</span><span
1993
- class="method-args">(reportId, regExpMode, formats = nil, dynamicAttributes = nil)</span>
1994
- <span class="method-click-advice">click to toggle source</span>
1995
-
1996
- </div>
1997
-
1998
- <div class="method-description">
1999
-
2000
-
2001
-
2002
-
2003
-
2004
- <div class="method-source-code"
2005
- id="generate-eport-source">
2006
- <pre>
2007
- <span class="ruby-comment cmt"># File lib/Project.rb, line 694</span>
2008
- 694: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>, <span class="ruby-identifier">formats</span> = <span class="ruby-keyword kw">nil</span>,
2009
- 695: <span class="ruby-identifier">dynamicAttributes</span> = <span class="ruby-keyword kw">nil</span>)
2010
- 696: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
2011
- 697: [ <span class="ruby-identifier">reportId</span> ]
2012
- 698: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
2013
- 699: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>])
2014
- 700: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unknown_report_id'</span>,
2015
- 701: <span class="ruby-node">&quot;Request to generate unknown report #{id}&quot;</span>)
2016
- 702: <span class="ruby-keyword kw">end</span>
2017
- 703: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
2018
- 704: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'formats_empty'</span>,
2019
- 705: <span class="ruby-node">&quot;The report #{report.fullId} has no 'formats' attribute. &quot;</span> <span class="ruby-operator">+</span>
2020
- 706: <span class="ruby-value str">&quot;No output data will be generated.&quot;</span>)
2021
- 707: <span class="ruby-keyword kw">end</span>
2022
- 708:
2023
- 709: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
2024
- 710: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">context</span> = <span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
2025
- 711:
2026
- 712: <span class="ruby-comment cmt"># If we have dynamic attributes we need to backup the old attributes</span>
2027
- 713: <span class="ruby-comment cmt"># first, then parse the dynamicAttributes String replacing the</span>
2028
- 714: <span class="ruby-comment cmt"># original values.</span>
2029
- 715: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span>
2030
- 716: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">dynamicAttributes</span>.<span class="ruby-identifier">empty?</span>
2031
- 717: <span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">backupAttributes</span>
2032
- 718: <span class="ruby-identifier">parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
2033
- 719: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parseReportAttributes</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">dynamicAttributes</span>)
2034
- 720: <span class="ruby-keyword kw">end</span>
2035
- 721: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'interactive'</span>, <span class="ruby-keyword kw">true</span>)
2036
- 722: <span class="ruby-keyword kw">end</span>
2037
- 723:
2038
- 724: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>(<span class="ruby-identifier">formats</span>)
2039
- 725:
2040
- 726: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dynamicAttributes</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">dynamicAttributes</span>.<span class="ruby-identifier">empty?</span>
2041
- 727: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">restoreAttributes</span>(<span class="ruby-identifier">context</span>.<span class="ruby-identifier">attributeBackup</span>)
2042
- 728: <span class="ruby-keyword kw">end</span>
2043
- 729: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2044
- 730: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2045
- 731: <span class="ruby-keyword kw">end</span>
2046
- 732: <span class="ruby-keyword kw">end</span></pre>
2047
- </div>
2048
-
2049
- </div>
2050
-
2051
-
2052
-
2053
-
2054
- </div>
2055
-
2056
-
2057
- <div id="generate-eports-method" class="method-detail ">
2058
- <a name="method-i-generateReports"></a>
2059
-
2060
- <div class="method-heading">
2061
-
2062
- <span class="method-name">generateReports</span><span
2063
- class="method-args">(maxCpuCores)</span>
2064
- <span class="method-click-advice">click to toggle source</span>
2065
-
2066
- </div>
2067
-
2068
- <div class="method-description">
2069
-
2070
- <p>
2071
- Call this function to generate the reports based on the scheduling result.
2072
- This function may only be called after <a
2073
- href="Project.html#method-i-schedule">Project#schedule</a> has been called.
2074
- </p>
2075
-
2076
-
2077
-
2078
- <div class="method-source-code"
2079
- id="generate-eports-source">
2080
- <pre>
2081
- <span class="ruby-comment cmt"># File lib/Project.rb, line 654</span>
2082
- 654: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReports</span>(<span class="ruby-identifier">maxCpuCores</span>)
2083
- 655: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">index</span>
2084
- 656: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">maxCpuCores</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2085
- 657: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2086
- 658: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
2087
- 659: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.name}&quot;</span>)
2088
- 660: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
2089
- 661: <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
2090
- 662: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2091
- 663: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2092
- 664: <span class="ruby-keyword kw">end</span>
2093
- 665: <span class="ruby-keyword kw">else</span>
2094
- 666: <span class="ruby-comment cmt"># Kickoff the generation of all reports by pushing the jobs into the</span>
2095
- 667: <span class="ruby-comment cmt"># BatchProcessor queue.</span>
2096
- 668: <span class="ruby-identifier">bp</span> = <span class="ruby-constant">BatchProcessor</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">maxCpuCores</span>)
2097
- 669: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2098
- 670: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>).<span class="ruby-identifier">empty?</span>
2099
- 671: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">queue</span>(<span class="ruby-identifier">report</span>) {
2100
- 672: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">ReportContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">report</span>))
2101
- 673: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">generate</span>
2102
- 674: <span class="ruby-ivar">@reportContexts</span>.<span class="ruby-identifier">pop</span>
2103
- 675: <span class="ruby-identifier">res</span>
2104
- 676: }
2105
- 677: <span class="ruby-keyword kw">end</span>
2106
- 678: <span class="ruby-comment cmt"># Now wait for all the jobs to finish.</span>
2107
- 679: <span class="ruby-identifier">bp</span>.<span class="ruby-identifier">wait</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2108
- 680: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Report #{report.tag.name}&quot;</span>)
2109
- 681: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stdout</span>)
2110
- 682: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">stderr</span>)
2111
- 683: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">signaled?</span>
2112
- 684: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'rg_signal'</span>, <span class="ruby-value str">&quot;Signal raised&quot;</span>)
2113
- 685: <span class="ruby-keyword kw">end</span>
2114
- 686: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">retVal</span>.<span class="ruby-identifier">success?</span>
2115
- 687: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'rg_abort'</span>, <span class="ruby-value str">&quot;Process aborted&quot;</span>)
2116
- 688: <span class="ruby-keyword kw">end</span>
2117
- 689: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2118
- 690: <span class="ruby-keyword kw">end</span>
2119
- 691: <span class="ruby-keyword kw">end</span>
2120
- 692: <span class="ruby-keyword kw">end</span></pre>
2121
- </div>
2122
-
2123
- </div>
2124
-
2125
-
2126
-
2127
-
2128
- </div>
2129
-
2130
-
2131
- <div id="idx-o-ate-method" class="method-detail ">
2132
- <a name="method-i-idxToDate"></a>
2133
-
2134
- <div class="method-heading">
2135
-
2136
- <span class="method-name">idxToDate</span><span
2137
- class="method-args">(idx)</span>
2138
- <span class="method-click-advice">click to toggle source</span>
2139
-
2140
- </div>
2141
-
2142
- <div class="method-description">
2143
-
2144
- <p>
2145
- Convert a <a href="Scoreboard.html">Scoreboard</a> index to the equivalent
2146
- date. <em>idx</em> is the index and it must be within the range of the <a
2147
- href="Scoreboard.html">Scoreboard</a> objects. If not, an exception is
2148
- raised.
2149
- </p>
2150
-
2151
-
2152
-
2153
- <div class="method-source-code"
2154
- id="idx-o-ate-source">
2155
- <pre>
2156
- <span class="ruby-comment cmt"># File lib/Project.rb, line 833</span>
2157
- 833: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
2158
- 834: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">idx</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">idx</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">scoreboardSize</span>)
2159
- 835: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Scoreboard index out of range&quot;</span>
2160
- 836: <span class="ruby-keyword kw">end</span>
2161
- 837: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">idx</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
2162
- 838: <span class="ruby-keyword kw">end</span></pre>
2163
- </div>
2164
-
2165
- </div>
2166
-
2167
-
2168
-
2169
-
2170
- </div>
2171
-
2172
-
2173
- <div id="is-orking-ime-method" class="method-detail ">
2174
- <a name="method-i-isWorkingTime"></a>
2175
-
2176
- <div class="method-heading">
2177
-
2178
- <span class="method-callseq">isWorkingTime(slot) &rarr; true or false
2179
- isWorkingTime(startTime, endTime) &rarr; true or false
2180
- isWorkingTime(interval) &rarr; true or false</span>
2181
- <span class="method-click-advice">click to toggle source</span>
2182
-
2183
- </div>
2184
-
2185
- <div class="method-description">
2186
-
2187
- <p>
2188
- Return true if the <em>slot</em> (<a href="TjTime.html">TjTime</a>) is
2189
- withing globally defined working time or false if not. If the argument is
2190
- an <a href="Interval.html">Interval</a>, all slots of the interval must be
2191
- working time to return true as result. Global work time means, no vacation
2192
- defined and the slot lies within a defined working time period.
2193
- </p>
2194
-
2195
-
2196
-
2197
- <div class="method-source-code"
2198
- id="is-orking-ime-source">
2199
- <pre>
2200
- <span class="ruby-comment cmt"># File lib/Project.rb, line 792</span>
2201
- 792: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isWorkingTime</span>(*<span class="ruby-identifier">args</span>)
2202
- 793: <span class="ruby-comment cmt"># Normalize argument(s) to Interval</span>
2203
- 794: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
2204
- 795: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Interval</span>)
2205
- 796: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
2206
- 797: <span class="ruby-keyword kw">else</span>
2207
- 798: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">+</span>
2208
- 799: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
2209
- 800: <span class="ruby-keyword kw">end</span>
2210
- 801: <span class="ruby-keyword kw">else</span>
2211
- 802: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>])
2212
- 803: <span class="ruby-keyword kw">end</span>
2213
- 804:
2214
- 805: <span class="ruby-comment cmt"># Check if the interval has overlap with any of the global vacations.</span>
2215
- 806: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'vacations'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vacation</span><span class="ruby-operator">|</span>
2216
- 807: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">vacation</span>.<span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
2217
- 808: <span class="ruby-keyword kw">end</span>
2218
- 809:
2219
- 810: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>].<span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">iv</span>)
2220
- 811:
2221
- 812: <span class="ruby-keyword kw">true</span>
2222
- 813: <span class="ruby-keyword kw">end</span></pre>
2223
- </div>
2224
-
2225
- </div>
2226
-
2227
-
2228
-
2229
-
2230
- </div>
2231
-
2232
-
2233
- <div id="list-eports-method" class="method-detail ">
2234
- <a name="method-i-listReports"></a>
2235
-
2236
- <div class="method-heading">
2237
-
2238
- <span class="method-name">listReports</span><span
2239
- class="method-args">(reportId, regExpMode)</span>
2240
- <span class="method-click-advice">click to toggle source</span>
2241
-
2242
- </div>
2243
-
2244
- <div class="method-description">
2245
-
2246
-
2247
-
2248
-
2249
-
2250
- <div class="method-source-code"
2251
- id="list-eports-source">
2252
- <pre>
2253
- <span class="ruby-comment cmt"># File lib/Project.rb, line 734</span>
2254
- 734: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">listReports</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">regExpMode</span>)
2255
- 735: <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">regExpMode</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">reportList</span> = <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">:</span>
2256
- 736: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">reportId</span>] <span class="ruby-operator">?</span> [ <span class="ruby-identifier">reportId</span> ] <span class="ruby-operator">:</span> []
2257
- 737: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;No match for #{reportId}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">empty?</span>
2258
- 738: <span class="ruby-identifier">reportList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
2259
- 739: <span class="ruby-identifier">report</span> = <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2260
- 740: <span class="ruby-identifier">formats</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'formats'</span>)
2261
- 741: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">empty?</span>
2262
- 742:
2263
- 743: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%s\t%s\t%s&quot;</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">formats</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">', '</span>), <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span>)
2264
- 744: <span class="ruby-keyword kw">end</span>
2265
- 745: <span class="ruby-keyword kw">end</span></pre>
2266
- </div>
2267
-
2268
- </div>
2269
-
2270
-
2271
-
2272
-
2273
- </div>
2274
-
2275
-
2276
- <div id="monthly-orking-ays-method" class="method-detail ">
2277
- <a name="method-i-monthlyWorkingDays"></a>
2278
-
2279
- <div class="method-heading">
2280
-
2281
- <span class="method-name">monthlyWorkingDays</span><span
2282
- class="method-args">()</span>
2283
- <span class="method-click-advice">click to toggle source</span>
2284
-
2285
- </div>
2286
-
2287
- <div class="method-description">
2288
-
2289
- <p>
2290
- Return the average number of working days per month.
2291
- </p>
2292
-
2293
-
2294
-
2295
- <div class="method-source-code"
2296
- id="monthly-orking-ays-source">
2297
- <pre>
2298
- <span class="ruby-comment cmt"># File lib/Project.rb, line 513</span>
2299
- 513: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">monthlyWorkingDays</span>
2300
- 514: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">12.0</span>
2301
- 515: <span class="ruby-keyword kw">end</span></pre>
2302
- </div>
2303
-
2304
- </div>
2305
-
2306
-
2307
-
2308
-
2309
- </div>
2310
-
2311
-
2312
- <div id="report-method" class="method-detail ">
2313
- <a name="method-i-report"></a>
2314
-
2315
- <div class="method-heading">
2316
-
2317
- <span class="method-name">report</span><span
2318
- class="method-args">(id)</span>
2319
- <span class="method-click-advice">click to toggle source</span>
2320
-
2321
- </div>
2322
-
2323
- <div class="method-description">
2324
-
2325
- <p>
2326
- Return the <a href="Report.html">Report</a> with the ID <tt>id</tt> or
2327
- return nil if it does not exist.
2328
- </p>
2329
-
2330
-
2331
-
2332
- <div class="method-source-code"
2333
- id="report-source">
2334
- <pre>
2335
- <span class="ruby-comment cmt"># File lib/Project.rb, line 579</span>
2336
- 579: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-identifier">id</span>)
2337
- 580: <span class="ruby-ivar">@reports</span>[<span class="ruby-identifier">id</span>]
2338
- 581: <span class="ruby-keyword kw">end</span></pre>
2339
- </div>
2340
-
2341
- </div>
2342
-
2343
-
2344
-
2345
-
2346
- </div>
2347
-
2348
-
2349
- <div id="report-y-ame-method" class="method-detail ">
2350
- <a name="method-i-reportByName"></a>
2351
-
2352
- <div class="method-heading">
2353
-
2354
- <span class="method-name">reportByName</span><span
2355
- class="method-args">(name)</span>
2356
- <span class="method-click-advice">click to toggle source</span>
2357
-
2358
- </div>
2359
-
2360
- <div class="method-description">
2361
-
2362
- <p>
2363
- Return the <a href="Report.html">Report</a> with the name <tt>name</tt> or
2364
- return nil if it does not exist.
2365
- </p>
2366
-
2367
-
2368
-
2369
- <div class="method-source-code"
2370
- id="report-y-ame-source">
2371
- <pre>
2372
- <span class="ruby-comment cmt"># File lib/Project.rb, line 585</span>
2373
- 585: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
2374
- 586: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
2375
- 587: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">report</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span>
2376
- 588: <span class="ruby-keyword kw">end</span>
2377
- 589: <span class="ruby-keyword kw">nil</span>
2378
- 590: <span class="ruby-keyword kw">end</span></pre>
2379
- </div>
2380
-
2381
- </div>
2382
-
2383
-
2384
-
2385
-
2386
- </div>
2387
-
2388
-
2389
- <div id="resource-method" class="method-detail ">
2390
- <a name="method-i-resource"></a>
2391
-
2392
- <div class="method-heading">
2393
-
2394
- <span class="method-name">resource</span><span
2395
- class="method-args">(id)</span>
2396
- <span class="method-click-advice">click to toggle source</span>
2397
-
2398
- </div>
2399
-
2400
- <div class="method-description">
2401
-
2402
- <p>
2403
- Return the <a href="Resource.html">Resource</a> with the ID <em>id</em> or
2404
- return nil if it does not exist.
2405
- </p>
2406
-
2407
-
2408
-
2409
- <div class="method-source-code"
2410
- id="resource-source">
2411
- <pre>
2412
- <span class="ruby-comment cmt"># File lib/Project.rb, line 574</span>
2413
- 574: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resource</span>(<span class="ruby-identifier">id</span>)
2414
- 575: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">id</span>]
2415
- 576: <span class="ruby-keyword kw">end</span></pre>
2416
- </div>
2417
-
2418
- </div>
2419
-
2420
-
2421
-
2422
-
2423
- </div>
2424
-
2425
-
2426
- <div id="scenario-method" class="method-detail ">
2427
- <a name="method-i-scenario"></a>
2428
-
2429
- <div class="method-heading">
2430
-
2431
- <span class="method-callseq">scenario(index) &rarr; Scenario
2432
- scenario(id) &rarr; Scenario</span>
2433
- <span class="method-click-advice">click to toggle source</span>
2434
-
2435
- </div>
2436
-
2437
- <div class="method-description">
2438
-
2439
- <p>
2440
- Return the <a href="Scenario.html">Scenario</a> with the given <em>id</em>
2441
- or <em>index</em>.
2442
- </p>
2443
-
2444
-
2445
-
2446
- <div class="method-source-code"
2447
- id="scenario-source">
2448
- <pre>
2449
- <span class="ruby-comment cmt"># File lib/Project.rb, line 532</span>
2450
- 532: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">arg</span>)
2451
- 533: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
2452
- 534: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sc</span><span class="ruby-operator">|</span>
2453
- 535: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">arg</span>
2454
- 536: <span class="ruby-keyword kw">end</span>
2455
- 537: <span class="ruby-keyword kw">else</span>
2456
- 538: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">arg</span>]
2457
- 539: <span class="ruby-keyword kw">end</span>
2458
- 540: <span class="ruby-keyword kw">nil</span>
2459
- 541: <span class="ruby-keyword kw">end</span></pre>
2460
- </div>
2461
-
2462
- </div>
2463
-
2464
-
2465
-
2466
-
2467
- </div>
2468
-
2469
-
2470
- <div id="scenario-ount-method" class="method-detail ">
2471
- <a name="method-i-scenarioCount"></a>
2472
-
2473
- <div class="method-heading">
2474
-
2475
- <span class="method-name">scenarioCount</span><span
2476
- class="method-args">()</span>
2477
- <span class="method-click-advice">click to toggle source</span>
2478
-
2479
- </div>
2480
-
2481
- <div class="method-description">
2482
-
2483
- <p>
2484
- Return the number of defined scenarios for the project.
2485
- </p>
2486
-
2487
-
2488
-
2489
- <div class="method-source-code"
2490
- id="scenario-ount-source">
2491
- <pre>
2492
- <span class="ruby-comment cmt"># File lib/Project.rb, line 464</span>
2493
- 464: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioCount</span>
2494
- 465: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">items</span>
2495
- 466: <span class="ruby-keyword kw">end</span></pre>
2496
- </div>
2497
-
2498
- </div>
2499
-
2500
-
2501
-
2502
-
2503
- </div>
2504
-
2505
-
2506
- <div id="scenario-dx-method" class="method-detail ">
2507
- <a name="method-i-scenarioIdx"></a>
2508
-
2509
- <div class="method-heading">
2510
-
2511
- <span class="method-callseq">scenarioIdx(scenario)
2512
- scenarioIdx(id)</span>
2513
- <span class="method-click-advice">click to toggle source</span>
2514
-
2515
- </div>
2516
-
2517
- <div class="method-description">
2518
-
2519
- <p>
2520
- Return the index of the given <a href="Scenario.html">Scenario</a>
2521
- specified by <em>scenario</em> or <em>id</em>.
2522
- </p>
2523
-
2524
-
2525
-
2526
- <div class="method-source-code"
2527
- id="scenario-dx-source">
2528
- <pre>
2529
- <span class="ruby-comment cmt"># File lib/Project.rb, line 548</span>
2530
- 548: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2531
- 549: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Scenario</span>)
2532
- 550: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2533
- 551: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">nil?</span>
2534
- 552: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
2535
- 553: <span class="ruby-keyword kw">else</span>
2536
- 554: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scenarios</span>[<span class="ruby-identifier">sc</span>].<span class="ruby-identifier">sequenceNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
2537
- 555: <span class="ruby-keyword kw">end</span>
2538
- 556: <span class="ruby-keyword kw">end</span></pre>
2539
- </div>
2540
-
2541
- </div>
2542
-
2543
-
2544
-
2545
-
2546
- </div>
2547
-
2548
-
2549
- <div id="schedule-method" class="method-detail ">
2550
- <a name="method-i-schedule"></a>
2551
-
2552
- <div class="method-heading">
2553
-
2554
- <span class="method-name">schedule</span><span
2555
- class="method-args">()</span>
2556
- <span class="method-click-advice">click to toggle source</span>
2557
-
2558
- </div>
2559
-
2560
- <div class="method-description">
2561
-
2562
- <p>
2563
- This function must be called after the <a href="Project.html">Project</a>
2564
- data structures have been filled with data. It schedules all scenario and
2565
- stores the result in the data structures again.
2566
- </p>
2567
-
2568
-
2569
-
2570
- <div class="method-source-code"
2571
- id="schedule-source">
2572
- <pre>
2573
- <span class="ruby-comment cmt"># File lib/Project.rb, line 595</span>
2574
- 595: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">schedule</span>
2575
- 596: <span class="ruby-identifier">initScoreboards</span>
2576
- 597:
2577
- 598: [ <span class="ruby-ivar">@shifts</span>, <span class="ruby-ivar">@resources</span>, <span class="ruby-ivar">@tasks</span> ].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
2578
- 599: <span class="ruby-comment cmt"># Set all index counters to their proper values.</span>
2579
- 600: <span class="ruby-identifier">p</span>.<span class="ruby-identifier">index</span>
2580
- 601: <span class="ruby-keyword kw">end</span>
2581
- 602:
2582
- 603: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">empty?</span>
2583
- 604: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-value str">'no_tasks'</span>, <span class="ruby-value str">&quot;No tasks defined&quot;</span>)
2584
- 605: <span class="ruby-keyword kw">end</span>
2585
- 606:
2586
- 607: <span class="ruby-ivar">@scenarios</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sc</span><span class="ruby-operator">|</span>
2587
- 608: <span class="ruby-comment cmt"># Skip disabled scenarios</span>
2588
- 609: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sc</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'enabled'</span>)
2589
- 610:
2590
- 611: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-identifier">sc</span>)
2591
- 612:
2592
- 613: <span class="ruby-comment cmt"># All user provided values are set now. The next step is to</span>
2593
- 614: <span class="ruby-comment cmt"># propagate inherited values. These values must be marked as</span>
2594
- 615: <span class="ruby-comment cmt"># inherited by setting the mode to 1. As we always call</span>
2595
- 616: <span class="ruby-comment cmt"># PropertyTreeNode#inherit this is just a safeguard.</span>
2596
- 617: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">1</span>)
2597
- 618: <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
2598
- 619:
2599
- 620: <span class="ruby-comment cmt"># Now change to mode 2 so all values that are modified are marked</span>
2600
- 621: <span class="ruby-comment cmt"># as computed.</span>
2601
- 622: <span class="ruby-constant">AttributeBase</span>.<span class="ruby-identifier">setMode</span>(<span class="ruby-value">2</span>)
2602
- 623: <span class="ruby-comment cmt"># Schedule the scenario.</span>
2603
- 624: <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
2604
- 625:
2605
- 626: <span class="ruby-comment cmt"># Complete the data sets, and check the result.</span>
2606
- 627: <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2607
- 628: <span class="ruby-keyword kw">end</span>
2608
- 629:
2609
- 630: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">warnOnDelta</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@warnTsDeltas</span>
2610
- 631: <span class="ruby-keyword kw">true</span>
2611
- 632: <span class="ruby-keyword kw">end</span></pre>
2612
- </div>
2613
-
2614
- </div>
2615
-
2616
-
2617
-
2618
-
2619
- </div>
2620
-
2621
-
2622
- <div id="scoreboard-ize-method" class="method-detail ">
2623
- <a name="method-i-scoreboardSize"></a>
2624
-
2625
- <div class="method-heading">
2626
-
2627
- <span class="method-name">scoreboardSize</span><span
2628
- class="method-args">()</span>
2629
- <span class="method-click-advice">click to toggle source</span>
2630
-
2631
- </div>
2632
-
2633
- <div class="method-description">
2634
-
2635
- <p>
2636
- Many internal data structures use <a href="Scoreboard.html">Scoreboard</a>
2637
- objects to keep track of scheduling data. These have one entry for every
2638
- schedulable time slot in the project time frame. This functions returns the
2639
- number of entries in the scoreboards.
2640
- </p>
2641
-
2642
-
2643
-
2644
- <div class="method-source-code"
2645
- id="scoreboard-ize-source">
2646
- <pre>
2647
- <span class="ruby-comment cmt"># File lib/Project.rb, line 825</span>
2648
- 825: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scoreboardSize</span>
2649
- 826: ((<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>] <span class="ruby-operator">-</span> <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>]) <span class="ruby-operator">/</span>
2650
- 827: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
2651
- 828: <span class="ruby-keyword kw">end</span></pre>
2652
- </div>
2653
-
2654
- </div>
2655
-
2656
-
2657
-
2658
-
2659
- </div>
2660
-
2661
-
2662
- <div id="shift-method" class="method-detail ">
2663
- <a name="method-i-shift"></a>
2664
-
2665
- <div class="method-heading">
2666
-
2667
- <span class="method-name">shift</span><span
2668
- class="method-args">(id)</span>
2669
- <span class="method-click-advice">click to toggle source</span>
2670
-
2671
- </div>
2672
-
2673
- <div class="method-description">
2674
-
2675
- <p>
2676
- Return the <a href="Shift.html">Shift</a> with the ID <em>id</em> or return
2677
- nil if it does not exist.
2678
- </p>
2679
-
2680
-
2681
-
2682
- <div class="method-source-code"
2683
- id="shift-source">
2684
- <pre>
2685
- <span class="ruby-comment cmt"># File lib/Project.rb, line 559</span>
2686
- 559: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shift</span>(<span class="ruby-identifier">id</span>)
2687
- 560: <span class="ruby-ivar">@shifts</span>[<span class="ruby-identifier">id</span>]
2688
- 561: <span class="ruby-keyword kw">end</span></pre>
2689
- </div>
2690
-
2691
- </div>
2692
-
2693
-
2694
-
2695
-
2696
- </div>
2697
-
2698
-
2699
- <div id="slots-o-ays-method" class="method-detail ">
2700
- <a name="method-i-slotsToDays"></a>
2701
-
2702
- <div class="method-heading">
2703
-
2704
- <span class="method-name">slotsToDays</span><span
2705
- class="method-args">(slots)</span>
2706
- <span class="method-click-advice">click to toggle source</span>
2707
-
2708
- </div>
2709
-
2710
- <div class="method-description">
2711
-
2712
- <p>
2713
- Convert timeSlots to working days.
2714
- </p>
2715
-
2716
-
2717
-
2718
- <div class="method-source-code"
2719
- id="slots-o-ays-source">
2720
- <pre>
2721
- <span class="ruby-comment cmt"># File lib/Project.rb, line 523</span>
2722
- 523: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
2723
- 524: <span class="ruby-identifier">slots</span> * <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>] <span class="ruby-operator">/</span> (<span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-identifier">dailyWorkingHours</span>)
2724
- 525: <span class="ruby-keyword kw">end</span></pre>
2725
- </div>
2726
-
2727
- </div>
2728
-
2729
-
2730
-
2731
-
2732
- </div>
2733
-
2734
-
2735
- <div id="task-method" class="method-detail ">
2736
- <a name="method-i-task"></a>
2737
-
2738
- <div class="method-heading">
2739
-
2740
- <span class="method-name">task</span><span
2741
- class="method-args">(id)</span>
2742
- <span class="method-click-advice">click to toggle source</span>
2743
-
2744
- </div>
2745
-
2746
- <div class="method-description">
2747
-
2748
- <p>
2749
- Return the <a href="Task.html">Task</a> with the ID <em>id</em> or return
2750
- nil if it does not exist.
2751
- </p>
2752
-
2753
-
2754
-
2755
- <div class="method-source-code"
2756
- id="task-source">
2757
- <pre>
2758
- <span class="ruby-comment cmt"># File lib/Project.rb, line 569</span>
2759
- 569: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">task</span>(<span class="ruby-identifier">id</span>)
2760
- 570: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">id</span>]
2761
- 571: <span class="ruby-keyword kw">end</span></pre>
2762
- </div>
2763
-
2764
- </div>
2765
-
2766
-
2767
-
2768
-
2769
- </div>
2770
-
2771
-
2772
- <div id="to-s-method" class="method-detail ">
2773
- <a name="method-i-to_s"></a>
2774
-
2775
- <div class="method-heading">
2776
-
2777
- <span class="method-name">to_s</span><span
2778
- class="method-args">()</span>
2779
- <span class="method-click-advice">click to toggle source</span>
2780
-
2781
- </div>
2782
-
2783
- <div class="method-description">
2784
-
2785
- <p>
2786
- Print the attribute values. It&#8217;s used for debugging only.
2787
- </p>
2788
-
2789
-
2790
-
2791
- <div class="method-source-code"
2792
- id="to-s-source">
2793
- <pre>
2794
- <span class="ruby-comment cmt"># File lib/Project.rb, line 910</span>
2795
- 910: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
2796
- 911: <span class="ruby-comment cmt">#raise &quot;STOP!&quot;</span>
2797
- 912: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
2798
- 913: <span class="ruby-ivar">@attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
2799
- 914: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
2800
- 915: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{attribute}: &quot;</span> <span class="ruby-operator">+</span>
2801
- 916: <span class="ruby-node">&quot;#{value.is_a?(PropertyTreeNode) ? value.fullId : value}&quot;</span>
2802
- 917: <span class="ruby-keyword kw">end</span>
2803
- 918: <span class="ruby-keyword kw">end</span>
2804
- 919: <span class="ruby-identifier">str</span>
2805
- 920: <span class="ruby-keyword kw">end</span></pre>
2806
- </div>
2807
-
2808
- </div>
2809
-
2810
-
2811
-
2812
-
2813
- </div>
2814
-
2815
-
2816
- <div id="weekly-orking-ays-method" class="method-detail ">
2817
- <a name="method-i-weeklyWorkingDays"></a>
2818
-
2819
- <div class="method-heading">
2820
-
2821
- <span class="method-name">weeklyWorkingDays</span><span
2822
- class="method-args">()</span>
2823
- <span class="method-click-advice">click to toggle source</span>
2824
-
2825
- </div>
2826
-
2827
- <div class="method-description">
2828
-
2829
- <p>
2830
- Return the average number of working days per week.
2831
- </p>
2832
-
2833
-
2834
-
2835
- <div class="method-source-code"
2836
- id="weekly-orking-ays-source">
2837
- <pre>
2838
- <span class="ruby-comment cmt"># File lib/Project.rb, line 508</span>
2839
- 508: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weeklyWorkingDays</span>
2840
- 509: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>] <span class="ruby-operator">/</span> <span class="ruby-value">52.1429</span>
2841
- 510: <span class="ruby-keyword kw">end</span></pre>
2842
- </div>
2843
-
2844
- </div>
2845
-
2846
-
2847
-
2848
-
2849
- </div>
2850
-
2851
-
2852
- <div id="working-ays-method" class="method-detail ">
2853
- <a name="method-i-workingDays"></a>
2854
-
2855
- <div class="method-heading">
2856
-
2857
- <span class="method-name">workingDays</span><span
2858
- class="method-args">(interval)</span>
2859
- <span class="method-click-advice">click to toggle source</span>
2860
-
2861
- </div>
2862
-
2863
- <div class="method-description">
2864
-
2865
- <p>
2866
- Return the number of working days (ignoring global vacations) during the
2867
- given <em>interval</em>.
2868
- </p>
2869
-
2870
-
2871
-
2872
- <div class="method-source-code"
2873
- id="working-ays-source">
2874
- <pre>
2875
- <span class="ruby-comment cmt"># File lib/Project.rb, line 866</span>
2876
- 866: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">workingDays</span>(<span class="ruby-identifier">interval</span>)
2877
- 867: <span class="ruby-identifier">startIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>, <span class="ruby-keyword kw">true</span>)
2878
- 868: <span class="ruby-identifier">endIdx</span> = <span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>, <span class="ruby-keyword kw">true</span>)
2879
- 869: <span class="ruby-identifier">slots</span> = <span class="ruby-value">0</span>
2880
- 870: <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>
2881
- 871: <span class="ruby-identifier">slots</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboardNoVacations</span>[<span class="ruby-identifier">idx</span>]
2882
- 872: <span class="ruby-keyword kw">end</span>
2883
- 873: <span class="ruby-identifier">slotsToDays</span>(<span class="ruby-identifier">slots</span>)
2884
- 874: <span class="ruby-keyword kw">end</span></pre>
2885
- </div>
2886
-
2887
- </div>
2888
-
2889
-
2890
-
2891
-
2892
- </div>
2893
-
2894
-
2895
- <div id="yearly-orking-ays-method" class="method-detail ">
2896
- <a name="method-i-yearlyWorkingDays"></a>
2897
-
2898
- <div class="method-heading">
2899
-
2900
- <span class="method-name">yearlyWorkingDays</span><span
2901
- class="method-args">()</span>
2902
- <span class="method-click-advice">click to toggle source</span>
2903
-
2904
- </div>
2905
-
2906
- <div class="method-description">
2907
-
2908
- <p>
2909
- Return the average number of working days per year.
2910
- </p>
2911
-
2912
-
2913
-
2914
- <div class="method-source-code"
2915
- id="yearly-orking-ays-source">
2916
- <pre>
2917
- <span class="ruby-comment cmt"># File lib/Project.rb, line 518</span>
2918
- 518: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">yearlyWorkingDays</span>
2919
- 519: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'yearlyworkingdays'</span>].<span class="ruby-identifier">to_f</span>
2920
- 520: <span class="ruby-keyword kw">end</span></pre>
2921
- </div>
2922
-
2923
- </div>
2924
-
2925
-
2926
-
2927
-
2928
- </div>
2929
-
2930
-
2931
- </div>
2932
-
2933
- <div id="protected-instance-method-details" class="method-section section">
2934
- <h3 class="section-header">Protected Instance Methods</h3>
2935
-
2936
-
2937
- <div id="finish-cenario-method" class="method-detail ">
2938
- <a name="method-i-finishScenario"></a>
2939
-
2940
- <div class="method-heading">
2941
-
2942
- <span class="method-name">finishScenario</span><span
2943
- class="method-args">(scIdx)</span>
2944
- <span class="method-click-advice">click to toggle source</span>
2945
-
2946
- </div>
2947
-
2948
- <div class="method-description">
2949
-
2950
-
2951
-
2952
-
2953
-
2954
- <div class="method-source-code"
2955
- id="finish-cenario-source">
2956
- <pre>
2957
- <span class="ruby-comment cmt"># File lib/Project.rb, line 996</span>
2958
- 996: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishScenario</span>(<span class="ruby-identifier">scIdx</span>)
2959
- 997: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Checking scenario #{scenario(scIdx).get('name')}&quot;</span>)
2960
- 998: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2961
- 999: <span class="ruby-comment cmt"># Recursively traverse the top-level tasks to finish all tasks.</span>
2962
- 1000: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>
2963
- 1001: <span class="ruby-keyword kw">end</span>
2964
- 1002:
2965
- 1003: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2966
- 1004: <span class="ruby-comment cmt"># Recursively traverse the top-level resources to finish them all.</span>
2967
- 1005: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">finishScheduling</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">parent</span>
2968
- 1006: <span class="ruby-keyword kw">end</span>
2969
- 1007:
2970
- 1008: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
2971
- 1009: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">items</span>
2972
- 1010: <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
2973
- 1011: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
2974
- 1012: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
2975
- 1013: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>)
2976
- 1014: <span class="ruby-keyword kw">end</span>
2977
- 1015:
2978
- 1016: <span class="ruby-comment cmt"># This should be really fast so we don't log progess.</span>
2979
- 1017: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
2980
- 1018: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">postScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
2981
- 1019: <span class="ruby-keyword kw">end</span>
2982
- 1020:
2983
- 1021: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
2984
- 1022: <span class="ruby-keyword kw">end</span></pre>
2985
- </div>
2986
-
2987
- </div>
2988
-
2989
-
2990
-
2991
-
2992
- </div>
2993
-
2994
-
2995
- <div id="prepare-cenario-method" class="method-detail ">
2996
- <a name="method-i-prepareScenario"></a>
2997
-
2998
- <div class="method-heading">
2999
-
3000
- <span class="method-name">prepareScenario</span><span
3001
- class="method-args">(scIdx)</span>
3002
- <span class="method-click-advice">click to toggle source</span>
3003
-
3004
- </div>
3005
-
3006
- <div class="method-description">
3007
-
3008
-
3009
-
3010
-
3011
-
3012
- <div class="method-source-code"
3013
- id="prepare-cenario-source">
3014
- <pre>
3015
- <span class="ruby-comment cmt"># File lib/Project.rb, line 929</span>
3016
- 929: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepareScenario</span>(<span class="ruby-identifier">scIdx</span>)
3017
- 930: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-value str">&quot;Preparing scenario &quot;</span> <span class="ruby-operator">+</span>
3018
- 931: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
3019
- 932: <span class="ruby-identifier">resources</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@resources</span>)
3020
- 933: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
3021
- 934:
3022
- 935: <span class="ruby-comment cmt"># Compile a list of leaf resources that are actually used in this</span>
3023
- 936: <span class="ruby-comment cmt"># project.</span>
3024
- 937: <span class="ruby-identifier">usedResources</span> = []
3025
- 938: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3026
- 939: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">candidates</span>(<span class="ruby-identifier">scIdx</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3027
- 940: <span class="ruby-identifier">usedResources</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">resource</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>)
3028
- 941: <span class="ruby-keyword kw">end</span>
3029
- 942: <span class="ruby-keyword kw">end</span>
3030
- 943: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">length</span>
3031
- 944: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3032
- 945: <span class="ruby-identifier">usedResources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3033
- 946: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>)
3034
- 947: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>)
3035
- 948: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3036
- 949: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>((<span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) * <span class="ruby-value">0.8</span>)
3037
- 950: <span class="ruby-keyword kw">end</span>
3038
- 951:
3039
- 952: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setDirectReports</span>(<span class="ruby-identifier">scIdx</span>) }
3040
- 953: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">setReports</span>(<span class="ruby-identifier">scIdx</span>) }
3041
- 954:
3042
- 955: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">prepareScheduling</span>(<span class="ruby-identifier">scIdx</span>) }
3043
- 956: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-constant">Xref</span>(<span class="ruby-identifier">scIdx</span>) }
3044
- 957: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">propagateInitialValues</span>(<span class="ruby-identifier">scIdx</span>) }
3045
- 958: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">preScheduleCheck</span>(<span class="ruby-identifier">scIdx</span>) }
3046
- 959:
3047
- 960: <span class="ruby-comment cmt"># Check for dependency loops in the task graph.</span>
3048
- 961: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
3049
- 962: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3050
- 963: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
3051
- 964: <span class="ruby-keyword kw">end</span>
3052
- 965: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.85</span>)
3053
- 966: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">resetLoopFlags</span>(<span class="ruby-identifier">scIdx</span>) }
3054
- 967: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3055
- 968: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">checkForLoops</span>(<span class="ruby-identifier">scIdx</span>, [], <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
3056
- 969: <span class="ruby-keyword kw">end</span>
3057
- 970: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.87</span>)
3058
- 971:
3059
- 972: <span class="ruby-comment cmt"># Compute the criticalness of the tasks and their pathes.</span>
3060
- 973: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">countResourceAllocations</span>(<span class="ruby-identifier">scIdx</span>) }
3061
- 974: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.88</span>)
3062
- 975: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
3063
- 976: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.9</span>)
3064
- 977: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
3065
- 978: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.95</span>)
3066
- 979: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcPathCriticalness</span>(<span class="ruby-identifier">scIdx</span>) }
3067
- 980: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">0.99</span>)
3068
- 981: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">check</span>
3069
- 982: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-value">1.0</span>)
3070
- 983:
3071
- 984: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3072
- 985: <span class="ruby-comment cmt"># This is used for debugging only</span>
3073
- 986: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">false</span>
3074
- 987: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
3075
- 988: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{resource}&quot;</span>
3076
- 989: <span class="ruby-keyword kw">end</span>
3077
- 990: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3078
- 991: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{task}&quot;</span>
3079
- 992: <span class="ruby-keyword kw">end</span>
3080
- 993: <span class="ruby-keyword kw">end</span>
3081
- 994: <span class="ruby-keyword kw">end</span></pre>
3082
- </div>
3083
-
3084
- </div>
3085
-
3086
-
3087
-
3088
-
3089
- </div>
3090
-
3091
-
3092
- <div id="schedule-cenario-method" class="method-detail ">
3093
- <a name="method-i-scheduleScenario"></a>
3094
-
3095
- <div class="method-heading">
3096
-
3097
- <span class="method-name">scheduleScenario</span><span
3098
- class="method-args">(scIdx)</span>
3099
- <span class="method-click-advice">click to toggle source</span>
3100
-
3101
- </div>
3102
-
3103
- <div class="method-description">
3104
-
3105
- <p>
3106
- Schedule all tasks for the given <a href="Scenario.html">Scenario</a> with
3107
- index <tt>scIdx</tt>.
3108
- </p>
3109
-
3110
-
3111
-
3112
- <div class="method-source-code"
3113
- id="schedule-cenario-source">
3114
- <pre>
3115
- <span class="ruby-comment cmt"># File lib/Project.rb, line 1025</span>
3116
- 1025: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleScenario</span>(<span class="ruby-identifier">scIdx</span>)
3117
- 1026: <span class="ruby-identifier">tasks</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@tasks</span>)
3118
- 1027: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">leaf?</span> }
3119
- 1028:
3120
- 1029: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">enter</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;#{tasks.length} leaf tasks&quot;</span>)
3121
- 1030: <span class="ruby-comment cmt"># The sorting of the work item list determines which tasks will get their</span>
3122
- 1031: <span class="ruby-comment cmt"># resources first. The first sorting criterium is the user specified task</span>
3123
- 1032: <span class="ruby-comment cmt"># priority. The second criterium is the scheduler determined priority</span>
3124
- 1033: <span class="ruby-comment cmt"># stored in the pathcriticalness attribute. That way, the user can always</span>
3125
- 1034: <span class="ruby-comment cmt"># override the scheduler determined priority. To always have a defined</span>
3126
- 1035: <span class="ruby-comment cmt"># order, the third criterium is the sequence number.</span>
3127
- 1036: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">setSorting</span>([ [ <span class="ruby-value str">'priority'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
3128
- 1037: [ <span class="ruby-value str">'pathcriticalness'</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scIdx</span> ],
3129
- 1038: [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ] ])
3130
- 1039: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">sort!</span>
3131
- 1040: <span class="ruby-identifier">totalTasks</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">length</span>
3132
- 1041:
3133
- 1042: <span class="ruby-comment cmt"># Enter the main scheduling loop. This loop is only terminated when all</span>
3134
- 1043: <span class="ruby-comment cmt"># tasks have been scheduled or another thread has set the breakFlag to</span>
3135
- 1044: <span class="ruby-comment cmt"># true.</span>
3136
- 1045: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-value str">&quot;Scheduling scenario &quot;</span> <span class="ruby-operator">+</span>
3137
- 1046: <span class="ruby-node">&quot;#{scenario(scIdx).get('name')}&quot;</span>)
3138
- 1047: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
3139
- 1048: <span class="ruby-comment cmt"># The main scheduler loop only needs to look at the first task that is</span>
3140
- 1049: <span class="ruby-comment cmt"># ready to be scheduled.</span>
3141
- 1050: <span class="ruby-identifier">workItems</span> = <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">to_ary</span>
3142
- 1051:
3143
- 1052: <span class="ruby-comment cmt"># Count the already completed tasks.</span>
3144
- 1053: <span class="ruby-identifier">completedTasks</span> = <span class="ruby-value">0</span>
3145
- 1054: <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
3146
- 1055: <span class="ruby-identifier">completedTasks</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-identifier">scIdx</span>]
3147
- 1056: <span class="ruby-keyword kw">end</span>
3148
- 1057:
3149
- 1058: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">progress</span>(<span class="ruby-identifier">completedTasks</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">totalTasks</span>)
3150
- 1059: <span class="ruby-comment cmt"># Remove all tasks that are not ready for scheduling yet.</span>
3151
- 1060: <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">readyForScheduling?</span>(<span class="ruby-identifier">scIdx</span>) }
3152
- 1061:
3153
- 1062: <span class="ruby-comment cmt"># Check if we are done.</span>
3154
- 1063: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">workItems</span>.<span class="ruby-identifier">empty?</span>
3155
- 1064:
3156
- 1065: <span class="ruby-comment cmt"># The first task in the list is the one with the highes priority and</span>
3157
- 1066: <span class="ruby-comment cmt"># the largest path criticalness that is ready to be scheduled.</span>
3158
- 1067: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">workItems</span>[<span class="ruby-value">0</span>]
3159
- 1068: <span class="ruby-comment cmt"># Schedule it.</span>
3160
- 1069: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">schedule</span>(<span class="ruby-identifier">scIdx</span>)
3161
- 1070: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Task #{task.fullId}: #{task['start', scIdx]} -&gt; &quot;</span> <span class="ruby-operator">+</span>
3162
- 1071: <span class="ruby-node">&quot;#{task['end', scIdx]}&quot;</span>
3163
- 1072: <span class="ruby-keyword kw">end</span>
3164
- 1073: <span class="ruby-keyword kw">end</span>
3165
- 1074: <span class="ruby-identifier">unscheduledTasks</span> = []
3166
- 1075: <span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">unscheduledTasks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">t</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">t</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-identifier">scIdx</span>] }
3167
- 1076:
3168
- 1077: <span class="ruby-comment cmt"># Check for unscheduled tasks and report the first 10 of them as</span>
3169
- 1078: <span class="ruby-comment cmt"># warnings.</span>
3170
- 1079: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">empty?</span>
3171
- 1080: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
3172
- 1081: <span class="ruby-value str">'unscheduled_tasks'</span>,
3173
- 1082: <span class="ruby-node">&quot;#{unscheduledTasks.length} tasks could not be scheduled&quot;</span>)
3174
- 1083: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
3175
- 1084: <span class="ruby-identifier">unscheduledTasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
3176
- 1085: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(
3177
- 1086: <span class="ruby-value str">'unscheduled_task'</span>,
3178
- 1087: <span class="ruby-node">&quot;Task #{t.fullId}: &quot;</span> <span class="ruby-operator">+</span>
3179
- 1088: <span class="ruby-node">&quot;#{t['start', scIdx] ? t['start', scIdx] : '&lt;?&gt;'} -&gt; &quot;</span> <span class="ruby-operator">+</span>
3180
- 1089: <span class="ruby-node">&quot;#{t['end', scIdx] ? t['end', scIdx] : '&lt;?&gt;'}&quot;</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">t</span>,
3181
- 1090: <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scIdx</span>))
3182
- 1091:
3183
- 1092: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
3184
- 1093: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">10</span>
3185
- 1094: <span class="ruby-keyword kw">end</span>
3186
- 1095: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3187
- 1096: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
3188
- 1097: <span class="ruby-keyword kw">end</span>
3189
- 1098:
3190
- 1099: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
3191
- 1100: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">exit</span>(<span class="ruby-value str">'scheduleScenario'</span>, <span class="ruby-node">&quot;Scheduling of scenario #{scIdx} finished&quot;</span>)
3192
- 1101: <span class="ruby-keyword kw">true</span>
3193
- 1102: <span class="ruby-keyword kw">end</span></pre>
3194
- </div>
3195
-
3196
- </div>
3197
-
3198
-
3199
-
3200
-
3201
- </div>
3202
-
3203
-
3204
- </div>
3205
-
3206
- <div id="private-instance-method-details" class="method-section section">
3207
- <h3 class="section-header">Private Instance Methods</h3>
3208
-
3209
-
3210
- <div id="init-coreboards-method" class="method-detail ">
3211
- <a name="method-i-initScoreboards"></a>
3212
-
3213
- <div class="method-heading">
3214
-
3215
- <span class="method-name">initScoreboards</span><span
3216
- class="method-args">()</span>
3217
- <span class="method-click-advice">click to toggle source</span>
3218
-
3219
- </div>
3220
-
3221
- <div class="method-description">
3222
-
3223
-
3224
-
3225
-
3226
-
3227
- <div class="method-source-code"
3228
- id="init-coreboards-source">
3229
- <pre>
3230
- <span class="ruby-comment cmt"># File lib/Project.rb, line 1106</span>
3231
- 1106: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initScoreboards</span>
3232
- 1107: <span class="ruby-comment cmt"># Create scoreboard and mark all slots as unavailable</span>
3233
- 1108: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>],
3234
- 1109: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>], <span class="ruby-value">2</span>)
3235
- 1110: <span class="ruby-comment cmt"># And the same for another scoreboard.</span>
3236
- 1111: <span class="ruby-ivar">@scoreboardNoVacations</span> =
3237
- 1112: <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'end'</span>],
3238
- 1113: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>], <span class="ruby-value">2</span>)
3239
- 1114:
3240
- 1115: <span class="ruby-identifier">workinghours</span> = <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'workinghours'</span>]
3241
- 1116:
3242
- 1117: <span class="ruby-comment cmt"># Change all work time slots to nil (available) again.</span>
3243
- 1118: <span class="ruby-identifier">date</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-value">0</span>)
3244
- 1119: <span class="ruby-identifier">delta</span> = <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
3245
- 1120: <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>
3246
- 1121: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">workinghours</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
3247
- 1122: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-keyword kw">nil</span>
3248
- 1123: <span class="ruby-ivar">@scoreboardNoVacations</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-keyword kw">nil</span>
3249
- 1124: <span class="ruby-keyword kw">end</span>
3250
- 1125: <span class="ruby-identifier">date</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">delta</span>
3251
- 1126: <span class="ruby-keyword kw">end</span>
3252
- 1127:
3253
- 1128: <span class="ruby-comment cmt"># Mark all global vacation slots as such</span>
3254
- 1129: <span class="ruby-ivar">@attributes</span>[<span class="ruby-value str">'vacations'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vacation</span><span class="ruby-operator">|</span>
3255
- 1130: <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>)
3256
- 1131: <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>)
3257
- 1132: <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>
3258
- 1133: <span class="ruby-comment cmt"># If the slot is nil or set to 4 then don't set the time-off bit.</span>
3259
- 1134: <span class="ruby-identifier">sb</span> = <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">i</span>]
3260
- 1135: <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>)
3261
- 1136: <span class="ruby-keyword kw">end</span>
3262
- 1137: <span class="ruby-keyword kw">end</span>
3263
- 1138: <span class="ruby-keyword kw">end</span></pre>
3264
- </div>
3265
-
3266
- </div>
3267
-
3268
-
3269
-
3270
-
3271
- </div>
3272
-
3273
-
3274
- <div id="matching-eports-method" class="method-detail ">
3275
- <a name="method-i-matchingReports"></a>
3276
-
3277
- <div class="method-heading">
3278
-
3279
- <span class="method-name">matchingReports</span><span
3280
- class="method-args">(reportId)</span>
3281
- <span class="method-click-advice">click to toggle source</span>
3282
-
3283
- </div>
3284
-
3285
- <div class="method-description">
3286
-
3287
-
3288
-
3289
-
3290
-
3291
- <div class="method-source-code"
3292
- id="matching-eports-source">
3293
- <pre>
3294
- <span class="ruby-comment cmt"># File lib/Project.rb, line 1140</span>
3295
- 1140: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingReports</span>(<span class="ruby-identifier">reportId</span>)
3296
- 1141: <span class="ruby-identifier">list</span> = []
3297
- 1142: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">report</span><span class="ruby-operator">|</span>
3298
- 1143: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">fullId</span>
3299
- 1144: <span class="ruby-identifier">list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">id</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">reportId</span>) <span class="ruby-operator">=~</span> <span class="ruby-identifier">id</span>
3300
- 1145: <span class="ruby-keyword kw">end</span>
3301
- 1146: <span class="ruby-identifier">list</span>
3302
- 1147: <span class="ruby-keyword kw">end</span></pre>
3303
- </div>
3304
-
3305
- </div>
3306
-
3307
-
3308
-
3309
-
3310
- </div>
3311
-
3312
-
3313
- </div>
3314
-
3315
-
3316
- </div>
3317
-
3318
-
3319
- <div id="rdoc-debugging-section-dump" class="debugging-section">
3320
-
3321
- <p>Disabled; run with --debug to generate this.</p>
3322
-
3323
- </div>
3324
-
3325
- <div id="validator-badges">
3326
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
3327
- <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
3328
- Rdoc Generator</a> 1.1.6</small>.</p>
3329
- </div>
3330
-
3331
- </body>
3332
- </html>
3333
-