taskjuggler 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (787) hide show
  1. data/CHANGELOG +115 -0
  2. data/README.rdoc +105 -0
  3. data/examples/tutorial.tjp +21 -16
  4. data/gem_spec.rb +1 -1
  5. data/lib/{Account.rb → taskjuggler/Account.rb} +2 -3
  6. data/lib/{AccountScenario.rb → taskjuggler/AccountScenario.rb} +1 -1
  7. data/lib/taskjuggler/AlgorithmDiff.rb +311 -0
  8. data/lib/{Allocation.rb → taskjuggler/Allocation.rb} +3 -3
  9. data/lib/{AppConfig.rb → taskjuggler/AppConfig.rb} +0 -1
  10. data/lib/{AttributeBase.rb → taskjuggler/AttributeBase.rb} +1 -1
  11. data/lib/{AttributeDefinition.rb → taskjuggler/AttributeDefinition.rb} +0 -0
  12. data/lib/{Attributes.rb → taskjuggler/Attributes.rb} +19 -9
  13. data/lib/{BatchProcessor.rb → taskjuggler/BatchProcessor.rb} +0 -0
  14. data/lib/{Booking.rb → taskjuggler/Booking.rb} +0 -0
  15. data/lib/{Charge.rb → taskjuggler/Charge.rb} +1 -1
  16. data/lib/{ChargeSet.rb → taskjuggler/ChargeSet.rb} +1 -1
  17. data/lib/{DataCache.rb → taskjuggler/DataCache.rb} +0 -0
  18. data/lib/{FileList.rb → taskjuggler/FileList.rb} +0 -0
  19. data/lib/{HTMLDocument.rb → taskjuggler/HTMLDocument.rb} +1 -1
  20. data/lib/{Interval.rb → taskjuggler/Interval.rb} +1 -1
  21. data/lib/{IntervalList.rb → taskjuggler/IntervalList.rb} +1 -1
  22. data/lib/{Journal.rb → taskjuggler/Journal.rb} +2 -2
  23. data/lib/{KeywordArray.rb → taskjuggler/KeywordArray.rb} +0 -0
  24. data/lib/{KeywordDocumentation.rb → taskjuggler/KeywordDocumentation.rb} +5 -5
  25. data/lib/{Limits.rb → taskjuggler/Limits.rb} +1 -1
  26. data/lib/{Log.rb → taskjuggler/Log.rb} +0 -0
  27. data/lib/{LogFile.rb → taskjuggler/LogFile.rb} +0 -0
  28. data/lib/{LogicalExpression.rb → taskjuggler/LogicalExpression.rb} +3 -3
  29. data/lib/{LogicalFunction.rb → taskjuggler/LogicalFunction.rb} +1 -1
  30. data/lib/{LogicalOperation.rb → taskjuggler/LogicalOperation.rb} +1 -1
  31. data/lib/{MessageHandler.rb → taskjuggler/MessageHandler.rb} +3 -1
  32. data/lib/{Project.rb → taskjuggler/Project.rb} +51 -48
  33. data/lib/{ProjectFileParser.rb → taskjuggler/ProjectFileParser.rb} +25 -9
  34. data/lib/{ProjectFileScanner.rb → taskjuggler/ProjectFileScanner.rb} +5 -5
  35. data/lib/{PropertyList.rb → taskjuggler/PropertyList.rb} +0 -0
  36. data/lib/{PropertySet.rb → taskjuggler/PropertySet.rb} +3 -4
  37. data/lib/{PropertyTreeNode.rb → taskjuggler/PropertyTreeNode.rb} +157 -11
  38. data/lib/{Query.rb → taskjuggler/Query.rb} +17 -7
  39. data/lib/{RealFormat.rb → taskjuggler/RealFormat.rb} +0 -0
  40. data/lib/{Resource.rb → taskjuggler/Resource.rb} +8 -6
  41. data/lib/{ResourceScenario.rb → taskjuggler/ResourceScenario.rb} +26 -65
  42. data/lib/{RichText.rb → taskjuggler/RichText.rb} +3 -3
  43. data/lib/{RichTextDocument.rb → taskjuggler/RichText/Document.rb} +3 -3
  44. data/lib/{RichTextElement.rb → taskjuggler/RichText/Element.rb} +10 -4
  45. data/lib/{RichTextFunctionExample.rb → taskjuggler/RichText/FunctionExample.rb} +3 -3
  46. data/lib/{RichTextFunctionHandler.rb → taskjuggler/RichText/FunctionHandler.rb} +0 -0
  47. data/lib/{RichTextParser.rb → taskjuggler/RichText/Parser.rb} +6 -4
  48. data/lib/{RTFHandlers.rb → taskjuggler/RichText/RTFHandlers.rb} +4 -4
  49. data/lib/{RTFNavigator.rb → taskjuggler/RichText/RTFNavigator.rb} +3 -3
  50. data/lib/{RTFQuery.rb → taskjuggler/RichText/RTFQuery.rb} +62 -39
  51. data/lib/{RTFReport.rb → taskjuggler/RichText/RTFReport.rb} +2 -2
  52. data/lib/{RTFReportLink.rb → taskjuggler/RichText/RTFReportLink.rb} +4 -4
  53. data/lib/{RTFWithQuerySupport.rb → taskjuggler/RichText/RTFWithQuerySupport.rb} +1 -1
  54. data/lib/{RichTextScanner.rb → taskjuggler/RichText/Scanner.rb} +18 -5
  55. data/lib/{RichTextSnip.rb → taskjuggler/RichText/Snip.rb} +2 -2
  56. data/lib/{RichTextSyntaxRules.rb → taskjuggler/RichText/SyntaxRules.rb} +14 -0
  57. data/lib/{TOCEntry.rb → taskjuggler/RichText/TOCEntry.rb} +2 -2
  58. data/lib/{TableOfContents.rb → taskjuggler/RichText/TableOfContents.rb} +2 -2
  59. data/lib/{RuntimeConfig.rb → taskjuggler/RuntimeConfig.rb} +18 -18
  60. data/lib/{Scenario.rb → taskjuggler/Scenario.rb} +1 -1
  61. data/lib/{ScenarioData.rb → taskjuggler/ScenarioData.rb} +2 -3
  62. data/lib/{Scoreboard.rb → taskjuggler/Scoreboard.rb} +4 -4
  63. data/lib/{SheetHandlerBase.rb → taskjuggler/SheetHandlerBase.rb} +3 -3
  64. data/lib/{SheetReceiver.rb → taskjuggler/SheetReceiver.rb} +2 -2
  65. data/lib/{SheetSender.rb → taskjuggler/SheetSender.rb} +5 -5
  66. data/lib/{Shift.rb → taskjuggler/Shift.rb} +2 -3
  67. data/lib/{ShiftAssignments.rb → taskjuggler/ShiftAssignments.rb} +1 -1
  68. data/lib/{ShiftScenario.rb → taskjuggler/ShiftScenario.rb} +1 -1
  69. data/lib/{SimpleQueryExpander.rb → taskjuggler/SimpleQueryExpander.rb} +0 -0
  70. data/lib/{StatusSheetReceiver.rb → taskjuggler/StatusSheetReceiver.rb} +1 -1
  71. data/lib/{StatusSheetSender.rb → taskjuggler/StatusSheetSender.rb} +1 -1
  72. data/lib/{SyntaxReference.rb → taskjuggler/SyntaxReference.rb} +4 -4
  73. data/lib/{TableColumnDefinition.rb → taskjuggler/TableColumnDefinition.rb} +0 -0
  74. data/lib/{Task.rb → taskjuggler/Task.rb} +2 -2
  75. data/lib/{TaskDependency.rb → taskjuggler/TaskDependency.rb} +8 -0
  76. data/lib/{TaskJuggler.rb → taskjuggler/TaskJuggler.rb} +6 -4
  77. data/lib/{TaskScenario.rb → taskjuggler/TaskScenario.rb} +211 -150
  78. data/lib/taskjuggler/TernarySearchTree.rb +203 -0
  79. data/lib/{TextFormatter.rb → taskjuggler/TextFormatter.rb} +1 -1
  80. data/lib/{TextParser.rb → taskjuggler/TextParser.rb} +6 -6
  81. data/lib/{MacroTable.rb → taskjuggler/TextParser/MacroTable.rb} +2 -12
  82. data/lib/{TextParser → taskjuggler/TextParser}/Pattern.rb +5 -2
  83. data/lib/{TextParser → taskjuggler/TextParser}/Rule.rb +1 -1
  84. data/lib/{TextScanner.rb → taskjuggler/TextParser/Scanner.rb} +34 -32
  85. data/lib/{SourceFileInfo.rb → taskjuggler/TextParser/SourceFileInfo.rb} +1 -1
  86. data/lib/{TextParser → taskjuggler/TextParser}/StackElement.rb +0 -2
  87. data/lib/{TextParser → taskjuggler/TextParser}/State.rb +0 -0
  88. data/lib/{TextParser → taskjuggler/TextParser}/TokenDoc.rb +0 -0
  89. data/lib/{TimeSheetReceiver.rb → taskjuggler/TimeSheetReceiver.rb} +1 -1
  90. data/lib/{TimeSheetSender.rb → taskjuggler/TimeSheetSender.rb} +1 -1
  91. data/lib/{TimeSheetSummary.rb → taskjuggler/TimeSheetSummary.rb} +1 -1
  92. data/lib/{TimeSheets.rb → taskjuggler/TimeSheets.rb} +23 -16
  93. data/lib/{Tj3AppBase.rb → taskjuggler/Tj3AppBase.rb} +19 -12
  94. data/lib/{Tj3Config.rb → taskjuggler/Tj3Config.rb} +3 -3
  95. data/lib/taskjuggler/Tj3Man.rb +78 -0
  96. data/lib/{Tj3SheetAppBase.rb → taskjuggler/Tj3SheetAppBase.rb} +2 -2
  97. data/lib/{TjException.rb → taskjuggler/TjException.rb} +0 -0
  98. data/lib/{TjTime.rb → taskjuggler/TjTime.rb} +279 -234
  99. data/lib/{TjpExample.rb → taskjuggler/TjpExample.rb} +0 -0
  100. data/lib/{TjpSyntaxRules.rb → taskjuggler/TjpSyntaxRules.rb} +253 -95
  101. data/lib/{URLParameter.rb → taskjuggler/URLParameter.rb} +0 -0
  102. data/lib/{UTF8String.rb → taskjuggler/UTF8String.rb} +0 -0
  103. data/lib/{UserManual.rb → taskjuggler/UserManual.rb} +6 -6
  104. data/lib/{VimSyntax.rb → taskjuggler/VimSyntax.rb} +6 -2
  105. data/lib/{WorkingHours.rb → taskjuggler/WorkingHours.rb} +14 -22
  106. data/lib/{XMLDocument.rb → taskjuggler/XMLDocument.rb} +1 -1
  107. data/lib/{XMLElement.rb → taskjuggler/XMLElement.rb} +1 -1
  108. data/lib/taskjuggler/apps/Tj3.rb +134 -0
  109. data/lib/taskjuggler/apps/Tj3Client.rb +467 -0
  110. data/lib/taskjuggler/apps/Tj3Daemon.rb +142 -0
  111. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +56 -0
  112. data/lib/taskjuggler/apps/Tj3SsSender.rb +90 -0
  113. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +59 -0
  114. data/lib/taskjuggler/apps/Tj3TsSender.rb +77 -0
  115. data/lib/taskjuggler/apps/Tj3TsSummary.rb +86 -0
  116. data/lib/{daemon → taskjuggler/daemon}/Daemon.rb +4 -3
  117. data/lib/{daemon → taskjuggler/daemon}/ProcessIntercom.rb +2 -2
  118. data/lib/{daemon → taskjuggler/daemon}/ProjectBroker.rb +5 -5
  119. data/lib/{daemon → taskjuggler/daemon}/ProjectServer.rb +16 -16
  120. data/lib/{daemon → taskjuggler/daemon}/ReportServer.rb +6 -6
  121. data/lib/{daemon → taskjuggler/daemon}/ReportServlet.rb +2 -2
  122. data/lib/{daemon → taskjuggler/daemon}/WebServer.rb +4 -4
  123. data/lib/{daemon → taskjuggler/daemon}/WelcomePage.rb +2 -1
  124. data/lib/{deep_copy.rb → taskjuggler/deep_copy.rb} +0 -0
  125. data/lib/{reports → taskjuggler/reports}/CSVFile.rb +2 -2
  126. data/lib/{reports → taskjuggler/reports}/CollisionDetector.rb +1 -1
  127. data/lib/{reports → taskjuggler/reports}/ColumnTable.rb +1 -1
  128. data/lib/{reports → taskjuggler/reports}/GanttChart.rb +4 -4
  129. data/lib/{reports → taskjuggler/reports}/GanttContainer.rb +1 -1
  130. data/lib/{reports → taskjuggler/reports}/GanttHeader.rb +1 -1
  131. data/lib/{reports → taskjuggler/reports}/GanttHeaderScaleItem.rb +0 -0
  132. data/lib/{reports → taskjuggler/reports}/GanttLine.rb +6 -6
  133. data/lib/{reports → taskjuggler/reports}/GanttLoadStack.rb +1 -1
  134. data/lib/{reports → taskjuggler/reports}/GanttMilestone.rb +1 -1
  135. data/lib/{reports → taskjuggler/reports}/GanttRouter.rb +1 -1
  136. data/lib/{reports → taskjuggler/reports}/GanttTaskBar.rb +1 -1
  137. data/lib/{reports → taskjuggler/reports}/HTMLGraphics.rb +0 -0
  138. data/lib/{reports → taskjuggler/reports}/Navigator.rb +1 -1
  139. data/lib/{reports → taskjuggler/reports}/NikuReport.rb +3 -6
  140. data/lib/{reports → taskjuggler/reports}/Report.rb +19 -14
  141. data/lib/{reports → taskjuggler/reports}/ReportBase.rb +0 -0
  142. data/lib/{reports → taskjuggler/reports}/ReportContext.rb +0 -0
  143. data/lib/{reports → taskjuggler/reports}/ReportTable.rb +2 -2
  144. data/lib/{reports → taskjuggler/reports}/ReportTableCell.rb +0 -0
  145. data/lib/{reports → taskjuggler/reports}/ReportTableColumn.rb +0 -0
  146. data/lib/{reports → taskjuggler/reports}/ReportTableLegend.rb +0 -0
  147. data/lib/{reports → taskjuggler/reports}/ReportTableLine.rb +1 -1
  148. data/lib/{reports → taskjuggler/reports}/ResourceListRE.rb +4 -4
  149. data/lib/{reports → taskjuggler/reports}/StatusSheetReport.rb +1 -1
  150. data/lib/{reports → taskjuggler/reports}/TableReport.rb +8 -7
  151. data/lib/{reports → taskjuggler/reports}/TaskListRE.rb +4 -4
  152. data/lib/{reports → taskjuggler/reports}/TextReport.rb +1 -1
  153. data/lib/{reports → taskjuggler/reports}/TimeSheetReport.rb +1 -1
  154. data/lib/{reports → taskjuggler/reports}/TjpExportRE.rb +87 -29
  155. data/lib/tj3.rb +2 -144
  156. data/lib/tj3client.rb +2 -442
  157. data/lib/tj3d.rb +1 -133
  158. data/lib/tj3man.rb +2 -75
  159. data/lib/tj3ss_receiver.rb +2 -42
  160. data/lib/tj3ss_sender.rb +1 -76
  161. data/lib/tj3ts_receiver.rb +1 -45
  162. data/lib/tj3ts_sender.rb +1 -63
  163. data/lib/tj3ts_summary.rb +1 -72
  164. data/manual/How_To_Contribute +19 -49
  165. data/manual/Installation +65 -6
  166. data/manual/Reporting_Bugs +6 -20
  167. data/manual/TaskJuggler_Internals +8 -1
  168. data/manual/Tutorial +16 -0
  169. data/prj_cfg.rb +2 -3
  170. data/spec/IntervalList_spec.rb +2 -1
  171. data/spec/ProjectBroker_spec.rb +1 -1
  172. data/spec/TernarySearchTree_spec.rb +131 -0
  173. data/spec/TimeSheets_spec.rb +129 -0
  174. data/spec/Tj3Daemon_spec.rb +51 -0
  175. data/spec/Tj3_spec.rb +36 -0
  176. data/spec/support/DaemonControl.rb +78 -0
  177. data/spec/support/StdIoWrapper.rb +43 -0
  178. data/spec/tj3client.log +23 -0
  179. data/tasks/changelog.rake +17 -2
  180. data/tasks/csts.rake +2 -2
  181. data/tasks/manual.rake +9 -5
  182. data/tasks/missing.rake +0 -4
  183. data/tasks/rdoc.rake +2 -2
  184. data/tasks/vim.rake +9 -0
  185. data/test/TestSuite/CSV-Reports/alert.tjp +9 -0
  186. data/test/TestSuite/CSV-Reports/celltext.tjp +1 -0
  187. data/test/TestSuite/CSV-Reports/inputs.tjp +19 -0
  188. data/test/TestSuite/CSV-Reports/project-1.tji +9 -0
  189. data/test/TestSuite/CSV-Reports/refs/alert.csv +15 -0
  190. data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -0
  191. data/test/TestSuite/CSV-Reports/refs/inputs.csv +6 -0
  192. data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +4 -4
  193. data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +22 -22
  194. data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -0
  195. data/test/TestSuite/CSV-Reports/refs/sortBy_duration.down.csv +1 -0
  196. data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -0
  197. data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +14 -13
  198. data/test/TestSuite/CSV-Reports/refs/targets.csv +5 -0
  199. data/test/TestSuite/CSV-Reports/refs/taskreport.csv +15 -14
  200. data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +33 -32
  201. data/test/TestSuite/CSV-Reports/resourcereport.tjp +1 -0
  202. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +1 -0
  203. data/test/TestSuite/CSV-Reports/sortByTree.tjp +1 -0
  204. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +1 -0
  205. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -0
  206. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +2 -1
  207. data/test/TestSuite/CSV-Reports/targets.tjp +20 -0
  208. data/test/TestSuite/CSV-Reports/taskreport.tjp +2 -1
  209. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +2 -1
  210. data/test/TestSuite/CSV-Reports/weekly.tjp +5 -2
  211. data/test/TestSuite/Export-Reports/export.tji +6 -0
  212. data/test/TestSuite/Export-Reports/refs/Account.tjp +92 -0
  213. data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +38 -0
  214. data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +124 -0
  215. data/test/TestSuite/Export-Reports/refs/Alternative.tjp +50 -0
  216. data/test/TestSuite/Export-Reports/refs/AutoID.tjp +45 -0
  217. data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +18 -0
  218. data/test/TestSuite/Export-Reports/refs/Booking.tjp +48 -0
  219. data/test/TestSuite/Export-Reports/refs/Caption.tjp +65 -0
  220. data/test/TestSuite/Export-Reports/refs/Celltext.tjp +45 -0
  221. data/test/TestSuite/Export-Reports/refs/Comments.tjp +67 -0
  222. data/test/TestSuite/Export-Reports/refs/Complete.tjp +50 -0
  223. data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +41 -0
  224. data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +18 -0
  225. data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +24 -0
  226. data/test/TestSuite/Export-Reports/refs/DST.tjp +89 -0
  227. data/test/TestSuite/Export-Reports/refs/Depends1.tjp +57 -0
  228. data/test/TestSuite/Export-Reports/refs/Durations.tjp +84 -0
  229. data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +58 -0
  230. data/test/TestSuite/Export-Reports/refs/Flags.tjp +51 -0
  231. data/test/TestSuite/Export-Reports/refs/Gap.tjp +38 -0
  232. data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +67 -0
  233. data/test/TestSuite/Export-Reports/refs/Include.tjp +58 -0
  234. data/test/TestSuite/Export-Reports/refs/Journal.tjp +28 -0
  235. data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +283 -0
  236. data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +617 -0
  237. data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +18 -0
  238. data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +57 -0
  239. data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +91 -0
  240. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +18 -0
  241. data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +18 -0
  242. data/test/TestSuite/Export-Reports/refs/Manager.tjp +121 -0
  243. data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +59 -0
  244. data/test/TestSuite/Export-Reports/refs/Milestone.tjp +27 -0
  245. data/test/TestSuite/Export-Reports/refs/MinMax.tjp +30 -0
  246. data/test/TestSuite/Export-Reports/refs/Niku.tjp +218 -0
  247. data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +18 -0
  248. data/test/TestSuite/Export-Reports/refs/Period.tjp +25 -0
  249. data/test/TestSuite/Export-Reports/refs/Persistent.tjp +49 -0
  250. data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +46 -0
  251. data/test/TestSuite/Export-Reports/refs/Priority.tjp +141 -0
  252. data/test/TestSuite/Export-Reports/refs/Project.tjp +18 -0
  253. data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +36 -0
  254. data/test/TestSuite/Export-Reports/refs/Query.tjp +49 -0
  255. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +79 -0
  256. data/test/TestSuite/Export-Reports/refs/Reports.tjp +130 -0
  257. data/test/TestSuite/Export-Reports/refs/Resource.tjp +59 -0
  258. data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +67 -0
  259. data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +90 -0
  260. data/test/TestSuite/Export-Reports/refs/Responsible.tjp +50 -0
  261. data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +90 -0
  262. data/test/TestSuite/Export-Reports/refs/Scenario.tjp +25 -0
  263. data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +55 -0
  264. data/test/TestSuite/Export-Reports/refs/Select.tjp +89 -0
  265. data/test/TestSuite/Export-Reports/refs/Shift.tjp +39 -0
  266. data/test/TestSuite/Export-Reports/refs/Simple.tjp +67 -0
  267. data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +95 -0
  268. data/test/TestSuite/Export-Reports/refs/String.tjp +33 -0
  269. data/test/TestSuite/Export-Reports/refs/Supplement.tjp +41 -0
  270. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +49 -0
  271. data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +75 -0
  272. data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +51 -0
  273. data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +81 -0
  274. data/test/TestSuite/Export-Reports/refs/Timezone.tjp +18 -0
  275. data/test/TestSuite/Export-Reports/refs/Vacation.tjp +69 -0
  276. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +1061 -0
  277. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +3 -1
  278. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +5 -3
  279. data/test/TestSuite/Scheduler/Correct/Precedes.tjp +19 -19
  280. data/test/TestSuite/Scheduler/Correct/PriorityInversion.tjp +32 -0
  281. data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +19 -0
  282. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +11 -0
  283. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +14 -14
  284. data/test/TestSuite/Scheduler/Correct/checks.tji +5 -0
  285. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +20 -0
  286. data/test/TestSuite/StatusSheets/boss_mail +1 -1
  287. data/test/TestSuite/StatusSheets/dev2_mail +1 -1
  288. data/test/TestSuite/StatusSheets/run +2 -3
  289. data/test/TestSuite/Syntax/Correct/Account.tjp +1 -0
  290. data/test/TestSuite/Syntax/Correct/AdoptedTasks.tjp +9 -0
  291. data/test/TestSuite/Syntax/Correct/Allocate-1.tjp +3 -1
  292. data/test/TestSuite/Syntax/Correct/Alternative.tjp +3 -1
  293. data/test/TestSuite/Syntax/Correct/AutoID.tjp +3 -1
  294. data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -0
  295. data/test/TestSuite/Syntax/Correct/Caption.tjp +3 -1
  296. data/test/TestSuite/Syntax/Correct/Celltext.tjp +3 -1
  297. data/test/TestSuite/Syntax/Correct/Comments.tjp +3 -1
  298. data/test/TestSuite/Syntax/Correct/Complete.tjp +1 -0
  299. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +2 -1
  300. data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +2 -1
  301. data/test/TestSuite/Syntax/Correct/CustomAttributes.tjp +3 -2
  302. data/test/TestSuite/Syntax/Correct/DST.tjp +11 -0
  303. data/test/TestSuite/Syntax/Correct/Depends1.tjp +6 -4
  304. data/test/TestSuite/Syntax/Correct/Durations.tjp +3 -1
  305. data/test/TestSuite/Syntax/Correct/Efficiency.tjp +4 -2
  306. data/test/TestSuite/Syntax/Correct/Export.tjp +6 -4
  307. data/test/TestSuite/Syntax/Correct/Flags.tjp +3 -1
  308. data/test/TestSuite/Syntax/Correct/Freeze.tjp +2 -2
  309. data/test/TestSuite/Syntax/Correct/Gap.tjp +3 -1
  310. data/test/TestSuite/Syntax/Correct/HtmlTaskReport.tjp +4 -2
  311. data/test/TestSuite/Syntax/Correct/Include.tjp +3 -1
  312. data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -1
  313. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +13 -9
  314. data/test/TestSuite/Syntax/Correct/LoadUnits.tjp +1 -0
  315. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +3 -1
  316. data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +3 -1
  317. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +3 -1
  318. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +3 -1
  319. data/test/TestSuite/Syntax/Correct/Macro-3.tjp +1 -0
  320. data/test/TestSuite/Syntax/Correct/Manager.tjp +4 -2
  321. data/test/TestSuite/Syntax/Correct/Mandatory.tjp +3 -1
  322. data/test/TestSuite/Syntax/Correct/Milestone.tjp +3 -1
  323. data/test/TestSuite/Syntax/Correct/MinMax.tjp +3 -1
  324. data/test/TestSuite/Syntax/Correct/Niku.tjp +1 -0
  325. data/test/TestSuite/Syntax/Correct/Numberformat.tjp +3 -2
  326. data/test/TestSuite/Syntax/Correct/Period.tjp +1 -0
  327. data/test/TestSuite/Syntax/Correct/Persistent.tjp +3 -1
  328. data/test/TestSuite/Syntax/Correct/Precedes1.tjp +6 -4
  329. data/test/TestSuite/Syntax/Correct/Priority.tjp +4 -2
  330. data/test/TestSuite/Syntax/Correct/Project.tjp +5 -4
  331. data/test/TestSuite/Syntax/Correct/ProjectIDs.tjp +3 -2
  332. data/test/TestSuite/Syntax/Correct/Query.tjp +1 -0
  333. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +3 -1
  334. data/test/TestSuite/Syntax/Correct/Reports.tjp +7 -5
  335. data/test/TestSuite/Syntax/Correct/Resource.tjp +4 -2
  336. data/test/TestSuite/Syntax/Correct/ResourcePrefix.tjp +4 -2
  337. data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +3 -1
  338. data/test/TestSuite/Syntax/Correct/Responsible.tjp +3 -1
  339. data/test/TestSuite/Syntax/Correct/RollupResource.tjp +3 -1
  340. data/test/TestSuite/Syntax/Correct/Scenario.tjp +2 -1
  341. data/test/TestSuite/Syntax/Correct/Scheduling.tjp +3 -1
  342. data/test/TestSuite/Syntax/Correct/Select.tjp +3 -1
  343. data/test/TestSuite/Syntax/Correct/Shift.tjp +4 -2
  344. data/test/TestSuite/Syntax/Correct/Simple.tjp +3 -1
  345. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +4 -2
  346. data/test/TestSuite/Syntax/Correct/String.tjp +3 -1
  347. data/test/TestSuite/Syntax/Correct/Supplement.tjp +3 -1
  348. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +3 -2
  349. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +3 -1
  350. data/test/TestSuite/Syntax/Correct/TimeFrame.tjp +3 -1
  351. data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -2
  352. data/test/TestSuite/Syntax/Correct/Vacation.tjp +5 -3
  353. data/test/TestSuite/Syntax/Correct/tutorial.tjp +23 -16
  354. data/test/TestSuite/Syntax/Errors/adopt_common_root.tjp +10 -0
  355. data/test/TestSuite/Syntax/Errors/adopt_duplicate_child.tjp +10 -0
  356. data/test/TestSuite/Syntax/Errors/adopt_duplicate_parent.tjp +10 -0
  357. data/test/TestSuite/{Scheduler/Errors/milestone_duration.tjp → Syntax/Errors/multiple_durations.tjp} +1 -1
  358. data/test/TestSuite/Syntax/Errors/operand_unkn_scen.tjp +6 -4
  359. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd1.tjp +5 -3
  360. data/test/TestSuite/TimeSheets/dev2_mail1 +1 -1
  361. data/test/TestSuite/TimeSheets/dev2_mail2 +1 -1
  362. data/test/TestSuite/TimeSheets/run +2 -2
  363. data/test/TestSuite/TimeSheets/uu.txt +29 -0
  364. data/test/test_AlgorithmDiff.rb +139 -0
  365. data/test/test_BatchProcessor.rb +2 -1
  366. data/test/test_CSV-Reports.rb +30 -19
  367. data/test/test_CSVFile.rb +2 -1
  368. data/test/test_CollisionDetector.rb +2 -1
  369. data/test/test_Export-Reports.rb +128 -0
  370. data/test/test_Journal.rb +2 -1
  371. data/test/test_Limits.rb +4 -3
  372. data/test/test_LogicalExpression.rb +2 -1
  373. data/test/test_MacroTable.rb +8 -6
  374. data/test/test_Project.rb +2 -1
  375. data/test/test_ProjectFileScanner.rb +4 -3
  376. data/test/test_PropertySet.rb +2 -1
  377. data/test/test_Query.rb +3 -2
  378. data/test/test_RealFormat.rb +2 -1
  379. data/test/test_ReportGenerator.rb +3 -2
  380. data/test/test_RichText.rb +14 -3
  381. data/test/test_Scheduler.rb +2 -1
  382. data/test/test_ShiftAssignments.rb +3 -1
  383. data/test/test_SimpleQueryExpander.rb +3 -2
  384. data/test/test_Syntax.rb +2 -1
  385. data/test/test_TextFormatter.rb +2 -1
  386. data/test/test_TjTime.rb +15 -14
  387. data/test/test_TjpExample.rb +2 -1
  388. data/test/test_URLParameter.rb +2 -1
  389. data/test/test_UTF8String.rb +2 -1
  390. data/test/test_WorkingHours.rb +3 -2
  391. data/test/test_deep_copy.rb +2 -1
  392. metadata +250 -541
  393. data/README +0 -31
  394. data/benchmarks/allocatedSlots.csv +0 -334
  395. data/benchmarks/profile.clt +0 -42974
  396. data/benchmarks/profile.html +0 -61128
  397. data/doc/AppConfig.html +0 -1471
  398. data/doc/Arguments.html +0 -720
  399. data/doc/CHANGELOG.html +0 -1987
  400. data/doc/COPYING.html +0 -879
  401. data/doc/Object.html +0 -1056
  402. data/doc/README.html +0 -565
  403. data/doc/RuntimeConfig.html +0 -804
  404. data/doc/String.html +0 -913
  405. data/doc/TaskJuggler.html +0 -2512
  406. data/doc/TaskJuggler/Account.html +0 -733
  407. data/doc/TaskJuggler/AccountAttribute.html +0 -749
  408. data/doc/TaskJuggler/AccountScenario.html +0 -692
  409. data/doc/TaskJuggler/Allocation.html +0 -943
  410. data/doc/TaskJuggler/AllocationAttribute.html +0 -779
  411. data/doc/TaskJuggler/AttributeBase.html +0 -1308
  412. data/doc/TaskJuggler/AttributeDefinition.html +0 -795
  413. data/doc/TaskJuggler/AttributeOverwrite.html +0 -586
  414. data/doc/TaskJuggler/BatchProcessor.html +0 -1158
  415. data/doc/TaskJuggler/Booking.html +0 -839
  416. data/doc/TaskJuggler/BookingListAttribute.html +0 -749
  417. data/doc/TaskJuggler/BooleanAttribute.html +0 -749
  418. data/doc/TaskJuggler/CSVFile.html +0 -1108
  419. data/doc/TaskJuggler/CellSettingPattern.html +0 -680
  420. data/doc/TaskJuggler/CellSettingPatternList.html +0 -729
  421. data/doc/TaskJuggler/Charge.html +0 -757
  422. data/doc/TaskJuggler/ChargeListAttribute.html +0 -713
  423. data/doc/TaskJuggler/ChargeSet.html +0 -929
  424. data/doc/TaskJuggler/ChargeSetListAttribute.html +0 -758
  425. data/doc/TaskJuggler/CollisionDetector.html +0 -1069
  426. data/doc/TaskJuggler/ColumnListAttribute.html +0 -713
  427. data/doc/TaskJuggler/ColumnTable.html +0 -743
  428. data/doc/TaskJuggler/Daemon.html +0 -798
  429. data/doc/TaskJuggler/DataCache.html +0 -930
  430. data/doc/TaskJuggler/DataCacheEntry.html +0 -717
  431. data/doc/TaskJuggler/DateAttribute.html +0 -717
  432. data/doc/TaskJuggler/DefinitionListAttribute.html +0 -635
  433. data/doc/TaskJuggler/DependencyListAttribute.html +0 -753
  434. data/doc/TaskJuggler/DurationAttribute.html +0 -750
  435. data/doc/TaskJuggler/FileList.html +0 -731
  436. data/doc/TaskJuggler/FileRecord.html +0 -682
  437. data/doc/TaskJuggler/FixnumAttribute.html +0 -671
  438. data/doc/TaskJuggler/FlagListAttribute.html +0 -749
  439. data/doc/TaskJuggler/FloatAttribute.html +0 -713
  440. data/doc/TaskJuggler/FormatListAttribute.html +0 -677
  441. data/doc/TaskJuggler/GanttChart.html +0 -1467
  442. data/doc/TaskJuggler/GanttContainer.html +0 -925
  443. data/doc/TaskJuggler/GanttHeader.html +0 -928
  444. data/doc/TaskJuggler/GanttHeaderScaleItem.html +0 -742
  445. data/doc/TaskJuggler/GanttLine.html +0 -1305
  446. data/doc/TaskJuggler/GanttLoadStack.html +0 -808
  447. data/doc/TaskJuggler/GanttMilestone.html +0 -906
  448. data/doc/TaskJuggler/GanttRouter.html +0 -1118
  449. data/doc/TaskJuggler/GanttTaskBar.html +0 -927
  450. data/doc/TaskJuggler/HTMLDocument.html +0 -761
  451. data/doc/TaskJuggler/HTMLGraphics.html +0 -817
  452. data/doc/TaskJuggler/Interval.html +0 -1056
  453. data/doc/TaskJuggler/IntervalList.html +0 -777
  454. data/doc/TaskJuggler/IntervalListAttribute.html +0 -753
  455. data/doc/TaskJuggler/JobInfo.html +0 -923
  456. data/doc/TaskJuggler/Journal.html +0 -1158
  457. data/doc/TaskJuggler/JournalEntry.html +0 -821
  458. data/doc/TaskJuggler/JournalEntryList.html +0 -1071
  459. data/doc/TaskJuggler/KeywordArray.html +0 -676
  460. data/doc/TaskJuggler/KeywordDocumentation.html +0 -1838
  461. data/doc/TaskJuggler/Limits.html +0 -1016
  462. data/doc/TaskJuggler/Limits/Limit.html +0 -927
  463. data/doc/TaskJuggler/LimitsAttribute.html +0 -714
  464. data/doc/TaskJuggler/ListAttributeBase.html +0 -683
  465. data/doc/TaskJuggler/Log.html +0 -1143
  466. data/doc/TaskJuggler/LogFile.html +0 -960
  467. data/doc/TaskJuggler/LogicalAttribute.html +0 -740
  468. data/doc/TaskJuggler/LogicalExpression.html +0 -781
  469. data/doc/TaskJuggler/LogicalExpressionAttribute.html +0 -671
  470. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +0 -671
  471. data/doc/TaskJuggler/LogicalFlag.html +0 -723
  472. data/doc/TaskJuggler/LogicalFunction.html +0 -1306
  473. data/doc/TaskJuggler/LogicalOperation.html +0 -1124
  474. data/doc/TaskJuggler/Macro.html +0 -688
  475. data/doc/TaskJuggler/MacroTable.html +0 -852
  476. data/doc/TaskJuggler/ManagerResponsibilities.html +0 -716
  477. data/doc/TaskJuggler/ManagerStatusRecord.html +0 -720
  478. data/doc/TaskJuggler/Message.html +0 -817
  479. data/doc/TaskJuggler/MessageHandler.html +0 -1036
  480. data/doc/TaskJuggler/Navigator.html +0 -922
  481. data/doc/TaskJuggler/NavigatorElement.html +0 -974
  482. data/doc/TaskJuggler/NikuProject.html +0 -704
  483. data/doc/TaskJuggler/NikuReport.html +0 -1449
  484. data/doc/TaskJuggler/NikuResource.html +0 -674
  485. data/doc/TaskJuggler/NodeListAttribute.html +0 -635
  486. data/doc/TaskJuggler/PlaceHolderCell.html +0 -728
  487. data/doc/TaskJuggler/ProcessIntercom.html +0 -997
  488. data/doc/TaskJuggler/ProcessIntercomIface.html +0 -753
  489. data/doc/TaskJuggler/Project.html +0 -3333
  490. data/doc/TaskJuggler/ProjectBroker.html +0 -1656
  491. data/doc/TaskJuggler/ProjectBrokerIface.html +0 -831
  492. data/doc/TaskJuggler/ProjectFileParser.html +0 -2033
  493. data/doc/TaskJuggler/ProjectFileScanner.html +0 -1816
  494. data/doc/TaskJuggler/ProjectRecord.html +0 -958
  495. data/doc/TaskJuggler/ProjectServer.html +0 -1229
  496. data/doc/TaskJuggler/ProjectServerIface.html +0 -848
  497. data/doc/TaskJuggler/PropertyAttribute.html +0 -671
  498. data/doc/TaskJuggler/PropertyList.html +0 -1379
  499. data/doc/TaskJuggler/PropertySet.html +0 -1799
  500. data/doc/TaskJuggler/PropertyTreeNode.html +0 -2579
  501. data/doc/TaskJuggler/Query.html +0 -1663
  502. data/doc/TaskJuggler/RTFHandlers.html +0 -644
  503. data/doc/TaskJuggler/RTFNavigator.html +0 -772
  504. data/doc/TaskJuggler/RTFQuery.html +0 -1040
  505. data/doc/TaskJuggler/RTFReport.html +0 -800
  506. data/doc/TaskJuggler/RTFReportLink.html +0 -792
  507. data/doc/TaskJuggler/RTFWithQuerySupport.html +0 -682
  508. data/doc/TaskJuggler/RealFormat.html +0 -785
  509. data/doc/TaskJuggler/RealFormatAttribute.html +0 -635
  510. data/doc/TaskJuggler/ReferenceAttribute.html +0 -824
  511. data/doc/TaskJuggler/Report.html +0 -1477
  512. data/doc/TaskJuggler/ReportBase.html +0 -1246
  513. data/doc/TaskJuggler/ReportContext.html +0 -816
  514. data/doc/TaskJuggler/ReportServer.html +0 -1048
  515. data/doc/TaskJuggler/ReportServerIface.html +0 -882
  516. data/doc/TaskJuggler/ReportServerRecord.html +0 -761
  517. data/doc/TaskJuggler/ReportServlet.html +0 -1024
  518. data/doc/TaskJuggler/ReportTable.html +0 -1159
  519. data/doc/TaskJuggler/ReportTableCell.html +0 -1646
  520. data/doc/TaskJuggler/ReportTableColumn.html +0 -870
  521. data/doc/TaskJuggler/ReportTableLegend.html +0 -1040
  522. data/doc/TaskJuggler/ReportTableLine.html +0 -1047
  523. data/doc/TaskJuggler/Resource.html +0 -972
  524. data/doc/TaskJuggler/ResourceListAttribute.html +0 -810
  525. data/doc/TaskJuggler/ResourceListRE.html +0 -717
  526. data/doc/TaskJuggler/ResourceScenario.html +0 -2599
  527. data/doc/TaskJuggler/RichText.html +0 -859
  528. data/doc/TaskJuggler/RichTextAttribute.html +0 -785
  529. data/doc/TaskJuggler/RichTextDocument.html +0 -1018
  530. data/doc/TaskJuggler/RichTextElement.html +0 -1754
  531. data/doc/TaskJuggler/RichTextFunctionExample.html +0 -779
  532. data/doc/TaskJuggler/RichTextFunctionHandler.html +0 -730
  533. data/doc/TaskJuggler/RichTextImage.html +0 -692
  534. data/doc/TaskJuggler/RichTextIntermediate.html +0 -1265
  535. data/doc/TaskJuggler/RichTextParser.html +0 -847
  536. data/doc/TaskJuggler/RichTextScanner.html +0 -1469
  537. data/doc/TaskJuggler/RichTextSnip.html +0 -980
  538. data/doc/TaskJuggler/RichTextSyntaxRules.html +0 -2018
  539. data/doc/TaskJuggler/Scenario.html +0 -636
  540. data/doc/TaskJuggler/ScenarioData.html +0 -818
  541. data/doc/TaskJuggler/ScenarioListAttribute.html +0 -713
  542. data/doc/TaskJuggler/Scoreboard.html +0 -1181
  543. data/doc/TaskJuggler/SheetHandlerBase.html +0 -1275
  544. data/doc/TaskJuggler/SheetReceiver.html +0 -1368
  545. data/doc/TaskJuggler/SheetSender.html +0 -1134
  546. data/doc/TaskJuggler/Shift.html +0 -731
  547. data/doc/TaskJuggler/ShiftAssignment.html +0 -988
  548. data/doc/TaskJuggler/ShiftAssignments.html +0 -1393
  549. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +0 -714
  550. data/doc/TaskJuggler/ShiftScenario.html +0 -762
  551. data/doc/TaskJuggler/SimpleQueryExpander.html +0 -713
  552. data/doc/TaskJuggler/SortListAttribute.html +0 -671
  553. data/doc/TaskJuggler/SourceFileInfo.html +0 -740
  554. data/doc/TaskJuggler/StatusSheetReceiver.html +0 -658
  555. data/doc/TaskJuggler/StatusSheetReport.html +0 -910
  556. data/doc/TaskJuggler/StatusSheetSender.html +0 -788
  557. data/doc/TaskJuggler/StringAttribute.html +0 -713
  558. data/doc/TaskJuggler/SymbolAttribute.html +0 -671
  559. data/doc/TaskJuggler/SyntaxReference.html +0 -1220
  560. data/doc/TaskJuggler/TOCEntry.html +0 -816
  561. data/doc/TaskJuggler/TSResourceRecord.html +0 -712
  562. data/doc/TaskJuggler/TSTaskRecord.html +0 -724
  563. data/doc/TaskJuggler/TableColumnDefinition.html +0 -928
  564. data/doc/TaskJuggler/TableOfContents.html +0 -770
  565. data/doc/TaskJuggler/TableReport.html +0 -2533
  566. data/doc/TaskJuggler/Task.html +0 -865
  567. data/doc/TaskJuggler/TaskDependency.html +0 -772
  568. data/doc/TaskJuggler/TaskListAttribute.html +0 -753
  569. data/doc/TaskJuggler/TaskListRE.html +0 -716
  570. data/doc/TaskJuggler/TaskScenario.html +0 -4959
  571. data/doc/TaskJuggler/TextFormatter.html +0 -953
  572. data/doc/TaskJuggler/TextParser.html +0 -1773
  573. data/doc/TaskJuggler/TextParser/Pattern.html +0 -1717
  574. data/doc/TaskJuggler/TextParser/Rule.html +0 -1399
  575. data/doc/TaskJuggler/TextParser/StackElement.html +0 -922
  576. data/doc/TaskJuggler/TextParser/State.html +0 -995
  577. data/doc/TaskJuggler/TextParser/StateTransition.html +0 -788
  578. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +0 -691
  579. data/doc/TaskJuggler/TextParser/TokenDoc.html +0 -722
  580. data/doc/TaskJuggler/TextReport.html +0 -901
  581. data/doc/TaskJuggler/TextScanner.html +0 -1482
  582. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +0 -641
  583. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +0 -707
  584. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +0 -704
  585. data/doc/TaskJuggler/TextScanner/StreamHandle.html +0 -1036
  586. data/doc/TaskJuggler/TimeSheet.html +0 -1232
  587. data/doc/TaskJuggler/TimeSheetReceiver.html +0 -655
  588. data/doc/TaskJuggler/TimeSheetRecord.html +0 -1395
  589. data/doc/TaskJuggler/TimeSheetReport.html +0 -991
  590. data/doc/TaskJuggler/TimeSheetSender.html +0 -680
  591. data/doc/TaskJuggler/TimeSheetSummary.html +0 -935
  592. data/doc/TaskJuggler/TimeSheets.html +0 -716
  593. data/doc/TaskJuggler/Tj3AppBase.html +0 -831
  594. data/doc/TaskJuggler/Tj3Client.html +0 -1477
  595. data/doc/TaskJuggler/Tj3Daemon.html +0 -884
  596. data/doc/TaskJuggler/Tj3SheetAppBase.html +0 -738
  597. data/doc/TaskJuggler/Tj3SsReceiver.html +0 -724
  598. data/doc/TaskJuggler/Tj3SsSender.html +0 -757
  599. data/doc/TaskJuggler/Tj3TsReceiver.html +0 -724
  600. data/doc/TaskJuggler/Tj3TsSender.html +0 -744
  601. data/doc/TaskJuggler/Tj3TsSummary.html +0 -752
  602. data/doc/TaskJuggler/TjException.html +0 -672
  603. data/doc/TaskJuggler/TjTime.html +0 -2807
  604. data/doc/TaskJuggler/TjpExample.html +0 -877
  605. data/doc/TaskJuggler/TjpExportRE.html +0 -1598
  606. data/doc/TaskJuggler/TjpSyntaxRules.html +0 -13611
  607. data/doc/TaskJuggler/URLParameter.html +0 -671
  608. data/doc/TaskJuggler/UserManual.html +0 -1188
  609. data/doc/TaskJuggler/VimSyntax.html +0 -1044
  610. data/doc/TaskJuggler/WebServer.html +0 -737
  611. data/doc/TaskJuggler/WelcomePage.html +0 -769
  612. data/doc/TaskJuggler/WorkingHours.html +0 -1207
  613. data/doc/TaskJuggler/WorkingHoursAttribute.html +0 -736
  614. data/doc/TaskJuggler/XMLBlob.html +0 -687
  615. data/doc/TaskJuggler/XMLComment.html +0 -682
  616. data/doc/TaskJuggler/XMLDocument.html +0 -774
  617. data/doc/TaskJuggler/XMLElement.html +0 -942
  618. data/doc/TaskJuggler/XMLNamedText.html +0 -643
  619. data/doc/TaskJuggler/XMLText.html +0 -697
  620. data/doc/index.html +0 -4127
  621. data/doc/lib/AccountScenario_rb.html +0 -69
  622. data/doc/lib/Account_rb.html +0 -71
  623. data/doc/lib/Allocation_rb.html +0 -71
  624. data/doc/lib/AppConfig_rb.html +0 -71
  625. data/doc/lib/AttributeBase_rb.html +0 -69
  626. data/doc/lib/AttributeDefinition_rb.html +0 -67
  627. data/doc/lib/Attributes_rb.html +0 -83
  628. data/doc/lib/BatchProcessor_rb.html +0 -71
  629. data/doc/lib/Booking_rb.html +0 -67
  630. data/doc/lib/ChargeSet_rb.html +0 -69
  631. data/doc/lib/Charge_rb.html +0 -69
  632. data/doc/lib/DataCache_rb.html +0 -71
  633. data/doc/lib/FileList_rb.html +0 -67
  634. data/doc/lib/HTMLDocument_rb.html +0 -69
  635. data/doc/lib/IntervalList_rb.html +0 -69
  636. data/doc/lib/Interval_rb.html +0 -69
  637. data/doc/lib/Journal_rb.html +0 -67
  638. data/doc/lib/KeywordArray_rb.html +0 -67
  639. data/doc/lib/KeywordDocumentation_rb.html +0 -77
  640. data/doc/lib/Limits_rb.html +0 -69
  641. data/doc/lib/LogFile_rb.html +0 -69
  642. data/doc/lib/Log_rb.html +0 -71
  643. data/doc/lib/LogicalExpression_rb.html +0 -73
  644. data/doc/lib/LogicalFunction_rb.html +0 -69
  645. data/doc/lib/LogicalOperation_rb.html +0 -69
  646. data/doc/lib/MacroTable_rb.html +0 -73
  647. data/doc/lib/MessageHandler_rb.html +0 -67
  648. data/doc/lib/ProjectFileParser_rb.html +0 -77
  649. data/doc/lib/ProjectFileScanner_rb.html +0 -69
  650. data/doc/lib/Project_rb.html +0 -113
  651. data/doc/lib/PropertyList_rb.html +0 -67
  652. data/doc/lib/PropertySet_rb.html +0 -71
  653. data/doc/lib/PropertyTreeNode_rb.html +0 -67
  654. data/doc/lib/Query_rb.html +0 -69
  655. data/doc/lib/RTFHandlers_rb.html +0 -75
  656. data/doc/lib/RTFNavigator_rb.html +0 -73
  657. data/doc/lib/RTFQuery_rb.html +0 -73
  658. data/doc/lib/RTFReportLink_rb.html +0 -75
  659. data/doc/lib/RTFReport_rb.html +0 -71
  660. data/doc/lib/RTFWithQuerySupport_rb.html +0 -69
  661. data/doc/lib/RealFormat_rb.html +0 -67
  662. data/doc/lib/ResourceScenario_rb.html +0 -69
  663. data/doc/lib/Resource_rb.html +0 -71
  664. data/doc/lib/RichTextDocument_rb.html +0 -73
  665. data/doc/lib/RichTextElement_rb.html +0 -75
  666. data/doc/lib/RichTextFunctionExample_rb.html +0 -73
  667. data/doc/lib/RichTextFunctionHandler_rb.html +0 -67
  668. data/doc/lib/RichTextParser_rb.html +0 -73
  669. data/doc/lib/RichTextScanner_rb.html +0 -71
  670. data/doc/lib/RichTextSnip_rb.html +0 -71
  671. data/doc/lib/RichTextSyntaxRules_rb.html +0 -67
  672. data/doc/lib/RichText_rb.html +0 -73
  673. data/doc/lib/RuntimeConfig_rb.html +0 -69
  674. data/doc/lib/ScenarioData_rb.html +0 -71
  675. data/doc/lib/Scenario_rb.html +0 -69
  676. data/doc/lib/Scoreboard_rb.html +0 -69
  677. data/doc/lib/SheetHandlerBase_rb.html +0 -75
  678. data/doc/lib/SheetReceiver_rb.html +0 -79
  679. data/doc/lib/SheetSender_rb.html +0 -77
  680. data/doc/lib/ShiftAssignments_rb.html +0 -71
  681. data/doc/lib/ShiftScenario_rb.html +0 -69
  682. data/doc/lib/Shift_rb.html +0 -71
  683. data/doc/lib/SimpleQueryExpander_rb.html +0 -69
  684. data/doc/lib/SourceFileInfo_rb.html +0 -67
  685. data/doc/lib/StatusSheetReceiver_rb.html +0 -69
  686. data/doc/lib/StatusSheetSender_rb.html +0 -69
  687. data/doc/lib/SyntaxReference_rb.html +0 -75
  688. data/doc/lib/TOCEntry_rb.html +0 -71
  689. data/doc/lib/TableColumnDefinition_rb.html +0 -67
  690. data/doc/lib/TableOfContents_rb.html +0 -71
  691. data/doc/lib/TaskDependency_rb.html +0 -67
  692. data/doc/lib/TaskJuggler_rb.html +0 -75
  693. data/doc/lib/TaskScenario_rb.html +0 -71
  694. data/doc/lib/Task_rb.html +0 -71
  695. data/doc/lib/TextFormatter_rb.html +0 -69
  696. data/doc/lib/TextParser/Pattern_rb.html +0 -71
  697. data/doc/lib/TextParser/Rule_rb.html +0 -69
  698. data/doc/lib/TextParser/StackElement_rb.html +0 -69
  699. data/doc/lib/TextParser/State_rb.html +0 -67
  700. data/doc/lib/TextParser/TokenDoc_rb.html +0 -67
  701. data/doc/lib/TextParser_rb.html +0 -79
  702. data/doc/lib/TextScanner_rb.html +0 -83
  703. data/doc/lib/TimeSheetReceiver_rb.html +0 -69
  704. data/doc/lib/TimeSheetSender_rb.html +0 -69
  705. data/doc/lib/TimeSheetSummary_rb.html +0 -69
  706. data/doc/lib/TimeSheets_rb.html +0 -67
  707. data/doc/lib/Tj3AppBase_rb.html +0 -79
  708. data/doc/lib/Tj3Config_rb.html +0 -71
  709. data/doc/lib/Tj3SheetAppBase_rb.html +0 -69
  710. data/doc/lib/TjException_rb.html +0 -67
  711. data/doc/lib/TjTime_rb.html +0 -71
  712. data/doc/lib/TjpExample_rb.html +0 -69
  713. data/doc/lib/TjpSyntaxRules_rb.html +0 -67
  714. data/doc/lib/URLParameter_rb.html +0 -69
  715. data/doc/lib/UTF8String_rb.html +0 -67
  716. data/doc/lib/UserManual_rb.html +0 -79
  717. data/doc/lib/VimSyntax_rb.html +0 -69
  718. data/doc/lib/WorkingHours_rb.html +0 -71
  719. data/doc/lib/XMLDocument_rb.html +0 -69
  720. data/doc/lib/XMLElement_rb.html +0 -69
  721. data/doc/lib/daemon/Daemon_rb.html +0 -69
  722. data/doc/lib/daemon/ProcessIntercom_rb.html +0 -71
  723. data/doc/lib/daemon/ProjectBroker_rb.html +0 -83
  724. data/doc/lib/daemon/ProjectServer_rb.html +0 -85
  725. data/doc/lib/daemon/ReportServer_rb.html +0 -73
  726. data/doc/lib/daemon/ReportServlet_rb.html +0 -69
  727. data/doc/lib/daemon/WebServer_rb.html +0 -81
  728. data/doc/lib/daemon/WelcomePage_rb.html +0 -71
  729. data/doc/lib/deep_copy_rb.html +0 -67
  730. data/doc/lib/exchangebug_rb.html +0 -69
  731. data/doc/lib/reports/CSVFile_rb.html +0 -69
  732. data/doc/lib/reports/CollisionDetector_rb.html +0 -69
  733. data/doc/lib/reports/ColumnTable_rb.html +0 -69
  734. data/doc/lib/reports/GanttChart_rb.html +0 -75
  735. data/doc/lib/reports/GanttContainer_rb.html +0 -69
  736. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +0 -67
  737. data/doc/lib/reports/GanttHeader_rb.html +0 -69
  738. data/doc/lib/reports/GanttLine_rb.html +0 -79
  739. data/doc/lib/reports/GanttLoadStack_rb.html +0 -69
  740. data/doc/lib/reports/GanttMilestone_rb.html +0 -69
  741. data/doc/lib/reports/GanttRouter_rb.html +0 -69
  742. data/doc/lib/reports/GanttTaskBar_rb.html +0 -69
  743. data/doc/lib/reports/HTMLGraphics_rb.html +0 -67
  744. data/doc/lib/reports/Navigator_rb.html +0 -69
  745. data/doc/lib/reports/NikuReport_rb.html +0 -71
  746. data/doc/lib/reports/ReportBase_rb.html +0 -67
  747. data/doc/lib/reports/ReportContext_rb.html +0 -67
  748. data/doc/lib/reports/ReportTableCell_rb.html +0 -67
  749. data/doc/lib/reports/ReportTableColumn_rb.html +0 -67
  750. data/doc/lib/reports/ReportTableLegend_rb.html +0 -67
  751. data/doc/lib/reports/ReportTableLine_rb.html +0 -69
  752. data/doc/lib/reports/ReportTable_rb.html +0 -71
  753. data/doc/lib/reports/Report_rb.html +0 -93
  754. data/doc/lib/reports/ResourceListRE_rb.html +0 -75
  755. data/doc/lib/reports/StatusSheetReport_rb.html +0 -69
  756. data/doc/lib/reports/TableReport_rb.html +0 -77
  757. data/doc/lib/reports/TaskListRE_rb.html +0 -75
  758. data/doc/lib/reports/TextReport_rb.html +0 -69
  759. data/doc/lib/reports/TimeSheetReport_rb.html +0 -69
  760. data/doc/lib/reports/TjpExportRE_rb.html +0 -69
  761. data/doc/lib/ruby-signal-bug_rb.html +0 -69
  762. data/doc/lib/test_rb.html +0 -73
  763. data/doc/lib/tj3_rb.html +0 -75
  764. data/doc/lib/tj3client_rb.html +0 -75
  765. data/doc/lib/tj3d_rb.html +0 -75
  766. data/doc/lib/tj3man_rb.html +0 -75
  767. data/doc/lib/tj3ss_receiver_rb.html +0 -71
  768. data/doc/lib/tj3ss_sender_rb.html +0 -71
  769. data/doc/lib/tj3ts_receiver_rb.html +0 -71
  770. data/doc/lib/tj3ts_sender_rb.html +0 -71
  771. data/doc/lib/tj3ts_summary_rb.html +0 -71
  772. data/doc/rdoc.css +0 -706
  773. data/lib/test.rb +0 -19
  774. data/setup.rb +0 -1585
  775. data/test/TestSuite/CSV-Reports/genrefs +0 -6
  776. data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -2922
  777. data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
  778. data/test/TestSuite/Scheduler/Correct/Container.html +0 -513
  779. data/test/TestSuite/Scheduler/Correct/Precedes.html +0 -834
  780. data/test/TestSuite/Scheduler/Correct/Shift.html +0 -429
  781. data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
  782. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
  783. data/test/TestSuite/Scheduler/Errors/task_underspecified_2.tjp +0 -8
  784. data/test/TestSuite/Syntax/Correct/ReleasePlan.html +0 -160
  785. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
  786. data/test/TestSuite/Syntax/Correct/ResourceRoot.html +0 -108
  787. data/test/TestSuite/Syntax/Correct/niku.html +0 -67
@@ -1,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
-