taskjuggler 0.0.5 → 0.0.6

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 (544) hide show
  1. data/CHANGELOG +2086 -0
  2. data/benchmarks/666tasks.tjp +3183 -0
  3. data/benchmarks/booking.tjp +14 -10
  4. data/doc/AppConfig.html +95 -73
  5. data/doc/Arguments.html +22 -2
  6. data/doc/CHANGELOG.html +2587 -0
  7. data/doc/COPYING.html +21 -1
  8. data/doc/Object.html +161 -122
  9. data/doc/README.html +21 -1
  10. data/doc/RuntimeConfig.html +26 -6
  11. data/doc/String.html +38 -18
  12. data/doc/StringIO.html +579 -0
  13. data/doc/TaskJuggler.html +251 -143
  14. data/doc/TaskJuggler/Account.html +26 -6
  15. data/doc/TaskJuggler/AccountAttribute.html +28 -8
  16. data/doc/TaskJuggler/AccountScenario.html +24 -4
  17. data/doc/TaskJuggler/Allocation.html +30 -10
  18. data/doc/TaskJuggler/AllocationAttribute.html +28 -8
  19. data/doc/TaskJuggler/AttributeBase.html +46 -26
  20. data/doc/TaskJuggler/AttributeDefinition.html +22 -2
  21. data/doc/TaskJuggler/BatchProcessor.html +40 -20
  22. data/doc/TaskJuggler/Booking.html +26 -6
  23. data/doc/TaskJuggler/BookingListAttribute.html +28 -8
  24. data/doc/TaskJuggler/BooleanAttribute.html +28 -8
  25. data/doc/TaskJuggler/CSVFile.html +308 -146
  26. data/doc/TaskJuggler/CellSettingPattern.html +22 -2
  27. data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
  28. data/doc/TaskJuggler/Charge.html +26 -6
  29. data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
  30. data/doc/TaskJuggler/ChargeSet.html +33 -13
  31. data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
  32. data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
  33. data/doc/TaskJuggler/ColumnTable.html +24 -4
  34. data/doc/TaskJuggler/Daemon.html +26 -6
  35. data/doc/TaskJuggler/DateAttribute.html +26 -6
  36. data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
  37. data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
  38. data/doc/TaskJuggler/DurationAttribute.html +28 -8
  39. data/doc/TaskJuggler/FixnumAttribute.html +24 -4
  40. data/doc/TaskJuggler/FlagListAttribute.html +28 -8
  41. data/doc/TaskJuggler/FloatAttribute.html +26 -6
  42. data/doc/TaskJuggler/FormatListAttribute.html +24 -4
  43. data/doc/TaskJuggler/GanttChart.html +147 -126
  44. data/doc/TaskJuggler/GanttContainer.html +34 -14
  45. data/doc/TaskJuggler/GanttHeader.html +28 -8
  46. data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
  47. data/doc/TaskJuggler/GanttLine.html +38 -18
  48. data/doc/TaskJuggler/GanttLoadStack.html +26 -6
  49. data/doc/TaskJuggler/GanttMilestone.html +34 -14
  50. data/doc/TaskJuggler/GanttRouter.html +50 -30
  51. data/doc/TaskJuggler/GanttTaskBar.html +34 -14
  52. data/doc/TaskJuggler/HTMLDocument.html +26 -6
  53. data/doc/TaskJuggler/HTMLGraphics.html +30 -10
  54. data/doc/TaskJuggler/Interval.html +40 -22
  55. data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
  56. data/doc/TaskJuggler/JobInfo.html +24 -4
  57. data/doc/TaskJuggler/Journal.html +226 -147
  58. data/doc/TaskJuggler/JournalEntry.html +22 -2
  59. data/doc/TaskJuggler/JournalEntryList.html +129 -112
  60. data/doc/TaskJuggler/KeywordArray.html +26 -6
  61. data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
  62. data/doc/TaskJuggler/Limits.html +152 -123
  63. data/doc/TaskJuggler/Limits/Limit.html +149 -70
  64. data/doc/TaskJuggler/LimitsAttribute.html +36 -51
  65. data/doc/TaskJuggler/ListAttributeBase.html +24 -4
  66. data/doc/TaskJuggler/Log.html +50 -32
  67. data/doc/TaskJuggler/LogFile.html +37 -17
  68. data/doc/TaskJuggler/LogicalAttribute.html +53 -33
  69. data/doc/TaskJuggler/LogicalExpression.html +26 -6
  70. data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
  71. data/doc/TaskJuggler/LogicalFlag.html +42 -22
  72. data/doc/TaskJuggler/LogicalFunction.html +204 -140
  73. data/doc/TaskJuggler/LogicalOperation.html +135 -111
  74. data/doc/TaskJuggler/Macro.html +22 -2
  75. data/doc/TaskJuggler/MacroParser.html +32 -12
  76. data/doc/TaskJuggler/MacroTable.html +32 -12
  77. data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
  78. data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
  79. data/doc/TaskJuggler/Message.html +24 -4
  80. data/doc/TaskJuggler/MessageHandler.html +24 -4
  81. data/doc/TaskJuggler/Navigator.html +104 -71
  82. data/doc/TaskJuggler/NavigatorElement.html +32 -12
  83. data/doc/TaskJuggler/NikuProject.html +22 -2
  84. data/doc/TaskJuggler/NikuReport.html +310 -228
  85. data/doc/TaskJuggler/NikuResource.html +22 -2
  86. data/doc/TaskJuggler/NodeListAttribute.html +615 -0
  87. data/doc/TaskJuggler/OnShiftCache.html +32 -12
  88. data/doc/TaskJuggler/ProcessIntercom.html +205 -78
  89. data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
  90. data/doc/TaskJuggler/Project.html +708 -660
  91. data/doc/TaskJuggler/ProjectBroker.html +506 -304
  92. data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
  93. data/doc/TaskJuggler/ProjectFileParser.html +429 -373
  94. data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
  95. data/doc/TaskJuggler/ProjectRecord.html +80 -60
  96. data/doc/TaskJuggler/ProjectServer.html +312 -237
  97. data/doc/TaskJuggler/ProjectServerIface.html +101 -43
  98. data/doc/TaskJuggler/PropertyAttribute.html +32 -12
  99. data/doc/TaskJuggler/PropertyList.html +166 -145
  100. data/doc/TaskJuggler/PropertySet.html +254 -224
  101. data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
  102. data/doc/TaskJuggler/Query.html +169 -148
  103. data/doc/TaskJuggler/RTFHandlers.html +622 -0
  104. data/doc/TaskJuggler/RTFNavigator.html +28 -8
  105. data/doc/TaskJuggler/RTFQuery.html +40 -20
  106. data/doc/TaskJuggler/RTFReport.html +62 -25
  107. data/doc/TaskJuggler/RTFReportLink.html +765 -0
  108. data/doc/TaskJuggler/RealFormat.html +26 -6
  109. data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
  110. data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
  111. data/doc/TaskJuggler/Report.html +402 -251
  112. data/doc/TaskJuggler/ReportBase.html +162 -137
  113. data/doc/TaskJuggler/ReportContext.html +112 -29
  114. data/doc/TaskJuggler/ReportServer.html +89 -64
  115. data/doc/TaskJuggler/ReportServerIface.html +75 -55
  116. data/doc/TaskJuggler/ReportServerRecord.html +54 -31
  117. data/doc/TaskJuggler/ReportServlet.html +980 -0
  118. data/doc/TaskJuggler/ReportTable.html +41 -21
  119. data/doc/TaskJuggler/ReportTableCell.html +214 -170
  120. data/doc/TaskJuggler/ReportTableColumn.html +30 -10
  121. data/doc/TaskJuggler/ReportTableLegend.html +36 -16
  122. data/doc/TaskJuggler/ReportTableLine.html +32 -12
  123. data/doc/TaskJuggler/Resource.html +99 -87
  124. data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
  125. data/doc/TaskJuggler/ResourceListRE.html +47 -26
  126. data/doc/TaskJuggler/ResourceScenario.html +403 -437
  127. data/doc/TaskJuggler/RichText.html +26 -6
  128. data/doc/TaskJuggler/RichTextAttribute.html +50 -30
  129. data/doc/TaskJuggler/RichTextDocument.html +37 -17
  130. data/doc/TaskJuggler/RichTextElement.html +475 -413
  131. data/doc/TaskJuggler/RichTextException.html +22 -2
  132. data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
  133. data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
  134. data/doc/TaskJuggler/RichTextImage.html +22 -2
  135. data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
  136. data/doc/TaskJuggler/RichTextParser.html +56 -34
  137. data/doc/TaskJuggler/RichTextScanner.html +82 -61
  138. data/doc/TaskJuggler/RichTextSnip.html +34 -14
  139. data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
  140. data/doc/TaskJuggler/Scenario.html +22 -2
  141. data/doc/TaskJuggler/ScenarioData.html +30 -46
  142. data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
  143. data/doc/TaskJuggler/Scoreboard.html +42 -22
  144. data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
  145. data/doc/TaskJuggler/SheetReceiver.html +333 -295
  146. data/doc/TaskJuggler/SheetSender.html +253 -230
  147. data/doc/TaskJuggler/Shift.html +26 -6
  148. data/doc/TaskJuggler/ShiftAssignment.html +89 -73
  149. data/doc/TaskJuggler/ShiftAssignments.html +226 -234
  150. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
  151. data/doc/TaskJuggler/ShiftScenario.html +28 -8
  152. data/doc/TaskJuggler/SortListAttribute.html +34 -14
  153. data/doc/TaskJuggler/SourceFileInfo.html +24 -4
  154. data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
  155. data/doc/TaskJuggler/StatusSheetReport.html +168 -153
  156. data/doc/TaskJuggler/StatusSheetSender.html +24 -3
  157. data/doc/TaskJuggler/StringAttribute.html +38 -18
  158. data/doc/TaskJuggler/SymbolAttribute.html +32 -12
  159. data/doc/TaskJuggler/SyntaxReference.html +40 -20
  160. data/doc/TaskJuggler/TOCEntry.html +26 -6
  161. data/doc/TaskJuggler/TSResourceRecord.html +22 -2
  162. data/doc/TaskJuggler/TSTaskRecord.html +22 -2
  163. data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
  164. data/doc/TaskJuggler/TableOfContents.html +26 -6
  165. data/doc/TaskJuggler/TableReport.html +937 -904
  166. data/doc/TaskJuggler/Task.html +55 -36
  167. data/doc/TaskJuggler/TaskDependency.html +24 -4
  168. data/doc/TaskJuggler/TaskListAttribute.html +50 -30
  169. data/doc/TaskJuggler/TaskListRE.html +27 -7
  170. data/doc/TaskJuggler/TaskScenario.html +1273 -1153
  171. data/doc/TaskJuggler/TextFormatter.html +28 -8
  172. data/doc/TaskJuggler/TextParser.html +585 -338
  173. data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
  174. data/doc/TaskJuggler/TextParser/Rule.html +95 -73
  175. data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
  176. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
  177. data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
  178. data/doc/TaskJuggler/TextReport.html +28 -8
  179. data/doc/TaskJuggler/TextScanner.html +400 -1404
  180. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
  181. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
  182. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
  183. data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
  184. data/doc/TaskJuggler/TimeSheet.html +48 -28
  185. data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
  186. data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
  187. data/doc/TaskJuggler/TimeSheetReport.html +154 -133
  188. data/doc/TaskJuggler/TimeSheetSender.html +24 -3
  189. data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
  190. data/doc/TaskJuggler/TimeSheets.html +26 -6
  191. data/doc/TaskJuggler/Tj3AppBase.html +85 -58
  192. data/doc/TaskJuggler/Tj3Client.html +292 -238
  193. data/doc/TaskJuggler/Tj3Daemon.html +159 -74
  194. data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
  195. data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
  196. data/doc/TaskJuggler/Tj3SsSender.html +53 -26
  197. data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
  198. data/doc/TaskJuggler/Tj3TsSender.html +26 -6
  199. data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
  200. data/doc/TaskJuggler/TjException.html +22 -2
  201. data/doc/TaskJuggler/TjTime.html +216 -160
  202. data/doc/TaskJuggler/TjpExample.html +34 -14
  203. data/doc/TaskJuggler/TjpExportRE.html +403 -407
  204. data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
  205. data/doc/TaskJuggler/URLParameter.html +649 -0
  206. data/doc/TaskJuggler/UserManual.html +42 -22
  207. data/doc/TaskJuggler/WebServer.html +702 -0
  208. data/doc/TaskJuggler/WorkingHours.html +38 -18
  209. data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
  210. data/doc/TaskJuggler/XMLBlob.html +24 -4
  211. data/doc/TaskJuggler/XMLComment.html +24 -4
  212. data/doc/TaskJuggler/XMLDocument.html +30 -10
  213. data/doc/TaskJuggler/XMLElement.html +34 -14
  214. data/doc/TaskJuggler/XMLNamedText.html +22 -2
  215. data/doc/TaskJuggler/XMLText.html +24 -4
  216. data/doc/index.html +1841 -1666
  217. data/doc/lib/AccountScenario_rb.html +1 -1
  218. data/doc/lib/Account_rb.html +1 -1
  219. data/doc/lib/Allocation_rb.html +1 -1
  220. data/doc/lib/AppConfig_rb.html +2 -2
  221. data/doc/lib/AttributeBase_rb.html +1 -1
  222. data/doc/lib/AttributeDefinition_rb.html +1 -1
  223. data/doc/lib/Attributes_rb.html +2 -2
  224. data/doc/lib/BatchProcessor_rb.html +1 -1
  225. data/doc/lib/Booking_rb.html +1 -1
  226. data/doc/lib/ChargeSet_rb.html +1 -1
  227. data/doc/lib/Charge_rb.html +1 -1
  228. data/doc/lib/HTMLDocument_rb.html +1 -1
  229. data/doc/lib/Interval_rb.html +1 -1
  230. data/doc/lib/Journal_rb.html +2 -2
  231. data/doc/lib/KeywordArray_rb.html +1 -1
  232. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  233. data/doc/lib/Limits_rb.html +2 -2
  234. data/doc/lib/LogFile_rb.html +2 -2
  235. data/doc/lib/Log_rb.html +1 -1
  236. data/doc/lib/LogicalExpression_rb.html +1 -1
  237. data/doc/lib/LogicalFunction_rb.html +2 -2
  238. data/doc/lib/LogicalOperation_rb.html +2 -2
  239. data/doc/lib/MacroParser_rb.html +1 -1
  240. data/doc/lib/MacroTable_rb.html +1 -1
  241. data/doc/lib/MessageHandler_rb.html +1 -1
  242. data/doc/lib/Message_rb.html +1 -1
  243. data/doc/lib/ProjectFileParser_rb.html +4 -8
  244. data/doc/lib/ProjectFileScanner_rb.html +67 -0
  245. data/doc/lib/Project_rb.html +2 -2
  246. data/doc/lib/PropertyList_rb.html +2 -2
  247. data/doc/lib/PropertySet_rb.html +2 -2
  248. data/doc/lib/PropertyTreeNode_rb.html +2 -2
  249. data/doc/lib/Query_rb.html +2 -2
  250. data/doc/lib/RTFHandlers_rb.html +73 -0
  251. data/doc/lib/RTFNavigator_rb.html +1 -1
  252. data/doc/lib/RTFQuery_rb.html +1 -1
  253. data/doc/lib/RTFReportLink_rb.html +71 -0
  254. data/doc/lib/RTFReport_rb.html +2 -2
  255. data/doc/lib/RealFormat_rb.html +1 -1
  256. data/doc/lib/ResourceScenario_rb.html +2 -2
  257. data/doc/lib/Resource_rb.html +2 -2
  258. data/doc/lib/RichTextDocument_rb.html +1 -1
  259. data/doc/lib/RichTextElement_rb.html +2 -2
  260. data/doc/lib/RichTextFunctionExample_rb.html +1 -1
  261. data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
  262. data/doc/lib/RichTextParser_rb.html +2 -2
  263. data/doc/lib/RichTextScanner_rb.html +2 -2
  264. data/doc/lib/RichTextSnip_rb.html +1 -1
  265. data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
  266. data/doc/lib/RichText_rb.html +1 -1
  267. data/doc/lib/RuntimeConfig_rb.html +1 -1
  268. data/doc/lib/ScenarioData_rb.html +2 -2
  269. data/doc/lib/Scenario_rb.html +1 -1
  270. data/doc/lib/Scoreboard_rb.html +1 -1
  271. data/doc/lib/SheetHandlerBase_rb.html +1 -1
  272. data/doc/lib/SheetReceiver_rb.html +2 -2
  273. data/doc/lib/SheetSender_rb.html +4 -2
  274. data/doc/lib/ShiftAssignments_rb.html +4 -2
  275. data/doc/lib/ShiftScenario_rb.html +1 -1
  276. data/doc/lib/Shift_rb.html +1 -1
  277. data/doc/lib/SourceFileInfo_rb.html +1 -1
  278. data/doc/lib/StatusSheetReceiver_rb.html +2 -2
  279. data/doc/lib/StatusSheetSender_rb.html +2 -2
  280. data/doc/lib/SyntaxReference_rb.html +1 -1
  281. data/doc/lib/TOCEntry_rb.html +1 -1
  282. data/doc/lib/TableColumnDefinition_rb.html +2 -2
  283. data/doc/lib/TableOfContents_rb.html +1 -1
  284. data/doc/lib/TaskDependency_rb.html +1 -1
  285. data/doc/lib/TaskJuggler_rb.html +2 -2
  286. data/doc/lib/TaskScenario_rb.html +2 -2
  287. data/doc/lib/Task_rb.html +2 -2
  288. data/doc/lib/TextFormatter_rb.html +1 -1
  289. data/doc/lib/TextParser/Pattern_rb.html +1 -1
  290. data/doc/lib/TextParser/Rule_rb.html +2 -2
  291. data/doc/lib/TextParser/StackElement_rb.html +2 -2
  292. data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
  293. data/doc/lib/TextParser_rb.html +2 -2
  294. data/doc/lib/TextScanner_rb.html +6 -2
  295. data/doc/lib/TimeSheetReceiver_rb.html +2 -2
  296. data/doc/lib/TimeSheetSender_rb.html +2 -2
  297. data/doc/lib/TimeSheetSummary_rb.html +2 -2
  298. data/doc/lib/TimeSheets_rb.html +2 -2
  299. data/doc/lib/Tj3AppBase_rb.html +2 -2
  300. data/doc/lib/Tj3Config_rb.html +2 -2
  301. data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
  302. data/doc/lib/TjException_rb.html +1 -1
  303. data/doc/lib/TjTime_rb.html +2 -2
  304. data/doc/lib/TjpExample_rb.html +1 -1
  305. data/doc/lib/TjpSyntaxRules_rb.html +2 -2
  306. data/doc/lib/URLParameter_rb.html +67 -0
  307. data/doc/lib/UTF8String_rb.html +1 -1
  308. data/doc/lib/UserManual_rb.html +1 -1
  309. data/doc/lib/WorkingHours_rb.html +1 -1
  310. data/doc/lib/XMLDocument_rb.html +2 -2
  311. data/doc/lib/XMLElement_rb.html +1 -1
  312. data/doc/lib/daemon/Daemon_rb.html +1 -1
  313. data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
  314. data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
  315. data/doc/lib/daemon/ProjectServer_rb.html +2 -2
  316. data/doc/lib/daemon/ReportServer_rb.html +2 -2
  317. data/doc/lib/daemon/WebServer_rb.html +75 -0
  318. data/doc/lib/deep_copy_rb.html +2 -2
  319. data/doc/lib/reports/CSVFile_rb.html +2 -2
  320. data/doc/lib/reports/ColumnTable_rb.html +1 -1
  321. data/doc/lib/reports/GanttChart_rb.html +2 -2
  322. data/doc/lib/reports/GanttContainer_rb.html +1 -1
  323. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  324. data/doc/lib/reports/GanttHeader_rb.html +1 -1
  325. data/doc/lib/reports/GanttLine_rb.html +1 -1
  326. data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
  327. data/doc/lib/reports/GanttMilestone_rb.html +1 -1
  328. data/doc/lib/reports/GanttRouter_rb.html +1 -1
  329. data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
  330. data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
  331. data/doc/lib/reports/Navigator_rb.html +2 -2
  332. data/doc/lib/reports/NikuReport_rb.html +2 -2
  333. data/doc/lib/reports/ReportBase_rb.html +2 -2
  334. data/doc/lib/reports/ReportContext_rb.html +2 -2
  335. data/doc/lib/reports/ReportTableCell_rb.html +2 -2
  336. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  337. data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
  338. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  339. data/doc/lib/reports/ReportTable_rb.html +2 -2
  340. data/doc/lib/reports/Report_rb.html +2 -2
  341. data/doc/lib/reports/ResourceListRE_rb.html +2 -2
  342. data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
  343. data/doc/lib/reports/TableReport_rb.html +2 -2
  344. data/doc/lib/reports/TaskListRE_rb.html +2 -2
  345. data/doc/lib/reports/TextReport_rb.html +1 -1
  346. data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
  347. data/doc/lib/reports/TjpExportRE_rb.html +2 -2
  348. data/doc/lib/ruby-signal-bug_rb.html +1 -1
  349. data/doc/lib/taskjuggler3_rb.html +2 -2
  350. data/doc/lib/tj3client_rb.html +2 -2
  351. data/doc/lib/tj3d_rb.html +2 -2
  352. data/doc/lib/tj3man_rb.html +1 -1
  353. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  354. data/doc/lib/tj3ss_sender_rb.html +2 -2
  355. data/doc/lib/tj3ts_receiver_rb.html +2 -2
  356. data/doc/lib/tj3ts_sender_rb.html +1 -1
  357. data/doc/lib/tj3ts_summary_rb.html +1 -1
  358. data/doc/rdoc.css +9 -4
  359. data/examples/tutorial.tjp +17 -15
  360. data/gem_spec.rb +3 -0
  361. data/lib/AppConfig.rb +3 -1
  362. data/lib/Attributes.rb +10 -8
  363. data/lib/Journal.rb +55 -20
  364. data/lib/Limits.rb +72 -46
  365. data/lib/LogFile.rb +3 -3
  366. data/lib/LogicalFunction.rb +19 -6
  367. data/lib/LogicalOperation.rb +5 -1
  368. data/lib/Project.rb +37 -9
  369. data/lib/ProjectFileParser.rb +25 -22
  370. data/lib/ProjectFileScanner.rb +365 -0
  371. data/lib/PropertyList.rb +2 -1
  372. data/lib/PropertySet.rb +14 -4
  373. data/lib/PropertyTreeNode.rb +42 -29
  374. data/lib/Query.rb +3 -1
  375. data/lib/RTFHandlers.rb +35 -0
  376. data/lib/RTFReport.rb +23 -6
  377. data/lib/RTFReportLink.rb +72 -0
  378. data/lib/Resource.rb +8 -16
  379. data/lib/ResourceScenario.rb +1 -22
  380. data/lib/RichTextElement.rb +42 -0
  381. data/lib/RichTextParser.rb +6 -4
  382. data/lib/RichTextScanner.rb +5 -5
  383. data/lib/RichTextSyntaxRules.rb +48 -10
  384. data/lib/ScenarioData.rb +5 -3
  385. data/lib/SheetReceiver.rb +24 -6
  386. data/lib/SheetSender.rb +17 -13
  387. data/lib/ShiftAssignments.rb +56 -52
  388. data/lib/StatusSheetReceiver.rb +1 -0
  389. data/lib/StatusSheetSender.rb +1 -0
  390. data/lib/TableColumnDefinition.rb +4 -2
  391. data/lib/Task.rb +8 -9
  392. data/lib/TaskJuggler.rb +21 -11
  393. data/lib/TaskScenario.rb +61 -26
  394. data/lib/TextParser.rb +268 -106
  395. data/lib/TextParser/Rule.rb +4 -2
  396. data/lib/TextParser/StackElement.rb +6 -4
  397. data/lib/TextScanner.rb +283 -700
  398. data/lib/TimeSheetReceiver.rb +1 -0
  399. data/lib/TimeSheetSender.rb +1 -0
  400. data/lib/TimeSheetSummary.rb +51 -26
  401. data/lib/TimeSheets.rb +1 -1
  402. data/lib/Tj3AppBase.rb +8 -1
  403. data/lib/Tj3Config.rb +1 -1
  404. data/lib/TjTime.rb +5 -0
  405. data/lib/TjpSyntaxRules.rb +360 -144
  406. data/lib/URLParameter.rb +30 -0
  407. data/lib/XMLDocument.rb +2 -2
  408. data/lib/daemon/ProcessIntercom.rb +50 -9
  409. data/lib/daemon/ProjectBroker.rb +63 -10
  410. data/lib/daemon/ProjectServer.rb +47 -16
  411. data/lib/daemon/ReportServer.rb +9 -4
  412. data/lib/daemon/WebServer.rb +204 -0
  413. data/lib/deep_copy.rb +4 -1
  414. data/lib/reports/CSVFile.rb +150 -66
  415. data/lib/reports/GanttChart.rb +2 -1
  416. data/lib/reports/Navigator.rb +18 -5
  417. data/lib/reports/NikuReport.rb +32 -2
  418. data/lib/reports/Report.rb +65 -37
  419. data/lib/reports/ReportBase.rb +14 -9
  420. data/lib/reports/ReportContext.rb +19 -4
  421. data/lib/reports/ReportTable.rb +2 -2
  422. data/lib/reports/ReportTableCell.rb +54 -30
  423. data/lib/reports/ResourceListRE.rb +4 -3
  424. data/lib/reports/StatusSheetReport.rb +8 -13
  425. data/lib/reports/TableReport.rb +47 -32
  426. data/lib/reports/TaskListRE.rb +3 -3
  427. data/lib/reports/TimeSheetReport.rb +14 -5
  428. data/lib/reports/TjpExportRE.rb +14 -19
  429. data/lib/taskjuggler3.rb +15 -0
  430. data/lib/tj3client.rb +9 -7
  431. data/lib/tj3d.rb +38 -10
  432. data/lib/tj3ss_sender.rb +7 -0
  433. data/lib/tj3ts_receiver.rb +1 -0
  434. data/manual/Day_To_Day_Juggling +1 -1
  435. data/manual/Rich_Text_Attributes +8 -0
  436. data/manual/TaskJuggler_2x_Migration +7 -0
  437. data/manual/The_TaskJuggler_Syntax +20 -6
  438. data/prj_cfg.rb +3 -2
  439. data/tasks/changelog.rake +36 -0
  440. data/tasks/csts.rake +2 -3
  441. data/tasks/gem.rake +10 -0
  442. data/tasks/missing.rake +0 -17
  443. data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
  444. data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
  445. data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
  446. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
  447. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
  448. data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
  449. data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
  450. data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
  451. data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
  452. data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
  453. data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
  454. data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
  455. data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
  456. data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
  457. data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
  458. data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
  459. data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
  460. data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
  461. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
  462. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
  463. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
  464. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
  465. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
  466. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
  467. data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
  468. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
  469. data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
  470. data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
  471. data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
  472. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
  473. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
  474. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
  475. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
  476. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
  477. data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
  478. data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
  479. data/test/TestSuite/StatusSheets/run +3 -2
  480. data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
  481. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
  482. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
  483. data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
  484. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
  485. data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
  486. data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
  487. data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
  488. data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
  489. data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
  490. data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
  491. data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
  492. data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
  493. data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
  494. data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
  495. data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
  496. data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
  497. data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
  498. data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
  499. data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
  500. data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
  501. data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
  502. data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
  503. data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
  504. data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
  505. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  506. data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
  507. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
  508. data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
  509. data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
  510. data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
  511. data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
  512. data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
  513. data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
  514. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  515. data/test/TestSuite/TimeSheets/run +5 -5
  516. data/test/test_CSVFile.rb +75 -0
  517. data/test/test_Limits.rb +63 -5
  518. data/test/test_ProjectFileScanner.rb +163 -0
  519. data/test/test_ReportGenerator.rb +81 -0
  520. data/test/test_RichText.rb +21 -3
  521. data/test/test_Scheduler.rb +1 -1
  522. data/test/test_ShiftAssignments.rb +4 -4
  523. data/test/test_Syntax.rb +1 -1
  524. data/test/test_URLParameter.rb +30 -0
  525. metadata +126 -32
  526. data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
  527. data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
  528. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
  529. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
  530. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
  531. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
  532. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
  533. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
  534. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
  535. data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
  536. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
  537. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
  538. data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
  539. data/test/TestSuite/TimeSheets/receiver.log +0 -102
  540. data/test/TestSuite/TimeSheets/sender.log +0 -794
  541. data/test/TestSuite/TimeSheets/summary.log +0 -884
  542. data/test/TestSuite/TimeSheets/timesheets.log +0 -45
  543. data/test/TestSuite/TimeSheets/tj3d.log +0 -292
  544. data/test/test_TextScanner.rb +0 -95
@@ -69,17 +69,17 @@
69
69
  <h3 class="section-header">Methods</h3>
70
70
  <ul class="link-list">
71
71
 
72
- <li><a href="#M000760">::new</a></li>
72
+ <li><a href="#method-c-new">::new</a></li>
73
73
 
74
- <li><a href="#M000764">#currentUrl</a></li>
74
+ <li><a href="#method-i-currentUrl">#currentUrl</a></li>
75
75
 
76
- <li><a href="#M000763">#currentUrl=</a></li>
76
+ <li><a href="#method-i-currentUrl%3D">#currentUrl=</a></li>
77
77
 
78
- <li><a href="#M000765">#root</a></li>
78
+ <li><a href="#method-i-root">#root</a></li>
79
79
 
80
- <li><a href="#M000761">#to_html</a></li>
80
+ <li><a href="#method-i-to_html">#to_html</a></li>
81
81
 
82
- <li><a href="#M000762">#to_s</a></li>
82
+ <li><a href="#method-i-to_s">#to_s</a></li>
83
83
 
84
84
  </ul>
85
85
  </div>
@@ -96,6 +96,8 @@
96
96
  <h3 class="section-header">Files</h3>
97
97
  <ul>
98
98
 
99
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
100
+
99
101
  <li class="file"><a href="../COPYING.html">COPYING</a></li>
100
102
 
101
103
  <li class="file"><a href="../README.html">README</a></li>
@@ -265,6 +267,8 @@
265
267
 
266
268
  <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
267
269
 
270
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
271
+
268
272
  <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
269
273
 
270
274
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -279,6 +283,8 @@
279
283
 
280
284
  <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
281
285
 
286
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
287
+
282
288
  <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
283
289
 
284
290
  <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -295,12 +301,16 @@
295
301
 
296
302
  <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
297
303
 
304
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
305
+
298
306
  <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
299
307
 
300
308
  <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
301
309
 
302
310
  <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
303
311
 
312
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
313
+
304
314
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
305
315
 
306
316
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -319,6 +329,8 @@
319
329
 
320
330
  <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
321
331
 
332
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
333
+
322
334
  <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
323
335
 
324
336
  <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -447,6 +459,8 @@
447
459
 
448
460
  <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
449
461
 
462
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
463
+
450
464
  <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
451
465
 
452
466
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -491,8 +505,12 @@
491
505
 
492
506
  <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
493
507
 
508
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
509
+
494
510
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
495
511
 
512
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
513
+
496
514
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
497
515
 
498
516
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -519,6 +537,8 @@
519
537
 
520
538
  <li><a href="../String.html">String</a></li>
521
539
 
540
+ <li><a href="../StringIO.html">StringIO</a></li>
541
+
522
542
  </ul>
523
543
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
524
544
  </div>
@@ -634,7 +654,7 @@
634
654
 
635
655
 
636
656
  <div id="new-method" class="method-detail ">
637
- <a name="M000760"></a>
657
+ <a name="method-c-new"></a>
638
658
 
639
659
  <div class="method-heading">
640
660
 
@@ -680,7 +700,7 @@
680
700
 
681
701
 
682
702
  <div id="current-rl-method" class="method-detail ">
683
- <a name="M000764"></a>
703
+ <a name="method-i-currentUrl"></a>
684
704
 
685
705
  <div class="method-heading">
686
706
 
@@ -716,7 +736,7 @@ Get the URL of the current report from the root node.
716
736
 
717
737
 
718
738
  <div id="current-rl--method" class="method-detail ">
719
- <a name="M000763"></a>
739
+ <a name="method-i-currentUrl%3D"></a>
720
740
 
721
741
  <div class="method-heading">
722
742
 
@@ -754,7 +774,7 @@ used, we use it to store the current URL there.
754
774
 
755
775
 
756
776
  <div id="root-method" class="method-detail ">
757
- <a name="M000765"></a>
777
+ <a name="method-i-root"></a>
758
778
 
759
779
  <div class="method-heading">
760
780
 
@@ -794,7 +814,7 @@ Traverse the tree all the way to the top and return the root element.
794
814
 
795
815
 
796
816
  <div id="to-html-method" class="method-detail ">
797
- <a name="M000761"></a>
817
+ <a name="method-i-to_html"></a>
798
818
 
799
819
  <div class="method-heading">
800
820
 
@@ -869,7 +889,7 @@ Traverse the tree all the way to the top and return the root element.
869
889
 
870
890
 
871
891
  <div id="to-s-method" class="method-detail ">
872
- <a name="M000762"></a>
892
+ <a name="method-i-to_s"></a>
873
893
 
874
894
  <div class="method-heading">
875
895
 
@@ -69,7 +69,7 @@
69
69
  <h3 class="section-header">Methods</h3>
70
70
  <ul class="link-list">
71
71
 
72
- <li><a href="#M000905">::new</a></li>
72
+ <li><a href="#method-c-new">::new</a></li>
73
73
 
74
74
  </ul>
75
75
  </div>
@@ -86,6 +86,8 @@
86
86
  <h3 class="section-header">Files</h3>
87
87
  <ul>
88
88
 
89
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
90
+
89
91
  <li class="file"><a href="../COPYING.html">COPYING</a></li>
90
92
 
91
93
  <li class="file"><a href="../README.html">README</a></li>
@@ -255,6 +257,8 @@
255
257
 
256
258
  <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
257
259
 
260
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
261
+
258
262
  <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
259
263
 
260
264
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -269,6 +273,8 @@
269
273
 
270
274
  <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
271
275
 
276
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
277
+
272
278
  <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
273
279
 
274
280
  <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -285,12 +291,16 @@
285
291
 
286
292
  <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
287
293
 
294
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
295
+
288
296
  <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
289
297
 
290
298
  <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
291
299
 
292
300
  <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
293
301
 
302
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
303
+
294
304
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
295
305
 
296
306
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -309,6 +319,8 @@
309
319
 
310
320
  <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
311
321
 
322
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
323
+
312
324
  <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
313
325
 
314
326
  <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -437,6 +449,8 @@
437
449
 
438
450
  <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
439
451
 
452
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
453
+
440
454
  <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
441
455
 
442
456
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -481,8 +495,12 @@
481
495
 
482
496
  <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
483
497
 
498
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
499
+
484
500
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
485
501
 
502
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
503
+
486
504
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
487
505
 
488
506
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -509,6 +527,8 @@
509
527
 
510
528
  <li><a href="../String.html">String</a></li>
511
529
 
530
+ <li><a href="../StringIO.html">StringIO</a></li>
531
+
512
532
  </ul>
513
533
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
514
534
  </div>
@@ -603,7 +623,7 @@
603
623
 
604
624
 
605
625
  <div id="new-method" class="method-detail ">
606
- <a name="M000905"></a>
626
+ <a name="method-c-new"></a>
607
627
 
608
628
  <div class="method-heading">
609
629
 
@@ -69,29 +69,31 @@
69
69
  <h3 class="section-header">Methods</h3>
70
70
  <ul class="link-list">
71
71
 
72
- <li><a href="#M000907">::new</a></li>
72
+ <li><a href="#method-c-new">::new</a></li>
73
73
 
74
- <li><a href="#M000917">#collectProjects</a></li>
74
+ <li><a href="#method-i-collectProjects">#collectProjects</a></li>
75
75
 
76
- <li><a href="#M000918">#computeProjectAllocations</a></li>
76
+ <li><a href="#method-i-computeProjectAllocations">#computeProjectAllocations</a></li>
77
77
 
78
- <li><a href="#M000916">#computeResourceTotals</a></li>
78
+ <li><a href="#method-i-computeResourceTotals">#computeResourceTotals</a></li>
79
79
 
80
- <li><a href="#M000908">#generateIntermediateFormat</a></li>
80
+ <li><a href="#method-i-generateIntermediateFormat">#generateIntermediateFormat</a></li>
81
81
 
82
- <li><a href="#M000915">#htmlTabCell</a></li>
82
+ <li><a href="#method-i-htmlTabCell">#htmlTabCell</a></li>
83
83
 
84
- <li><a href="#M000913">#projectTotal</a></li>
84
+ <li><a href="#method-i-projectTotal">#projectTotal</a></li>
85
85
 
86
- <li><a href="#M000912">#resourceTotal</a></li>
86
+ <li><a href="#method-i-resourceTotal">#resourceTotal</a></li>
87
87
 
88
- <li><a href="#M000911">#sum</a></li>
88
+ <li><a href="#method-i-sum">#sum</a></li>
89
89
 
90
- <li><a href="#M000909">#to_html</a></li>
90
+ <li><a href="#method-i-to_csv">#to_csv</a></li>
91
91
 
92
- <li><a href="#M000910">#to_niku</a></li>
92
+ <li><a href="#method-i-to_html">#to_html</a></li>
93
93
 
94
- <li><a href="#M000914">#total</a></li>
94
+ <li><a href="#method-i-to_niku">#to_niku</a></li>
95
+
96
+ <li><a href="#method-i-total">#total</a></li>
95
97
 
96
98
  </ul>
97
99
  </div>
@@ -108,6 +110,8 @@
108
110
  <h3 class="section-header">Files</h3>
109
111
  <ul>
110
112
 
113
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
114
+
111
115
  <li class="file"><a href="../COPYING.html">COPYING</a></li>
112
116
 
113
117
  <li class="file"><a href="../README.html">README</a></li>
@@ -277,6 +281,8 @@
277
281
 
278
282
  <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
279
283
 
284
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
285
+
280
286
  <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
281
287
 
282
288
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -291,6 +297,8 @@
291
297
 
292
298
  <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
293
299
 
300
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
301
+
294
302
  <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
295
303
 
296
304
  <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -307,12 +315,16 @@
307
315
 
308
316
  <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
309
317
 
318
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
319
+
310
320
  <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
311
321
 
312
322
  <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
313
323
 
314
324
  <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
315
325
 
326
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
327
+
316
328
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
317
329
 
318
330
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -331,6 +343,8 @@
331
343
 
332
344
  <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
333
345
 
346
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
347
+
334
348
  <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
335
349
 
336
350
  <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -459,6 +473,8 @@
459
473
 
460
474
  <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
461
475
 
476
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
477
+
462
478
  <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
463
479
 
464
480
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -503,8 +519,12 @@
503
519
 
504
520
  <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
505
521
 
522
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
523
+
506
524
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
507
525
 
526
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
527
+
508
528
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
509
529
 
510
530
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -531,6 +551,8 @@
531
551
 
532
552
  <li><a href="../String.html">String</a></li>
533
553
 
554
+ <li><a href="../StringIO.html">StringIO</a></li>
555
+
534
556
  </ul>
535
557
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
536
558
  </div>
@@ -570,7 +592,7 @@ other Clarity installations.
570
592
 
571
593
 
572
594
  <div id="new-method" class="method-detail ">
573
- <a name="M000907"></a>
595
+ <a name="method-c-new"></a>
574
596
 
575
597
  <div class="method-heading">
576
598
 
@@ -621,7 +643,7 @@ other Clarity installations.
621
643
 
622
644
 
623
645
  <div id="generate-ntermediate-ormat-method" class="method-detail ">
624
- <a name="M000908"></a>
646
+ <a name="method-i-generateIntermediateFormat"></a>
625
647
 
626
648
  <div class="method-heading">
627
649
 
@@ -657,11 +679,70 @@ other Clarity installations.
657
679
 
658
680
 
659
681
 
682
+ </div>
683
+
684
+
685
+ <div id="to-csv-method" class="method-detail ">
686
+ <a name="method-i-to_csv"></a>
687
+
688
+ <div class="method-heading">
689
+
690
+ <span class="method-name">to_csv</span><span
691
+ class="method-args">()</span>
692
+ <span class="method-click-advice">click to toggle source</span>
693
+
694
+ </div>
695
+
696
+ <div class="method-description">
697
+
698
+
699
+
700
+
701
+
702
+ <div class="method-source-code"
703
+ id="to-csv-source">
704
+ <pre>
705
+ <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 196</span>
706
+ 196: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_csv</span>
707
+ 197: <span class="ruby-identifier">table</span> = []
708
+ 198: <span class="ruby-comment cmt"># Header line with project names</span>
709
+ 199: <span class="ruby-identifier">table</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">row</span> = [])
710
+ 200: <span class="ruby-comment cmt"># First column is the resource name and ID.</span>
711
+ 201: <span class="ruby-identifier">row</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&quot;</span>
712
+ 202: <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">projectId</span><span class="ruby-operator">|</span>
713
+ 203: <span class="ruby-identifier">row</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@projects</span>[<span class="ruby-identifier">projectId</span>].<span class="ruby-identifier">name</span>
714
+ 204: <span class="ruby-keyword kw">end</span>
715
+ 205:
716
+ 206: <span class="ruby-comment cmt"># Header line with project IDs</span>
717
+ 207: <span class="ruby-identifier">table</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">row</span> = [])
718
+ 208: <span class="ruby-identifier">row</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;Resource&quot;</span>
719
+ 209: <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">projectId</span><span class="ruby-operator">|</span>
720
+ 210: <span class="ruby-identifier">row</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">projectId</span>
721
+ 211: <span class="ruby-keyword kw">end</span>
722
+ 212:
723
+ 213: <span class="ruby-ivar">@resourcesTotalEffort</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resourceId</span><span class="ruby-operator">|</span>
724
+ 214: <span class="ruby-comment cmt"># Add one line per resource.</span>
725
+ 215: <span class="ruby-identifier">table</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">row</span> = [])
726
+ 216: <span class="ruby-identifier">row</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{@resources[resourceId].name} (#{resourceId})&quot;</span>
727
+ 217: <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">projectId</span><span class="ruby-operator">|</span>
728
+ 218: <span class="ruby-identifier">row</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">sum</span>(<span class="ruby-identifier">projectId</span>, <span class="ruby-identifier">resourceId</span>)
729
+ 219: <span class="ruby-keyword kw">end</span>
730
+ 220: <span class="ruby-keyword kw">end</span>
731
+ 221:
732
+ 222: <span class="ruby-identifier">table</span>
733
+ 223: <span class="ruby-keyword kw">end</span></pre>
734
+ </div>
735
+
736
+ </div>
737
+
738
+
739
+
740
+
660
741
  </div>
661
742
 
662
743
 
663
744
  <div id="to-html-method" class="method-detail ">
664
- <a name="M000909"></a>
745
+ <a name="method-i-to_html"></a>
665
746
 
666
747
  <div class="method-heading">
667
748
 
@@ -753,7 +834,7 @@ other Clarity installations.
753
834
 
754
835
 
755
836
  <div id="to-niku-method" class="method-detail ">
756
- <a name="M000910"></a>
837
+ <a name="method-i-to_niku"></a>
757
838
 
758
839
  <div class="method-heading">
759
840
 
@@ -838,7 +919,7 @@ other Clarity installations.
838
919
 
839
920
 
840
921
  <div id="collect-rojects-method" class="method-detail ">
841
- <a name="M000917"></a>
922
+ <a name="method-i-collectProjects"></a>
842
923
 
843
924
  <div class="method-heading">
844
925
 
@@ -860,66 +941,66 @@ and create a new <a href="Task.html">Task</a> list for each ClarityPID.
860
941
  <div class="method-source-code"
861
942
  id="collect-rojects-source">
862
943
  <pre>
863
- <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 305</span>
864
- 305: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collectProjects</span>
865
- 306: <span class="ruby-comment cmt"># Prepare the task list.</span>
866
- 307: <span class="ruby-identifier">taskList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>)
867
- 308: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortTasks'</span>))
868
- 309: <span class="ruby-identifier">taskList</span> = <span class="ruby-identifier">filterTaskList</span>(<span class="ruby-identifier">taskList</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideTask'</span>),
869
- 310: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupTask'</span>))
870
- 311:
871
- 312:
872
- 313: <span class="ruby-identifier">taskList</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>
873
- 314: <span class="ruby-comment cmt"># We only care about tasks that are leaf tasks and have resource</span>
874
- 315: <span class="ruby-comment cmt"># allocations.</span>
875
- 316: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">leaf?</span> <span class="ruby-operator">||</span>
876
- 317: <span class="ruby-identifier">task</span>[<span class="ruby-value str">'assignedresources'</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">empty?</span>
877
- 318:
878
- 319: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">task</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityPID'</span>)
879
- 320: <span class="ruby-comment cmt"># Ignore tasks without a ClarityPID attribute.</span>
880
- 321: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">id</span>.<span class="ruby-identifier">nil?</span>
881
- 322: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">id</span>.<span class="ruby-identifier">empty?</span>
882
- 323: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
883
- 324: <span class="ruby-node">&quot;ClarityPID of task #{task.fullId} may not be empty&quot;</span>
884
- 325: <span class="ruby-keyword kw">end</span>
885
- 326:
886
- 327: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">task</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityPName'</span>)
887
- 328: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span>
888
- 329: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
889
- 330: <span class="ruby-node">&quot;ClarityPName of task #{task.fullId} has not been set!&quot;</span>
890
- 331: <span class="ruby-keyword kw">end</span>
891
- 332: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">empty?</span>
892
- 333: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
893
- 334: <span class="ruby-node">&quot;ClarityPName of task #{task.fullId} may not be empty!&quot;</span>
894
- 335: <span class="ruby-keyword kw">end</span>
895
- 336:
896
- 337: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">project</span> = <span class="ruby-ivar">@projects</span>[<span class="ruby-identifier">id</span>]).<span class="ruby-identifier">nil?</span>
897
- 338: <span class="ruby-comment cmt"># We don't have a record for the Clarity project yet, so we create a</span>
898
- 339: <span class="ruby-comment cmt"># new NikuProject object.</span>
899
- 340: <span class="ruby-identifier">project</span> = <span class="ruby-constant">NikuProject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>)
900
- 341: <span class="ruby-comment cmt"># And store it in the project list hashed by the ClarityPID.</span>
901
- 342: <span class="ruby-ivar">@projects</span>[<span class="ruby-identifier">id</span>] = <span class="ruby-identifier">project</span>
902
- 343: <span class="ruby-keyword kw">else</span>
903
- 344: <span class="ruby-comment cmt"># Due to a design flaw in the Niku file format, Clarity projects are</span>
904
- 345: <span class="ruby-comment cmt"># identified by a name and an ID. We have to check that those pairs</span>
905
- 346: <span class="ruby-comment cmt"># are always the same.</span>
906
- 347: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">fTask</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">first</span>).<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityPName'</span>) <span class="ruby-operator">!=</span> <span class="ruby-identifier">name</span>
907
- 348: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
908
- 349: <span class="ruby-node">&quot;Task #{task.fullId} and task #{fTask.fullId} &quot;</span> <span class="ruby-operator">+</span>
909
- 350: <span class="ruby-node">&quot;have same ClarityPID (#{id}) but different ClarityPName &quot;</span> <span class="ruby-operator">+</span>
910
- 351: <span class="ruby-node">&quot;(#{name}/#{fTask.get('ClarityPName')})&quot;</span>
911
- 352: <span class="ruby-keyword kw">end</span>
912
- 353: <span class="ruby-keyword kw">end</span>
913
- 354: <span class="ruby-comment cmt"># Append the Task to the task list of the Clarity project.</span>
914
- 355: <span class="ruby-identifier">project</span>.<span class="ruby-identifier">tasks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">task</span>
915
- 356: <span class="ruby-keyword kw">end</span>
916
- 357:
917
- 358: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">empty?</span>
918
- 359: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
919
- 360: <span class="ruby-value str">'No tasks with the custom attributes ClarityPID and ClarityPName '</span> <span class="ruby-operator">+</span>
920
- 361: <span class="ruby-value str">'were found!'</span>
921
- 362: <span class="ruby-keyword kw">end</span>
922
- 363: <span class="ruby-keyword kw">end</span></pre>
944
+ <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 335</span>
945
+ 335: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collectProjects</span>
946
+ 336: <span class="ruby-comment cmt"># Prepare the task list.</span>
947
+ 337: <span class="ruby-identifier">taskList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>)
948
+ 338: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortTasks'</span>))
949
+ 339: <span class="ruby-identifier">taskList</span> = <span class="ruby-identifier">filterTaskList</span>(<span class="ruby-identifier">taskList</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideTask'</span>),
950
+ 340: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupTask'</span>), <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'openNodes'</span>))
951
+ 341:
952
+ 342:
953
+ 343: <span class="ruby-identifier">taskList</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>
954
+ 344: <span class="ruby-comment cmt"># We only care about tasks that are leaf tasks and have resource</span>
955
+ 345: <span class="ruby-comment cmt"># allocations.</span>
956
+ 346: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">leaf?</span> <span class="ruby-operator">||</span>
957
+ 347: <span class="ruby-identifier">task</span>[<span class="ruby-value str">'assignedresources'</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">empty?</span>
958
+ 348:
959
+ 349: <span class="ruby-identifier">id</span> = <span class="ruby-identifier">task</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityPID'</span>)
960
+ 350: <span class="ruby-comment cmt"># Ignore tasks without a ClarityPID attribute.</span>
961
+ 351: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">id</span>.<span class="ruby-identifier">nil?</span>
962
+ 352: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">id</span>.<span class="ruby-identifier">empty?</span>
963
+ 353: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
964
+ 354: <span class="ruby-node">&quot;ClarityPID of task #{task.fullId} may not be empty&quot;</span>
965
+ 355: <span class="ruby-keyword kw">end</span>
966
+ 356:
967
+ 357: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">task</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityPName'</span>)
968
+ 358: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span>
969
+ 359: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
970
+ 360: <span class="ruby-node">&quot;ClarityPName of task #{task.fullId} has not been set!&quot;</span>
971
+ 361: <span class="ruby-keyword kw">end</span>
972
+ 362: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">empty?</span>
973
+ 363: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
974
+ 364: <span class="ruby-node">&quot;ClarityPName of task #{task.fullId} may not be empty!&quot;</span>
975
+ 365: <span class="ruby-keyword kw">end</span>
976
+ 366:
977
+ 367: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">project</span> = <span class="ruby-ivar">@projects</span>[<span class="ruby-identifier">id</span>]).<span class="ruby-identifier">nil?</span>
978
+ 368: <span class="ruby-comment cmt"># We don't have a record for the Clarity project yet, so we create a</span>
979
+ 369: <span class="ruby-comment cmt"># new NikuProject object.</span>
980
+ 370: <span class="ruby-identifier">project</span> = <span class="ruby-constant">NikuProject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>)
981
+ 371: <span class="ruby-comment cmt"># And store it in the project list hashed by the ClarityPID.</span>
982
+ 372: <span class="ruby-ivar">@projects</span>[<span class="ruby-identifier">id</span>] = <span class="ruby-identifier">project</span>
983
+ 373: <span class="ruby-keyword kw">else</span>
984
+ 374: <span class="ruby-comment cmt"># Due to a design flaw in the Niku file format, Clarity projects are</span>
985
+ 375: <span class="ruby-comment cmt"># identified by a name and an ID. We have to check that those pairs</span>
986
+ 376: <span class="ruby-comment cmt"># are always the same.</span>
987
+ 377: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">fTask</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">first</span>).<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityPName'</span>) <span class="ruby-operator">!=</span> <span class="ruby-identifier">name</span>
988
+ 378: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
989
+ 379: <span class="ruby-node">&quot;Task #{task.fullId} and task #{fTask.fullId} &quot;</span> <span class="ruby-operator">+</span>
990
+ 380: <span class="ruby-node">&quot;have same ClarityPID (#{id}) but different ClarityPName &quot;</span> <span class="ruby-operator">+</span>
991
+ 381: <span class="ruby-node">&quot;(#{name}/#{fTask.get('ClarityPName')})&quot;</span>
992
+ 382: <span class="ruby-keyword kw">end</span>
993
+ 383: <span class="ruby-keyword kw">end</span>
994
+ 384: <span class="ruby-comment cmt"># Append the Task to the task list of the Clarity project.</span>
995
+ 385: <span class="ruby-identifier">project</span>.<span class="ruby-identifier">tasks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">task</span>
996
+ 386: <span class="ruby-keyword kw">end</span>
997
+ 387:
998
+ 388: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">empty?</span>
999
+ 389: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
1000
+ 390: <span class="ruby-value str">'No tasks with the custom attributes ClarityPID and ClarityPName '</span> <span class="ruby-operator">+</span>
1001
+ 391: <span class="ruby-value str">'were found!'</span>
1002
+ 392: <span class="ruby-keyword kw">end</span>
1003
+ 393: <span class="ruby-keyword kw">end</span></pre>
923
1004
  </div>
924
1005
 
925
1006
  </div>
@@ -931,7 +1012,7 @@ and create a new <a href="Task.html">Task</a> list for each ClarityPID.
931
1012
 
932
1013
 
933
1014
  <div id="compute-roject-llocations-method" class="method-detail ">
934
- <a name="M000918"></a>
1015
+ <a name="method-i-computeProjectAllocations"></a>
935
1016
 
936
1017
  <div class="method-heading">
937
1018
 
@@ -954,50 +1035,50 @@ ClarityPID.
954
1035
  <div class="method-source-code"
955
1036
  id="compute-roject-llocations-source">
956
1037
  <pre>
957
- <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 367</span>
958
- 367: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">computeProjectAllocations</span>
959
- 368: <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">project</span><span class="ruby-operator">|</span>
960
- 369: <span class="ruby-identifier">project</span>.<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>
961
- 370: <span class="ruby-identifier">task</span>[<span class="ruby-value str">'assignedresources'</span>, <span class="ruby-ivar">@scenarioIdx</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>
962
- 371: <span class="ruby-comment cmt"># Only consider resources that are in the filtered resource list.</span>
963
- 372: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">resource</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityRID'</span>)]
964
- 373:
965
- 374: <span class="ruby-comment cmt"># Prepare a template for the Query we will use to get all the data.</span>
966
- 375: <span class="ruby-identifier">queryAttrs</span> = { <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
967
- 376: <span class="ruby-value str">'property'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">task</span>,
968
- 377: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">resource</span>,
969
- 378: <span class="ruby-value str">'scenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@scenarioIdx</span>,
970
- 379: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'loadUnit'</span>),
971
- 380: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'numberFormat'</span>),
972
- 381: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'timeFormat'</span>),
973
- 382: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'currencyFormat'</span>),
974
- 383: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>),
975
- 384: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'costAccount'</span>),
976
- 385: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'revenueAccount'</span>) }
977
- 386:
978
- 387: <span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
979
- 388: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">attributeId</span> = <span class="ruby-value str">'effort'</span>
980
- 389: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">process</span>
981
- 390: <span class="ruby-identifier">work</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_num</span>
982
- 391:
983
- 392: <span class="ruby-comment cmt"># If the resource was not actually working on this task during the</span>
984
- 393: <span class="ruby-comment cmt"># report period, we don't create a record for it.</span>
985
- 394: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">work</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0.0</span>
986
- 395:
987
- 396: <span class="ruby-identifier">resourceId</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityRID'</span>)
988
- 397: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">resourceRecord</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">resources</span>[<span class="ruby-identifier">resourceId</span>]).<span class="ruby-identifier">nil?</span>
989
- 398: <span class="ruby-comment cmt"># If we don't already have a NikuResource object for the</span>
990
- 399: <span class="ruby-comment cmt"># Resource, we create a new one.</span>
991
- 400: <span class="ruby-identifier">resourceRecord</span> = <span class="ruby-constant">NikuResource</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">resourceId</span>)
992
- 401: <span class="ruby-comment cmt"># Store the new NikuResource in the resource list of the</span>
993
- 402: <span class="ruby-comment cmt"># NikuProject record.</span>
994
- 403: <span class="ruby-identifier">project</span>.<span class="ruby-identifier">resources</span>[<span class="ruby-identifier">resourceId</span>] = <span class="ruby-identifier">resourceRecord</span>
995
- 404: <span class="ruby-keyword kw">end</span>
996
- 405: <span class="ruby-identifier">resourceRecord</span>.<span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_num</span>
997
- 406: <span class="ruby-keyword kw">end</span>
998
- 407: <span class="ruby-keyword kw">end</span>
999
- 408: <span class="ruby-keyword kw">end</span>
1000
- 409: <span class="ruby-keyword kw">end</span></pre>
1038
+ <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 397</span>
1039
+ 397: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">computeProjectAllocations</span>
1040
+ 398: <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">project</span><span class="ruby-operator">|</span>
1041
+ 399: <span class="ruby-identifier">project</span>.<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>
1042
+ 400: <span class="ruby-identifier">task</span>[<span class="ruby-value str">'assignedresources'</span>, <span class="ruby-ivar">@scenarioIdx</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>
1043
+ 401: <span class="ruby-comment cmt"># Only consider resources that are in the filtered resource list.</span>
1044
+ 402: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">resource</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityRID'</span>)]
1045
+ 403:
1046
+ 404: <span class="ruby-comment cmt"># Prepare a template for the Query we will use to get all the data.</span>
1047
+ 405: <span class="ruby-identifier">queryAttrs</span> = { <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
1048
+ 406: <span class="ruby-value str">'property'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">task</span>,
1049
+ 407: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">resource</span>,
1050
+ 408: <span class="ruby-value str">'scenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@scenarioIdx</span>,
1051
+ 409: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'loadUnit'</span>),
1052
+ 410: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'numberFormat'</span>),
1053
+ 411: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'timeFormat'</span>),
1054
+ 412: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'currencyFormat'</span>),
1055
+ 413: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>),
1056
+ 414: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'costAccount'</span>),
1057
+ 415: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'revenueAccount'</span>) }
1058
+ 416:
1059
+ 417: <span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
1060
+ 418: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">attributeId</span> = <span class="ruby-value str">'effort'</span>
1061
+ 419: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">process</span>
1062
+ 420: <span class="ruby-identifier">work</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_num</span>
1063
+ 421:
1064
+ 422: <span class="ruby-comment cmt"># If the resource was not actually working on this task during the</span>
1065
+ 423: <span class="ruby-comment cmt"># report period, we don't create a record for it.</span>
1066
+ 424: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">work</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0.0</span>
1067
+ 425:
1068
+ 426: <span class="ruby-identifier">resourceId</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityRID'</span>)
1069
+ 427: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">resourceRecord</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">resources</span>[<span class="ruby-identifier">resourceId</span>]).<span class="ruby-identifier">nil?</span>
1070
+ 428: <span class="ruby-comment cmt"># If we don't already have a NikuResource object for the</span>
1071
+ 429: <span class="ruby-comment cmt"># Resource, we create a new one.</span>
1072
+ 430: <span class="ruby-identifier">resourceRecord</span> = <span class="ruby-constant">NikuResource</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">resourceId</span>)
1073
+ 431: <span class="ruby-comment cmt"># Store the new NikuResource in the resource list of the</span>
1074
+ 432: <span class="ruby-comment cmt"># NikuProject record.</span>
1075
+ 433: <span class="ruby-identifier">project</span>.<span class="ruby-identifier">resources</span>[<span class="ruby-identifier">resourceId</span>] = <span class="ruby-identifier">resourceRecord</span>
1076
+ 434: <span class="ruby-keyword kw">end</span>
1077
+ 435: <span class="ruby-identifier">resourceRecord</span>.<span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_num</span>
1078
+ 436: <span class="ruby-keyword kw">end</span>
1079
+ 437: <span class="ruby-keyword kw">end</span>
1080
+ 438: <span class="ruby-keyword kw">end</span>
1081
+ 439: <span class="ruby-keyword kw">end</span></pre>
1001
1082
  </div>
1002
1083
 
1003
1084
  </div>
@@ -1009,7 +1090,7 @@ ClarityPID.
1009
1090
 
1010
1091
 
1011
1092
  <div id="compute-esource-otals-method" class="method-detail ">
1012
- <a name="M000916"></a>
1093
+ <a name="method-i-computeResourceTotals"></a>
1013
1094
 
1014
1095
  <div class="method-heading">
1015
1096
 
@@ -1033,62 +1114,63 @@ the maximum possible allocation.
1033
1114
  <div class="method-source-code"
1034
1115
  id="compute-esource-otals-source">
1035
1116
  <pre>
1036
- <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 247</span>
1037
- 247: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">computeResourceTotals</span>
1038
- 248: <span class="ruby-comment cmt"># Prepare the resource list.</span>
1039
- 249: <span class="ruby-identifier">resourceList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resources</span>)
1040
- 250: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortResources'</span>))
1041
- 251: <span class="ruby-identifier">resourceList</span> = <span class="ruby-identifier">filterResourceList</span>(<span class="ruby-identifier">resourceList</span>, <span class="ruby-keyword kw">nil</span>,
1042
- 252: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideResource'</span>),
1043
- 253: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupResource'</span>))
1044
- 254:
1045
- 255: <span class="ruby-identifier">resourceList</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>
1046
- 256: <span class="ruby-comment cmt"># We only care about leaf resources that have the custom attribute</span>
1047
- 257: <span class="ruby-comment cmt"># 'ClarityRID' set.</span>
1048
- 258: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">resource</span>.<span class="ruby-identifier">leaf?</span> <span class="ruby-operator">||</span>
1049
- 259: (<span class="ruby-identifier">resourceId</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityRID'</span>)).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span>
1050
- 260: <span class="ruby-identifier">resourceId</span>.<span class="ruby-identifier">empty?</span>
1051
- 261:
1052
- 262: <span class="ruby-comment cmt"># Prepare a template for the Query we will use to get all the data.</span>
1053
- 263: <span class="ruby-identifier">queryAttrs</span> = { <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
1054
- 264: <span class="ruby-value str">'property'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">resource</span>,
1055
- 265: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
1056
- 266: <span class="ruby-value str">'scenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@scenarioIdx</span>,
1057
- 267: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'loadUnit'</span>),
1058
- 268: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'numberFormat'</span>),
1059
- 269: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'timeFormat'</span>),
1060
- 270: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'currencyFormat'</span>),
1061
- 271: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>),
1062
- 272: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'costAccount'</span>),
1063
- 273: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'revenueAccount'</span>) }
1064
- 274:
1065
- 275: <span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
1066
- 276:
1067
- 277: <span class="ruby-comment cmt"># First get the allocated effort.</span>
1068
- 278: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">attributeId</span> = <span class="ruby-value str">'effort'</span>
1069
- 279: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">process</span>
1070
- 280: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_num</span>
1071
- 281:
1072
- 282: <span class="ruby-comment cmt"># Then add the still available effort.</span>
1073
- 283: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">attributeId</span> = <span class="ruby-value str">'freework'</span>
1074
- 284: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">process</span>
1075
- 285: <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_num</span>
1076
- 286:
1077
- 287: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0.0</span>
1078
- 288:
1079
- 289: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">resourceId</span>] = <span class="ruby-identifier">resource</span>
1080
- 290:
1081
- 291: <span class="ruby-comment cmt"># This is the maximum possible work of this resource in the report</span>
1082
- 292: <span class="ruby-comment cmt"># period.</span>
1083
- 293: <span class="ruby-ivar">@resourcesTotalEffort</span>[<span class="ruby-identifier">resourceId</span>] = <span class="ruby-identifier">total</span>
1084
- 294: <span class="ruby-keyword kw">end</span>
1085
- 295:
1086
- 296: <span class="ruby-comment cmt"># Make sure that we have at least one Resource with a ClarityRID.</span>
1087
- 297: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@resourcesTotalEffort</span>.<span class="ruby-identifier">empty?</span>
1088
- 298: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
1089
- 299: <span class="ruby-value str">'No resources with the custom attribute ClarityRID were found!'</span>
1090
- 300: <span class="ruby-keyword kw">end</span>
1091
- 301: <span class="ruby-keyword kw">end</span></pre>
1117
+ <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 276</span>
1118
+ 276: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">computeResourceTotals</span>
1119
+ 277: <span class="ruby-comment cmt"># Prepare the resource list.</span>
1120
+ 278: <span class="ruby-identifier">resourceList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resources</span>)
1121
+ 279: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortResources'</span>))
1122
+ 280: <span class="ruby-identifier">resourceList</span> = <span class="ruby-identifier">filterResourceList</span>(<span class="ruby-identifier">resourceList</span>, <span class="ruby-keyword kw">nil</span>,
1123
+ 281: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideResource'</span>),
1124
+ 282: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupResource'</span>),
1125
+ 283: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'openNodes'</span>))
1126
+ 284:
1127
+ 285: <span class="ruby-identifier">resourceList</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>
1128
+ 286: <span class="ruby-comment cmt"># We only care about leaf resources that have the custom attribute</span>
1129
+ 287: <span class="ruby-comment cmt"># 'ClarityRID' set.</span>
1130
+ 288: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">resource</span>.<span class="ruby-identifier">leaf?</span> <span class="ruby-operator">||</span>
1131
+ 289: (<span class="ruby-identifier">resourceId</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'ClarityRID'</span>)).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span>
1132
+ 290: <span class="ruby-identifier">resourceId</span>.<span class="ruby-identifier">empty?</span>
1133
+ 291:
1134
+ 292: <span class="ruby-comment cmt"># Prepare a template for the Query we will use to get all the data.</span>
1135
+ 293: <span class="ruby-identifier">queryAttrs</span> = { <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
1136
+ 294: <span class="ruby-value str">'property'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">resource</span>,
1137
+ 295: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
1138
+ 296: <span class="ruby-value str">'scenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@scenarioIdx</span>,
1139
+ 297: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'loadUnit'</span>),
1140
+ 298: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'numberFormat'</span>),
1141
+ 299: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'timeFormat'</span>),
1142
+ 300: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'currencyFormat'</span>),
1143
+ 301: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>),
1144
+ 302: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'costAccount'</span>),
1145
+ 303: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'revenueAccount'</span>) }
1146
+ 304:
1147
+ 305: <span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
1148
+ 306:
1149
+ 307: <span class="ruby-comment cmt"># First get the allocated effort.</span>
1150
+ 308: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">attributeId</span> = <span class="ruby-value str">'effort'</span>
1151
+ 309: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">process</span>
1152
+ 310: <span class="ruby-identifier">total</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_num</span>
1153
+ 311:
1154
+ 312: <span class="ruby-comment cmt"># Then add the still available effort.</span>
1155
+ 313: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">attributeId</span> = <span class="ruby-value str">'freework'</span>
1156
+ 314: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">process</span>
1157
+ 315: <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_num</span>
1158
+ 316:
1159
+ 317: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0.0</span>
1160
+ 318:
1161
+ 319: <span class="ruby-ivar">@resources</span>[<span class="ruby-identifier">resourceId</span>] = <span class="ruby-identifier">resource</span>
1162
+ 320:
1163
+ 321: <span class="ruby-comment cmt"># This is the maximum possible work of this resource in the report</span>
1164
+ 322: <span class="ruby-comment cmt"># period.</span>
1165
+ 323: <span class="ruby-ivar">@resourcesTotalEffort</span>[<span class="ruby-identifier">resourceId</span>] = <span class="ruby-identifier">total</span>
1166
+ 324: <span class="ruby-keyword kw">end</span>
1167
+ 325:
1168
+ 326: <span class="ruby-comment cmt"># Make sure that we have at least one Resource with a ClarityRID.</span>
1169
+ 327: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@resourcesTotalEffort</span>.<span class="ruby-identifier">empty?</span>
1170
+ 328: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
1171
+ 329: <span class="ruby-value str">'No resources with the custom attribute ClarityRID were found!'</span>
1172
+ 330: <span class="ruby-keyword kw">end</span>
1173
+ 331: <span class="ruby-keyword kw">end</span></pre>
1092
1174
  </div>
1093
1175
 
1094
1176
  </div>
@@ -1100,7 +1182,7 @@ the maximum possible allocation.
1100
1182
 
1101
1183
 
1102
1184
  <div id="html-ab-ell-method" class="method-detail ">
1103
- <a name="M000915"></a>
1185
+ <a name="method-i-htmlTabCell"></a>
1104
1186
 
1105
1187
  <div class="method-heading">
1106
1188
 
@@ -1119,14 +1201,14 @@ the maximum possible allocation.
1119
1201
  <div class="method-source-code"
1120
1202
  id="html-ab-ell-source">
1121
1203
  <pre>
1122
- <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 234</span>
1123
- 234: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">htmlTabCell</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">headerCell</span> = <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">align</span> = <span class="ruby-value str">'right'</span>)
1124
- 235: <span class="ruby-identifier">td</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'td'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">headerCell</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'tabhead'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'taskcell1'</span>)
1125
- 236: <span class="ruby-identifier">td</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">text</span>, <span class="ruby-value str">'div'</span>,
1126
- 237: <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">headerCell</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'headercelldiv'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'celldiv'</span>,
1127
- 238: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;text-align:#{align}&quot;</span>)
1128
- 239: <span class="ruby-identifier">td</span>
1129
- 240: <span class="ruby-keyword kw">end</span></pre>
1204
+ <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 263</span>
1205
+ 263: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">htmlTabCell</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">headerCell</span> = <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">align</span> = <span class="ruby-value str">'right'</span>)
1206
+ 264: <span class="ruby-identifier">td</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'td'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">headerCell</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'tabhead'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'taskcell1'</span>)
1207
+ 265: <span class="ruby-identifier">td</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">text</span>, <span class="ruby-value str">'div'</span>,
1208
+ 266: <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">headerCell</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'headercelldiv'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'celldiv'</span>,
1209
+ 267: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;text-align:#{align}&quot;</span>)
1210
+ 268: <span class="ruby-identifier">td</span>
1211
+ 269: <span class="ruby-keyword kw">end</span></pre>
1130
1212
  </div>
1131
1213
 
1132
1214
  </div>
@@ -1138,7 +1220,7 @@ the maximum possible allocation.
1138
1220
 
1139
1221
 
1140
1222
  <div id="project-otal-method" class="method-detail ">
1141
- <a name="M000913"></a>
1223
+ <a name="method-i-projectTotal"></a>
1142
1224
 
1143
1225
  <div class="method-heading">
1144
1226
 
@@ -1157,14 +1239,14 @@ the maximum possible allocation.
1157
1239
  <div class="method-source-code"
1158
1240
  id="project-otal-source">
1159
1241
  <pre>
1160
- <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 216</span>
1161
- 216: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">projectTotal</span>(<span class="ruby-identifier">projectId</span>)
1162
- 217: <span class="ruby-identifier">total</span> = <span class="ruby-value">0.0</span>
1163
- 218: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resourceId</span><span class="ruby-operator">|</span>
1164
- 219: <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sum</span>(<span class="ruby-identifier">projectId</span>, <span class="ruby-identifier">resourceId</span>)
1165
- 220: <span class="ruby-keyword kw">end</span>
1166
- 221: <span class="ruby-identifier">total</span>
1167
- 222: <span class="ruby-keyword kw">end</span></pre>
1242
+ <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 245</span>
1243
+ 245: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">projectTotal</span>(<span class="ruby-identifier">projectId</span>)
1244
+ 246: <span class="ruby-identifier">total</span> = <span class="ruby-value">0.0</span>
1245
+ 247: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resourceId</span><span class="ruby-operator">|</span>
1246
+ 248: <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sum</span>(<span class="ruby-identifier">projectId</span>, <span class="ruby-identifier">resourceId</span>)
1247
+ 249: <span class="ruby-keyword kw">end</span>
1248
+ 250: <span class="ruby-identifier">total</span>
1249
+ 251: <span class="ruby-keyword kw">end</span></pre>
1168
1250
  </div>
1169
1251
 
1170
1252
  </div>
@@ -1176,7 +1258,7 @@ the maximum possible allocation.
1176
1258
 
1177
1259
 
1178
1260
  <div id="resource-otal-method" class="method-detail ">
1179
- <a name="M000912"></a>
1261
+ <a name="method-i-resourceTotal"></a>
1180
1262
 
1181
1263
  <div class="method-heading">
1182
1264
 
@@ -1195,14 +1277,14 @@ the maximum possible allocation.
1195
1277
  <div class="method-source-code"
1196
1278
  id="resource-otal-source">
1197
1279
  <pre>
1198
- <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 208</span>
1199
- 208: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resourceTotal</span>(<span class="ruby-identifier">resourceId</span>)
1200
- 209: <span class="ruby-identifier">total</span> = <span class="ruby-value">0.0</span>
1201
- 210: <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">projectId</span><span class="ruby-operator">|</span>
1202
- 211: <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sum</span>(<span class="ruby-identifier">projectId</span>, <span class="ruby-identifier">resourceId</span>)
1203
- 212: <span class="ruby-keyword kw">end</span>
1204
- 213: <span class="ruby-identifier">total</span>
1205
- 214: <span class="ruby-keyword kw">end</span></pre>
1280
+ <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 237</span>
1281
+ 237: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resourceTotal</span>(<span class="ruby-identifier">resourceId</span>)
1282
+ 238: <span class="ruby-identifier">total</span> = <span class="ruby-value">0.0</span>
1283
+ 239: <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">projectId</span><span class="ruby-operator">|</span>
1284
+ 240: <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sum</span>(<span class="ruby-identifier">projectId</span>, <span class="ruby-identifier">resourceId</span>)
1285
+ 241: <span class="ruby-keyword kw">end</span>
1286
+ 242: <span class="ruby-identifier">total</span>
1287
+ 243: <span class="ruby-keyword kw">end</span></pre>
1206
1288
  </div>
1207
1289
 
1208
1290
  </div>
@@ -1214,7 +1296,7 @@ the maximum possible allocation.
1214
1296
 
1215
1297
 
1216
1298
  <div id="sum-method" class="method-detail ">
1217
- <a name="M000911"></a>
1299
+ <a name="method-i-sum"></a>
1218
1300
 
1219
1301
  <div class="method-heading">
1220
1302
 
@@ -1233,16 +1315,16 @@ the maximum possible allocation.
1233
1315
  <div class="method-source-code"
1234
1316
  id="sum-source">
1235
1317
  <pre>
1236
- <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 198</span>
1237
- 198: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sum</span>(<span class="ruby-identifier">projectId</span>, <span class="ruby-identifier">resourceId</span>)
1238
- 199: <span class="ruby-identifier">project</span> = <span class="ruby-ivar">@projects</span>[<span class="ruby-identifier">projectId</span>]
1239
- 200: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0.0</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">project</span>
1240
- 201:
1241
- 202: <span class="ruby-identifier">resource</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">resources</span>[<span class="ruby-identifier">resourceId</span>]
1242
- 203: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0.0</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resource</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@resourcesTotalEffort</span>[<span class="ruby-identifier">resourceId</span>]
1243
- 204:
1244
- 205: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">sum</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@resourcesTotalEffort</span>[<span class="ruby-identifier">resourceId</span>]
1245
- 206: <span class="ruby-keyword kw">end</span></pre>
1318
+ <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 227</span>
1319
+ 227: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sum</span>(<span class="ruby-identifier">projectId</span>, <span class="ruby-identifier">resourceId</span>)
1320
+ 228: <span class="ruby-identifier">project</span> = <span class="ruby-ivar">@projects</span>[<span class="ruby-identifier">projectId</span>]
1321
+ 229: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0.0</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">project</span>
1322
+ 230:
1323
+ 231: <span class="ruby-identifier">resource</span> = <span class="ruby-identifier">project</span>.<span class="ruby-identifier">resources</span>[<span class="ruby-identifier">resourceId</span>]
1324
+ 232: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0.0</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resource</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@resourcesTotalEffort</span>[<span class="ruby-identifier">resourceId</span>]
1325
+ 233:
1326
+ 234: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">sum</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@resourcesTotalEffort</span>[<span class="ruby-identifier">resourceId</span>]
1327
+ 235: <span class="ruby-keyword kw">end</span></pre>
1246
1328
  </div>
1247
1329
 
1248
1330
  </div>
@@ -1254,7 +1336,7 @@ the maximum possible allocation.
1254
1336
 
1255
1337
 
1256
1338
  <div id="total-method" class="method-detail ">
1257
- <a name="M000914"></a>
1339
+ <a name="method-i-total"></a>
1258
1340
 
1259
1341
  <div class="method-heading">
1260
1342
 
@@ -1273,16 +1355,16 @@ the maximum possible allocation.
1273
1355
  <div class="method-source-code"
1274
1356
  id="total-source">
1275
1357
  <pre>
1276
- <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 224</span>
1277
- 224: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">total</span>
1278
- 225: <span class="ruby-identifier">total</span> = <span class="ruby-value">0.0</span>
1279
- 226: <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">projectId</span><span class="ruby-operator">|</span>
1280
- 227: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resourceId</span><span class="ruby-operator">|</span>
1281
- 228: <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sum</span>(<span class="ruby-identifier">projectId</span>, <span class="ruby-identifier">resourceId</span>)
1282
- 229: <span class="ruby-keyword kw">end</span>
1283
- 230: <span class="ruby-keyword kw">end</span>
1284
- 231: <span class="ruby-identifier">total</span>
1285
- 232: <span class="ruby-keyword kw">end</span></pre>
1358
+ <span class="ruby-comment cmt"># File lib/reports/NikuReport.rb, line 253</span>
1359
+ 253: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">total</span>
1360
+ 254: <span class="ruby-identifier">total</span> = <span class="ruby-value">0.0</span>
1361
+ 255: <span class="ruby-ivar">@projects</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">projectId</span><span class="ruby-operator">|</span>
1362
+ 256: <span class="ruby-ivar">@resources</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resourceId</span><span class="ruby-operator">|</span>
1363
+ 257: <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sum</span>(<span class="ruby-identifier">projectId</span>, <span class="ruby-identifier">resourceId</span>)
1364
+ 258: <span class="ruby-keyword kw">end</span>
1365
+ 259: <span class="ruby-keyword kw">end</span>
1366
+ 260: <span class="ruby-identifier">total</span>
1367
+ 261: <span class="ruby-keyword kw">end</span></pre>
1286
1368
  </div>
1287
1369
 
1288
1370
  </div>