taskjuggler 0.0.3 → 0.0.4

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 (495) hide show
  1. data/benchmarks/UTF-8-Strings.rb +58 -0
  2. data/data/css/tjmanual.css +52 -0
  3. data/data/css/tjreport.css +195 -0
  4. data/data/icons/details.png +0 -0
  5. data/data/icons/flag-green.png +0 -0
  6. data/data/icons/flag-red.png +0 -0
  7. data/data/icons/flag-yellow.png +0 -0
  8. data/data/icons/resource.png +0 -0
  9. data/data/icons/resourcegroup.png +0 -0
  10. data/data/icons/task.png +0 -0
  11. data/data/icons/taskgroup.png +0 -0
  12. data/data/icons/trend-down.png +0 -0
  13. data/data/icons/trend-flat.png +0 -0
  14. data/data/icons/trend-up.png +0 -0
  15. data/data/scripts/wz_tooltip.js +1301 -0
  16. data/doc/classes/AppConfig.html +298 -230
  17. data/doc/classes/Arguments.html +8 -8
  18. data/doc/classes/Object.html +7 -7
  19. data/doc/classes/String.html +89 -89
  20. data/doc/classes/TaskJuggler.html +396 -264
  21. data/doc/classes/TaskJuggler/Account.html +18 -18
  22. data/doc/classes/TaskJuggler/AccountAttribute.html +26 -26
  23. data/doc/classes/TaskJuggler/AccountScenario.html +12 -12
  24. data/doc/classes/TaskJuggler/Allocation.html +30 -30
  25. data/doc/classes/TaskJuggler/AllocationAttribute.html +26 -26
  26. data/doc/classes/TaskJuggler/AttributeBase.html +227 -115
  27. data/doc/classes/TaskJuggler/AttributeDefinition.html +6 -6
  28. data/doc/classes/TaskJuggler/BatchProcessor.html +117 -83
  29. data/doc/classes/TaskJuggler/Booking.html +18 -18
  30. data/doc/classes/TaskJuggler/BookingListAttribute.html +26 -26
  31. data/doc/classes/TaskJuggler/BooleanAttribute.html +26 -26
  32. data/doc/classes/TaskJuggler/CSVFile.html +24 -24
  33. data/doc/classes/TaskJuggler/CellSettingPattern.html +201 -0
  34. data/doc/classes/TaskJuggler/CellSettingPatternList.html +253 -0
  35. data/doc/classes/TaskJuggler/Charge.html +18 -18
  36. data/doc/classes/TaskJuggler/ChargeListAttribute.html +20 -20
  37. data/doc/classes/TaskJuggler/ChargeSet.html +37 -37
  38. data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +26 -26
  39. data/doc/classes/TaskJuggler/ColumnListAttribute.html +20 -20
  40. data/doc/classes/TaskJuggler/ColumnTable.html +40 -40
  41. data/doc/classes/TaskJuggler/DateAttribute.html +54 -15
  42. data/doc/classes/TaskJuggler/DefinitionListAttribute.html +10 -10
  43. data/doc/classes/TaskJuggler/DependencyListAttribute.html +47 -47
  44. data/doc/classes/TaskJuggler/DurationAttribute.html +30 -30
  45. data/doc/classes/TaskJuggler/FixnumAttribute.html +20 -20
  46. data/doc/classes/TaskJuggler/FlagListAttribute.html +43 -43
  47. data/doc/classes/TaskJuggler/FloatAttribute.html +30 -30
  48. data/doc/classes/TaskJuggler/FormatListAttribute.html +21 -21
  49. data/doc/classes/TaskJuggler/GanttChart.html +48 -48
  50. data/doc/classes/TaskJuggler/GanttContainer.html +42 -42
  51. data/doc/classes/TaskJuggler/GanttHeader.html +12 -12
  52. data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +12 -12
  53. data/doc/classes/TaskJuggler/GanttLine.html +24 -24
  54. data/doc/classes/TaskJuggler/GanttLoadStack.html +18 -18
  55. data/doc/classes/TaskJuggler/GanttMilestone.html +42 -42
  56. data/doc/classes/TaskJuggler/GanttRouter.html +24 -24
  57. data/doc/classes/TaskJuggler/GanttTaskBar.html +42 -42
  58. data/doc/classes/TaskJuggler/HTMLDocument.html +13 -13
  59. data/doc/classes/TaskJuggler/HTMLGraphics.html +12 -12
  60. data/doc/classes/TaskJuggler/Interval.html +57 -57
  61. data/doc/classes/TaskJuggler/IntervalListAttribute.html +47 -47
  62. data/doc/classes/TaskJuggler/JobInfo.html +68 -12
  63. data/doc/classes/TaskJuggler/Journal.html +266 -20
  64. data/doc/classes/TaskJuggler/JournalEntry.html +79 -23
  65. data/doc/classes/TaskJuggler/JournalEntryList.html +454 -0
  66. data/doc/classes/TaskJuggler/KeywordArray.html +10 -10
  67. data/doc/classes/TaskJuggler/KeywordDocumentation.html +171 -170
  68. data/doc/classes/TaskJuggler/Limits.html +36 -36
  69. data/doc/classes/TaskJuggler/Limits/Limit.html +30 -30
  70. data/doc/classes/TaskJuggler/LimitsAttribute.html +40 -40
  71. data/doc/classes/TaskJuggler/ListAttributeBase.html +20 -20
  72. data/doc/classes/TaskJuggler/Log.html +145 -107
  73. data/doc/classes/TaskJuggler/LogicalAttribute.html +65 -36
  74. data/doc/classes/TaskJuggler/LogicalExpression.html +61 -24
  75. data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +20 -20
  76. data/doc/classes/TaskJuggler/LogicalFlag.html +31 -51
  77. data/doc/classes/TaskJuggler/LogicalFunction.html +64 -53
  78. data/doc/classes/TaskJuggler/LogicalOperation.html +103 -55
  79. data/doc/classes/TaskJuggler/Macro.html +6 -6
  80. data/doc/classes/TaskJuggler/MacroParser.html +36 -36
  81. data/doc/classes/TaskJuggler/MacroTable.html +37 -37
  82. data/doc/classes/TaskJuggler/Message.html +12 -12
  83. data/doc/classes/TaskJuggler/MessageHandler.html +32 -20
  84. data/doc/classes/TaskJuggler/Navigator.html +110 -46
  85. data/doc/classes/TaskJuggler/NavigatorElement.html +449 -0
  86. data/doc/classes/TaskJuggler/OnShiftCache.html +24 -24
  87. data/doc/classes/TaskJuggler/Project.html +1158 -893
  88. data/doc/classes/TaskJuggler/ProjectFileParser.html +94 -91
  89. data/doc/classes/TaskJuggler/PropertyAttribute.html +20 -20
  90. data/doc/classes/TaskJuggler/PropertyList.html +225 -155
  91. data/doc/classes/TaskJuggler/PropertySet.html +375 -332
  92. data/doc/classes/TaskJuggler/PropertyTreeNode.html +750 -510
  93. data/doc/classes/TaskJuggler/Query.html +404 -139
  94. data/doc/classes/TaskJuggler/{RTPNavigator.html → RTFNavigator.html} +57 -56
  95. data/doc/classes/TaskJuggler/RTFQuery.html +343 -0
  96. data/doc/classes/TaskJuggler/{RTPReport.html → RTFReport.html} +70 -67
  97. data/doc/classes/TaskJuggler/RealFormat.html +18 -18
  98. data/doc/classes/TaskJuggler/RealFormatAttribute.html +10 -10
  99. data/doc/classes/TaskJuggler/ReferenceAttribute.html +107 -40
  100. data/doc/classes/TaskJuggler/RemoteServiceManager.html +335 -0
  101. data/doc/classes/TaskJuggler/Report.html +66 -64
  102. data/doc/classes/TaskJuggler/ReportBase.html +112 -123
  103. data/doc/classes/TaskJuggler/ReportContext.html +43 -38
  104. data/doc/classes/TaskJuggler/ReportServer.html +320 -0
  105. data/doc/classes/TaskJuggler/ReportTable.html +42 -42
  106. data/doc/classes/TaskJuggler/ReportTableCell.html +221 -129
  107. data/doc/classes/TaskJuggler/ReportTableColumn.html +27 -27
  108. data/doc/classes/TaskJuggler/ReportTableLegend.html +24 -24
  109. data/doc/classes/TaskJuggler/ReportTableLine.html +126 -80
  110. data/doc/classes/TaskJuggler/Resource.html +12 -12
  111. data/doc/classes/TaskJuggler/ResourceListAttribute.html +82 -47
  112. data/doc/classes/TaskJuggler/ResourceListRE.html +43 -39
  113. data/doc/classes/TaskJuggler/ResourceScenario.html +413 -321
  114. data/doc/classes/TaskJuggler/RichText.html +64 -248
  115. data/doc/classes/TaskJuggler/RichTextAttribute.html +94 -30
  116. data/doc/classes/TaskJuggler/RichTextDocument.html +87 -85
  117. data/doc/classes/TaskJuggler/RichTextElement.html +456 -363
  118. data/doc/classes/TaskJuggler/RichTextException.html +13 -13
  119. data/doc/classes/TaskJuggler/{RichTextProtocolExample.html → RichTextFunctionExample.html} +64 -63
  120. data/doc/classes/TaskJuggler/{RichTextProtocolHandler.html → RichTextFunctionHandler.html} +42 -36
  121. data/doc/classes/TaskJuggler/RichTextIntermediate.html +563 -0
  122. data/doc/classes/TaskJuggler/RichTextParser.html +54 -51
  123. data/doc/classes/TaskJuggler/RichTextScanner.html +94 -92
  124. data/doc/classes/TaskJuggler/RichTextSnip.html +96 -60
  125. data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +369 -227
  126. data/doc/classes/TaskJuggler/Scenario.html +6 -6
  127. data/doc/classes/TaskJuggler/ScenarioData.html +37 -37
  128. data/doc/classes/TaskJuggler/ScenarioListAttribute.html +31 -31
  129. data/doc/classes/TaskJuggler/Scoreboard.html +66 -66
  130. data/doc/classes/TaskJuggler/Shift.html +18 -18
  131. data/doc/classes/TaskJuggler/ShiftAssignment.html +54 -54
  132. data/doc/classes/TaskJuggler/ShiftAssignments.html +78 -78
  133. data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +40 -40
  134. data/doc/classes/TaskJuggler/ShiftScenario.html +24 -24
  135. data/doc/classes/TaskJuggler/SortListAttribute.html +22 -22
  136. data/doc/classes/TaskJuggler/SourceFileInfo.html +12 -12
  137. data/doc/classes/TaskJuggler/StringAttribute.html +30 -30
  138. data/doc/classes/TaskJuggler/SymbolAttribute.html +20 -20
  139. data/doc/classes/TaskJuggler/SyntaxReference.html +42 -42
  140. data/doc/classes/TaskJuggler/TOCEntry.html +12 -12
  141. data/doc/classes/TaskJuggler/TSResourceRecord.html +197 -0
  142. data/doc/classes/TaskJuggler/TSTaskRecord.html +215 -0
  143. data/doc/classes/TaskJuggler/TableColumnDefinition.html +64 -43
  144. data/doc/classes/TaskJuggler/TableOfContents.html +18 -18
  145. data/doc/classes/TaskJuggler/TableReport.html +447 -468
  146. data/doc/classes/TaskJuggler/Task.html +12 -12
  147. data/doc/classes/TaskJuggler/TaskDependency.html +12 -12
  148. data/doc/classes/TaskJuggler/TaskListAttribute.html +47 -47
  149. data/doc/classes/TaskJuggler/TaskListRE.html +43 -39
  150. data/doc/classes/TaskJuggler/TaskScenario.html +529 -282
  151. data/doc/classes/TaskJuggler/TextParser.html +215 -194
  152. data/doc/classes/TaskJuggler/TextParser/Pattern.html +97 -97
  153. data/doc/classes/TaskJuggler/TextParser/Rule.html +84 -84
  154. data/doc/classes/TaskJuggler/TextParser/StackElement.html +16 -15
  155. data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +12 -12
  156. data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +6 -6
  157. data/doc/classes/TaskJuggler/TextReport.html +77 -74
  158. data/doc/classes/TaskJuggler/TextScanner.html +294 -281
  159. data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +70 -70
  160. data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +59 -60
  161. data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +12 -12
  162. data/doc/classes/TaskJuggler/TimeSheetReport.html +406 -0
  163. data/doc/classes/TaskJuggler/TjException.html +6 -6
  164. data/doc/classes/TaskJuggler/TjTime.html +522 -513
  165. data/doc/classes/TaskJuggler/TjpExample.html +25 -25
  166. data/doc/classes/TaskJuggler/TjpExportRE.html +21 -24
  167. data/doc/classes/TaskJuggler/TjpSyntaxRules.html +6177 -4318
  168. data/doc/classes/TaskJuggler/UserManual.html +212 -213
  169. data/doc/classes/TaskJuggler/WorkingHours.html +49 -49
  170. data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +53 -53
  171. data/doc/classes/TaskJuggler/XMLBlob.html +21 -21
  172. data/doc/classes/TaskJuggler/XMLComment.html +21 -21
  173. data/doc/classes/TaskJuggler/XMLDocument.html +27 -26
  174. data/doc/classes/TaskJuggler/XMLElement.html +86 -50
  175. data/doc/classes/TaskJuggler/XMLNamedText.html +11 -11
  176. data/doc/classes/TaskJuggler/XMLText.html +36 -36
  177. data/doc/files/COPYING.html +1 -1
  178. data/doc/files/README.html +1 -1
  179. data/doc/files/lib/AccountScenario_rb.html +3 -2
  180. data/doc/files/lib/Account_rb.html +3 -2
  181. data/doc/files/lib/Allocation_rb.html +3 -2
  182. data/doc/files/lib/AppConfig_rb.html +5 -2
  183. data/doc/files/lib/AttributeBase_rb.html +3 -2
  184. data/doc/files/lib/AttributeDefinition_rb.html +3 -2
  185. data/doc/files/lib/Attributes_rb.html +3 -2
  186. data/doc/files/lib/BatchProcessor_rb.html +4 -3
  187. data/doc/files/lib/Booking_rb.html +3 -2
  188. data/doc/files/lib/ChargeSet_rb.html +3 -2
  189. data/doc/files/lib/Charge_rb.html +3 -2
  190. data/doc/files/lib/HTMLDocument_rb.html +3 -2
  191. data/doc/files/lib/Interval_rb.html +3 -2
  192. data/doc/files/lib/Journal_rb.html +4 -3
  193. data/doc/files/lib/KeywordArray_rb.html +3 -2
  194. data/doc/files/lib/KeywordDocumentation_rb.html +3 -2
  195. data/doc/files/lib/Limits_rb.html +3 -2
  196. data/doc/files/lib/Log_rb.html +3 -2
  197. data/doc/files/lib/LogicalExpression_rb.html +3 -2
  198. data/doc/files/lib/LogicalFunction_rb.html +3 -2
  199. data/doc/files/lib/LogicalOperation_rb.html +3 -2
  200. data/doc/files/lib/MacroParser_rb.html +3 -2
  201. data/doc/files/lib/MacroTable_rb.html +3 -2
  202. data/doc/files/lib/MessageHandler_rb.html +3 -2
  203. data/doc/files/lib/Message_rb.html +3 -2
  204. data/doc/files/lib/ProjectFileParser_rb.html +7 -4
  205. data/doc/files/lib/Project_rb.html +3 -2
  206. data/doc/files/lib/PropertyList_rb.html +3 -2
  207. data/doc/files/lib/PropertySet_rb.html +3 -2
  208. data/doc/files/lib/PropertyTreeNode_rb.html +3 -2
  209. data/doc/files/lib/Query_rb.html +3 -2
  210. data/doc/files/lib/{RTPNavigator_rb.html → RTFNavigator_rb.html} +8 -7
  211. data/doc/files/lib/RTFQuery_rb.html +121 -0
  212. data/doc/files/lib/{RTPReport_rb.html → RTFReport_rb.html} +8 -7
  213. data/doc/files/lib/RealFormat_rb.html +3 -2
  214. data/doc/files/lib/RemoteServiceManager_rb.html +117 -0
  215. data/doc/files/lib/ReportServer_rb.html +107 -0
  216. data/doc/files/lib/ResourceScenario_rb.html +3 -2
  217. data/doc/files/lib/Resource_rb.html +3 -2
  218. data/doc/files/lib/RichTextDocument_rb.html +4 -3
  219. data/doc/files/lib/RichTextElement_rb.html +3 -2
  220. data/doc/files/lib/{RichTextProtocolExample_rb.html → RichTextFunctionExample_rb.html} +8 -7
  221. data/doc/files/lib/{RichTextProtocolHandler_rb.html → RichTextFunctionHandler_rb.html} +7 -6
  222. data/doc/files/lib/RichTextParser_rb.html +3 -2
  223. data/doc/files/lib/RichTextScanner_rb.html +3 -2
  224. data/doc/files/lib/RichTextSnip_rb.html +3 -2
  225. data/doc/files/lib/RichTextSyntaxRules_rb.html +3 -2
  226. data/doc/files/lib/RichText_rb.html +3 -2
  227. data/doc/files/lib/ScenarioData_rb.html +3 -2
  228. data/doc/files/lib/Scenario_rb.html +3 -2
  229. data/doc/files/lib/Scoreboard_rb.html +3 -2
  230. data/doc/files/lib/ShiftAssignments_rb.html +3 -2
  231. data/doc/files/lib/ShiftScenario_rb.html +3 -2
  232. data/doc/files/lib/Shift_rb.html +3 -2
  233. data/doc/files/lib/SourceFileInfo_rb.html +3 -2
  234. data/doc/files/lib/SyntaxReference_rb.html +3 -2
  235. data/doc/files/lib/TOCEntry_rb.html +3 -2
  236. data/doc/files/lib/TableColumnDefinition_rb.html +3 -2
  237. data/doc/files/lib/TableOfContents_rb.html +3 -2
  238. data/doc/files/lib/TaskDependency_rb.html +3 -2
  239. data/doc/files/lib/TaskJuggler_rb.html +7 -2
  240. data/doc/files/lib/TaskScenario_rb.html +3 -2
  241. data/doc/files/lib/Task_rb.html +3 -2
  242. data/doc/files/lib/TextParser/Pattern_rb.html +4 -3
  243. data/doc/files/lib/TextParser/Rule_rb.html +4 -3
  244. data/doc/files/lib/TextParser/StackElement_rb.html +4 -3
  245. data/doc/files/lib/TextParser/TokenDoc_rb.html +4 -3
  246. data/doc/files/lib/TextParser_rb.html +3 -2
  247. data/doc/files/lib/TextScanner_rb.html +3 -2
  248. data/doc/files/lib/Tj3Config_rb.html +3 -2
  249. data/doc/files/lib/TjException_rb.html +3 -2
  250. data/doc/files/lib/TjTime_rb.html +3 -2
  251. data/doc/files/lib/TjpExample_rb.html +3 -2
  252. data/doc/files/lib/TjpSyntaxRules_rb.html +3 -2
  253. data/doc/files/lib/UTF8String_rb.html +14 -6
  254. data/doc/files/lib/UserManual_rb.html +6 -3
  255. data/doc/files/lib/WorkingHours_rb.html +3 -2
  256. data/doc/files/lib/XMLDocument_rb.html +3 -2
  257. data/doc/files/lib/XMLElement_rb.html +3 -2
  258. data/doc/files/lib/deep_copy_rb.html +3 -2
  259. data/doc/files/lib/reports/CSVFile_rb.html +3 -2
  260. data/doc/files/lib/reports/ColumnTable_rb.html +3 -2
  261. data/doc/files/lib/reports/GanttChart_rb.html +3 -2
  262. data/doc/files/lib/reports/GanttContainer_rb.html +3 -2
  263. data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +3 -2
  264. data/doc/files/lib/reports/GanttHeader_rb.html +3 -2
  265. data/doc/files/lib/reports/GanttLine_rb.html +3 -2
  266. data/doc/files/lib/reports/GanttLoadStack_rb.html +3 -2
  267. data/doc/files/lib/reports/GanttMilestone_rb.html +3 -2
  268. data/doc/files/lib/reports/GanttRouter_rb.html +3 -2
  269. data/doc/files/lib/reports/GanttTaskBar_rb.html +3 -2
  270. data/doc/files/lib/reports/HTMLGraphics_rb.html +3 -2
  271. data/doc/files/lib/reports/Navigator_rb.html +3 -2
  272. data/doc/files/lib/reports/ReportBase_rb.html +3 -2
  273. data/doc/files/lib/reports/ReportContext_rb.html +3 -2
  274. data/doc/files/lib/reports/ReportTableCell_rb.html +3 -2
  275. data/doc/files/lib/reports/ReportTableColumn_rb.html +3 -2
  276. data/doc/files/lib/reports/ReportTableLegend_rb.html +3 -2
  277. data/doc/files/lib/reports/ReportTableLine_rb.html +3 -2
  278. data/doc/files/lib/reports/ReportTable_rb.html +3 -2
  279. data/doc/files/lib/reports/Report_rb.html +7 -2
  280. data/doc/files/lib/reports/ResourceListRE_rb.html +3 -2
  281. data/doc/files/lib/reports/TableReport_rb.html +3 -2
  282. data/doc/files/lib/reports/TaskListRE_rb.html +3 -2
  283. data/doc/files/lib/reports/TextReport_rb.html +4 -3
  284. data/doc/files/lib/reports/TimeSheetReport_rb.html +117 -0
  285. data/doc/files/lib/reports/TjpExportRE_rb.html +3 -2
  286. data/doc/files/lib/taskjuggler3_rb.html +94 -77
  287. data/doc/files/lib/tj3client_rb.html +280 -0
  288. data/doc/files/lib/tj3man_rb.html +10 -9
  289. data/doc/fr_class_index.html +27 -5
  290. data/doc/fr_file_index.html +15 -7
  291. data/doc/fr_method_index.html +1312 -1020
  292. data/examples/tutorial.tjp +113 -14
  293. data/gem_spec.rb +2 -1
  294. data/lib/Account.rb +1 -1
  295. data/lib/AccountScenario.rb +1 -1
  296. data/lib/Allocation.rb +1 -1
  297. data/lib/AppConfig.rb +23 -10
  298. data/lib/AttributeBase.rb +34 -6
  299. data/lib/AttributeDefinition.rb +1 -1
  300. data/lib/Attributes.rb +51 -16
  301. data/lib/BatchProcessor.rb +204 -77
  302. data/lib/Booking.rb +1 -1
  303. data/lib/Charge.rb +1 -1
  304. data/lib/ChargeSet.rb +1 -1
  305. data/lib/HTMLDocument.rb +2 -2
  306. data/lib/Interval.rb +1 -1
  307. data/lib/Journal.rb +231 -9
  308. data/lib/KeywordArray.rb +1 -1
  309. data/lib/KeywordDocumentation.rb +6 -4
  310. data/lib/Limits.rb +1 -1
  311. data/lib/Log.rb +8 -1
  312. data/lib/LogicalExpression.rb +14 -13
  313. data/lib/LogicalFunction.rb +88 -14
  314. data/lib/LogicalOperation.rb +124 -53
  315. data/lib/MacroParser.rb +1 -1
  316. data/lib/MacroTable.rb +2 -2
  317. data/lib/Message.rb +1 -1
  318. data/lib/MessageHandler.rb +7 -3
  319. data/lib/Project.rb +93 -14
  320. data/lib/ProjectFileParser.rb +30 -15
  321. data/lib/PropertyList.rb +103 -36
  322. data/lib/PropertySet.rb +22 -10
  323. data/lib/PropertyTreeNode.rb +120 -15
  324. data/lib/Query.rb +119 -48
  325. data/lib/{RTPNavigator.rb → RTFNavigator.rb} +11 -10
  326. data/lib/RTFQuery.rb +166 -0
  327. data/lib/{RTPReport.rb → RTFReport.rb} +11 -8
  328. data/lib/RealFormat.rb +1 -1
  329. data/lib/RemoteServiceManager.rb +80 -0
  330. data/lib/ReportServer.rb +66 -0
  331. data/lib/Resource.rb +1 -1
  332. data/lib/ResourceScenario.rb +48 -19
  333. data/lib/RichText.rb +98 -41
  334. data/lib/RichTextDocument.rb +10 -8
  335. data/lib/RichTextElement.rb +72 -28
  336. data/lib/{RichTextProtocolExample.rb → RichTextFunctionExample.rb} +8 -7
  337. data/lib/{RichTextProtocolHandler.rb → RichTextFunctionHandler.rb} +12 -14
  338. data/lib/RichTextParser.rb +6 -3
  339. data/lib/RichTextScanner.rb +91 -19
  340. data/lib/RichTextSnip.rb +8 -3
  341. data/lib/RichTextSyntaxRules.rb +103 -45
  342. data/lib/Scenario.rb +1 -1
  343. data/lib/ScenarioData.rb +2 -2
  344. data/lib/Scoreboard.rb +1 -1
  345. data/lib/Shift.rb +1 -1
  346. data/lib/ShiftAssignments.rb +1 -1
  347. data/lib/ShiftScenario.rb +1 -1
  348. data/lib/SourceFileInfo.rb +1 -1
  349. data/lib/SyntaxReference.rb +2 -2
  350. data/lib/TOCEntry.rb +1 -1
  351. data/lib/TableColumnDefinition.rb +59 -16
  352. data/lib/TableOfContents.rb +1 -1
  353. data/lib/Task.rb +1 -1
  354. data/lib/TaskDependency.rb +1 -1
  355. data/lib/TaskJuggler.rb +31 -8
  356. data/lib/TaskScenario.rb +165 -16
  357. data/lib/TextParser.rb +36 -22
  358. data/lib/TextParser/Pattern.rb +3 -3
  359. data/lib/TextParser/Rule.rb +2 -2
  360. data/lib/TextParser/StackElement.rb +4 -3
  361. data/lib/TextParser/TokenDoc.rb +2 -2
  362. data/lib/TextScanner.rb +52 -37
  363. data/lib/Tj3Config.rb +6 -5
  364. data/lib/TjException.rb +1 -1
  365. data/lib/TjTime.rb +12 -3
  366. data/lib/TjpExample.rb +1 -1
  367. data/lib/TjpSyntaxRules.rb +1044 -150
  368. data/lib/UTF8String.rb +2 -1
  369. data/lib/UserManual.rb +18 -70
  370. data/lib/WorkingHours.rb +3 -3
  371. data/lib/XMLDocument.rb +3 -2
  372. data/lib/XMLElement.rb +6 -1
  373. data/lib/deep_copy.rb +1 -1
  374. data/lib/reports/CSVFile.rb +1 -1
  375. data/lib/reports/ColumnTable.rb +9 -9
  376. data/lib/reports/GanttChart.rb +1 -1
  377. data/lib/reports/GanttContainer.rb +1 -1
  378. data/lib/reports/GanttHeader.rb +1 -1
  379. data/lib/reports/GanttHeaderScaleItem.rb +1 -1
  380. data/lib/reports/GanttLine.rb +40 -40
  381. data/lib/reports/GanttLoadStack.rb +1 -1
  382. data/lib/reports/GanttMilestone.rb +1 -1
  383. data/lib/reports/GanttRouter.rb +1 -1
  384. data/lib/reports/GanttTaskBar.rb +1 -1
  385. data/lib/reports/HTMLGraphics.rb +1 -1
  386. data/lib/reports/Navigator.rb +149 -22
  387. data/lib/reports/Report.rb +115 -172
  388. data/lib/reports/ReportBase.rb +22 -27
  389. data/lib/reports/ReportContext.rb +29 -15
  390. data/lib/reports/ReportTable.rb +1 -1
  391. data/lib/reports/ReportTableCell.rb +120 -27
  392. data/lib/reports/ReportTableColumn.rb +3 -3
  393. data/lib/reports/ReportTableLegend.rb +1 -1
  394. data/lib/reports/ReportTableLine.rb +10 -2
  395. data/lib/reports/ResourceListRE.rb +5 -1
  396. data/lib/reports/TableReport.rb +237 -287
  397. data/lib/reports/TaskListRE.rb +5 -1
  398. data/lib/reports/TextReport.rb +7 -4
  399. data/lib/reports/TimeSheetReport.rb +233 -0
  400. data/lib/reports/TjpExportRE.rb +2 -2
  401. data/lib/taskjuggler3.rb +27 -11
  402. data/lib/tj3client.rb +110 -0
  403. data/lib/tj3man.rb +4 -4
  404. data/manual/Getting_Started +0 -50
  405. data/manual/How_To_Contribute +6 -13
  406. data/manual/Installation +102 -28
  407. data/manual/Intro +11 -1
  408. data/manual/Reporting_Bugs +23 -7
  409. data/manual/Rich_Text_Attributes +59 -6
  410. data/manual/TaskJuggler_2x_Migration +27 -0
  411. data/manual/The_TaskJuggler_Syntax +104 -0
  412. data/manual/Tutorial +10 -9
  413. data/prj_cfg.rb +8 -2
  414. data/tasks/csts.rake +1 -1
  415. data/tasks/manual.rake +5 -3
  416. data/test/MessageChecker.rb +1 -1
  417. data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
  418. data/test/TestSuite/HTML-Reports/Alerts.tjp +77 -0
  419. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  420. data/test/TestSuite/HTML-Reports/CellText.tjp +75 -0
  421. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  422. data/test/TestSuite/HTML-Reports/ColumnPeriods.tjp +44 -0
  423. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  424. data/test/TestSuite/HTML-Reports/IsOngoing.tjp +34 -0
  425. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +80 -0
  426. data/test/TestSuite/HTML-Reports/LogicalFunctions.tjp +20 -0
  427. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  428. data/test/TestSuite/HTML-Reports/Query.tjp +28 -0
  429. data/test/TestSuite/HTML-Reports/Sorting.tjp +68 -0
  430. data/test/TestSuite/HTML-Reports/TimeSheet.tjp +69 -0
  431. data/test/TestSuite/HTML-Reports/UDAQuery.tjp +27 -0
  432. data/test/TestSuite/HTML-Reports/css/tjmanual.css +52 -0
  433. data/test/TestSuite/HTML-Reports/css/tjreport.css +195 -0
  434. data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
  435. data/test/TestSuite/HTML-Reports/icons/details.png +0 -0
  436. data/test/TestSuite/HTML-Reports/icons/flag-green.png +0 -0
  437. data/test/TestSuite/HTML-Reports/icons/flag-red.png +0 -0
  438. data/test/TestSuite/HTML-Reports/icons/flag-yellow.png +0 -0
  439. data/test/TestSuite/HTML-Reports/icons/resource.png +0 -0
  440. data/test/TestSuite/HTML-Reports/icons/resourcegroup.png +0 -0
  441. data/test/TestSuite/HTML-Reports/icons/task.png +0 -0
  442. data/test/TestSuite/HTML-Reports/icons/taskgroup.png +0 -0
  443. data/test/TestSuite/HTML-Reports/reference.tjp +7 -8
  444. data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
  445. data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +1301 -0
  446. data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +34 -0
  447. data/test/TestSuite/Syntax/Correct/Celltext.tjp +2 -1
  448. data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -2
  449. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +2 -1
  450. data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +20 -0
  451. data/test/TestSuite/Syntax/Correct/Query.tjp +18 -0
  452. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +45 -0
  453. data/test/TestSuite/Syntax/Correct/TimeSheet.tjp +49 -0
  454. data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
  455. data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
  456. data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
  457. data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
  458. data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
  459. data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
  460. data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
  461. data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
  462. data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
  463. data/test/TestSuite/Syntax/Correct/tutorial.tjp +113 -14
  464. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +28 -0
  465. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +12 -0
  466. data/test/all.rb +2 -2
  467. data/test/test_BatchProcessor.rb +42 -13
  468. data/test/test_CSV-Reports.rb +1 -1
  469. data/test/test_Journal.rb +176 -0
  470. data/test/test_Limits.rb +1 -1
  471. data/test/test_LogicalExpression.rb +14 -5
  472. data/test/test_MacroTable.rb +1 -1
  473. data/test/test_Project.rb +1 -1
  474. data/test/test_PropertySet.rb +1 -1
  475. data/test/test_Query.rb +1 -1
  476. data/test/test_RealFormat.rb +1 -1
  477. data/test/test_RichText.rb +30 -20
  478. data/test/test_Scheduler.rb +1 -1
  479. data/test/test_ShiftAssignments.rb +2 -2
  480. data/test/test_Syntax.rb +1 -1
  481. data/test/test_TextScanner.rb +1 -1
  482. data/test/test_TjTime.rb +1 -1
  483. data/test/test_TjpExample.rb +1 -1
  484. data/test/test_UTF8String.rb +1 -1
  485. data/test/test_WorkingHours.rb +1 -1
  486. data/test/test_deep_copy.rb +2 -2
  487. metadata +610 -532
  488. data/doc/files/lib/ms_test_rb.html +0 -90
  489. data/examples/ContactList.html +0 -1467
  490. data/examples/Deliveries.html +0 -485
  491. data/examples/Development.html +0 -2525
  492. data/examples/Overview.html +0 -747
  493. data/examples/Resource Graph.html +0 -616
  494. data/lib/ms_test.rb +0 -27
  495. data/test/TestSuite/HTML-Reports/reference-export.html +0 -187
@@ -108,9 +108,9 @@ completely processed.
108
108
 
109
109
  <div class="name-list">
110
110
 
111
- <a href="#M000741">dirname</a>&nbsp;&nbsp;
111
+ <a href="#M000483">dirname</a>&nbsp;&nbsp;
112
112
 
113
- <a href="#M000740">new</a>&nbsp;&nbsp;
113
+ <a href="#M000482">new</a>&nbsp;&nbsp;
114
114
 
115
115
  </div>
116
116
  </div>
@@ -181,12 +181,12 @@ completely processed.
181
181
  <h3 class="section-bar">Public Class methods</h3>
182
182
 
183
183
 
184
- <div id="method-M000740" class="method-detail">
185
- <a name="M000740"></a>
184
+ <div id="method-M000482" class="method-detail">
185
+ <a name="M000482"></a>
186
186
 
187
187
  <div class="method-heading">
188
188
 
189
- <a href="#M000740" class="method-signature">
189
+ <a href="#M000482" class="method-signature">
190
190
 
191
191
  <span class="method-name">new</span><span class="method-args">()</span>
192
192
 
@@ -197,8 +197,8 @@ completely processed.
197
197
  <div class="method-description">
198
198
 
199
199
  <p><a class="source-toggle" href="#"
200
- onclick="toggleCode('M000740-source');return false;">[Source]</a></p>
201
- <div class="method-source-code" id="M000740-source">
200
+ onclick="toggleCode('M000482-source');return false;">[Source]</a></p>
201
+ <div class="method-source-code" id="M000482-source">
202
202
  <pre>
203
203
  <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 38</span>
204
204
  38: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
@@ -218,12 +218,12 @@ completely processed.
218
218
  <h3 class="section-bar">Public Instance methods</h3>
219
219
 
220
220
 
221
- <div id="method-M000741" class="method-detail">
222
- <a name="M000741"></a>
221
+ <div id="method-M000483" class="method-detail">
222
+ <a name="M000483"></a>
223
223
 
224
224
  <div class="method-heading">
225
225
 
226
- <a href="#M000741" class="method-signature">
226
+ <a href="#M000483" class="method-signature">
227
227
 
228
228
  <span class="method-name">dirname</span><span class="method-args">()</span>
229
229
 
@@ -234,8 +234,8 @@ completely processed.
234
234
  <div class="method-description">
235
235
 
236
236
  <p><a class="source-toggle" href="#"
237
- onclick="toggleCode('M000741-source');return false;">[Source]</a></p>
238
- <div class="method-source-code" id="M000741-source">
237
+ onclick="toggleCode('M000483-source');return false;">[Source]</a></p>
238
+ <div class="method-source-code" id="M000483-source">
239
239
  <pre>
240
240
  <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 46</span>
241
241
  46: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dirname</span>
@@ -0,0 +1,406 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <title>Class: TaskJuggler::TimeSheetReport [TaskJuggler III API documentation]</title>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
8
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
9
+ <script type="text/javascript">
10
+ // <![CDATA[
11
+
12
+ function popupCode( url ) {
13
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
14
+ }
15
+
16
+ function toggleCode( id ) {
17
+ if ( document.getElementById )
18
+ elem = document.getElementById( id );
19
+ else if ( document.all )
20
+ elem = eval( "document.all." + id );
21
+ else
22
+ return false;
23
+
24
+ elemStyle = elem.style;
25
+
26
+ if ( elemStyle.display != "block" ) {
27
+ elemStyle.display = "block"
28
+ } else {
29
+ elemStyle.display = "none"
30
+ }
31
+
32
+ return true;
33
+ }
34
+
35
+ // Make codeblocks hidden by default
36
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }<\/style>" )
37
+
38
+ // ]]>
39
+ </script>
40
+
41
+ </head>
42
+ <body>
43
+
44
+
45
+ <div id="classHeader">
46
+ <table class="header-table">
47
+ <tr class="top-aligned-row">
48
+ <td><strong>Class</strong></td>
49
+ <td class="class-name-in-header">TaskJuggler::TimeSheetReport</td>
50
+ </tr>
51
+ <tr class="top-aligned-row">
52
+ <td><strong>In:</strong></td>
53
+ <td>
54
+
55
+
56
+ <a href="../../files/lib/reports/TimeSheetReport_rb.html">
57
+
58
+ lib/reports/TimeSheetReport.rb
59
+
60
+ </a>
61
+
62
+
63
+ <br />
64
+
65
+ </td>
66
+ </tr>
67
+
68
+
69
+ <tr class="top-aligned-row">
70
+ <td><strong>Parent:</strong></td>
71
+ <td>
72
+
73
+ <a href="ReportBase.html">
74
+
75
+ TaskJuggler::ReportBase
76
+
77
+ </a>
78
+
79
+ </td>
80
+ </tr>
81
+
82
+ </table>
83
+ </div>
84
+ <!-- banner header -->
85
+
86
+ <div id="bodyContent">
87
+
88
+ <div id="contextContent">
89
+
90
+ <div id="description">
91
+ <p>
92
+ This specialization of <a href="ReportBase.html">ReportBase</a> implements
93
+ a template generator for time sheets. The time sheet is structured using
94
+ the TJP file syntax.
95
+ </p>
96
+
97
+ </div>
98
+
99
+ </div>
100
+
101
+
102
+ <div id="method-list">
103
+ <h3 class="section-bar">Methods</h3>
104
+
105
+ <div class="name-list">
106
+
107
+ <a href="#M000351">generateIntermediateFormat</a>&nbsp;&nbsp;
108
+
109
+ <a href="#M000350">new</a>&nbsp;&nbsp;
110
+
111
+ <a href="#M000352">to_tjp</a>&nbsp;&nbsp;
112
+
113
+ </div>
114
+ </div>
115
+
116
+ </div>
117
+
118
+ <!-- if includes -->
119
+
120
+ <div id="section">
121
+
122
+
123
+
124
+ <div id="attribute-list">
125
+ <h3 class="section-bar">Attributes</h3>
126
+
127
+ <div class="name-list">
128
+ <table>
129
+
130
+ <tr class="top-aligned-row context-row">
131
+ <td class="context-item-name">mainFile</td>
132
+
133
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
134
+
135
+ <td class="context-item-desc"></td>
136
+ </tr>
137
+
138
+ </table>
139
+ </div>
140
+ </div>
141
+
142
+
143
+ <!-- if method_list -->
144
+
145
+ <div id="methods">
146
+
147
+ <h3 class="section-bar">Public Class methods</h3>
148
+
149
+
150
+ <div id="method-M000350" class="method-detail">
151
+ <a name="M000350"></a>
152
+
153
+ <div class="method-heading">
154
+
155
+ <a href="#M000350" class="method-signature">
156
+
157
+ <span class="method-name">new</span><span class="method-args">(report)</span>
158
+
159
+ </a>
160
+
161
+ </div>
162
+
163
+ <div class="method-description">
164
+
165
+ <p>
166
+ Create a new object and set some default values.
167
+ </p>
168
+
169
+ <p><a class="source-toggle" href="#"
170
+ onclick="toggleCode('M000350-source');return false;">[Source]</a></p>
171
+ <div class="method-source-code" id="M000350-source">
172
+ <pre>
173
+ <span class="ruby-comment cmt"># File lib/reports/TimeSheetReport.rb, line 50</span>
174
+ 50: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">report</span>)
175
+ 51: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">report</span>)
176
+ 52:
177
+ 53: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'scenarios'</span>, [ <span class="ruby-value">0</span> ])
178
+ 54: <span class="ruby-comment cmt"># Show all tasks, sorted by seqno-up.</span>
179
+ 55: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'hideTask'</span>, <span class="ruby-constant">LogicalExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">LogicalOperation</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>)))
180
+ 56: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'sortTasks'</span>, [ [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">-1</span> ] ])
181
+ 57: <span class="ruby-comment cmt"># Show all resources, sorted by seqno-up.</span>
182
+ 58: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'hideResource'</span>, <span class="ruby-constant">LogicalExpression</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">LogicalOperation</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>)))
183
+ 59: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'sortResources'</span>, [ [ <span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">-1</span> ] ])
184
+ 60:
185
+ 61: <span class="ruby-ivar">@records</span> = []
186
+ 62: <span class="ruby-keyword kw">end</span>
187
+ </pre>
188
+ </div>
189
+
190
+ </div>
191
+ </div>
192
+
193
+
194
+ <h3 class="section-bar">Public Instance methods</h3>
195
+
196
+
197
+ <div id="method-M000351" class="method-detail">
198
+ <a name="M000351"></a>
199
+
200
+ <div class="method-heading">
201
+
202
+ <a href="#M000351" class="method-signature">
203
+
204
+ <span class="method-name">generateIntermediateFormat</span><span class="method-args">()</span>
205
+
206
+ </a>
207
+
208
+ </div>
209
+
210
+ <div class="method-description">
211
+
212
+ <p>
213
+ In the future we might want to generate other output than TJP synatx. So we
214
+ generate an abstract version of the time sheet first. This abstract version
215
+ has a <a href="TSResourceRecord.html">TSResourceRecord</a> for each
216
+ resource and each of these records holds a <a
217
+ href="TSTaskRecord.html">TSTaskRecord</a> for each assigned task.
218
+ </p>
219
+
220
+ <p><a class="source-toggle" href="#"
221
+ onclick="toggleCode('M000351-source');return false;">[Source]</a></p>
222
+ <div class="method-source-code" id="M000351-source">
223
+ <pre>
224
+ <span class="ruby-comment cmt"># File lib/reports/TimeSheetReport.rb, line 68</span>
225
+ 68: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateIntermediateFormat</span>
226
+ 69: <span class="ruby-keyword kw">super</span>
227
+ 70:
228
+ 71: <span class="ruby-comment cmt"># Prepare the resource list.</span>
229
+ 72: <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>)
230
+ 73: <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>))
231
+ 74: <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>,
232
+ 75: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideResource'</span>),
233
+ 76: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupResource'</span>))
234
+ 77: <span class="ruby-comment cmt"># Prepare a template for the Query we will use to get all the data.</span>
235
+ 78: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>)[<span class="ruby-value">0</span>]
236
+ 79: <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>,
237
+ 80: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
238
+ 81: <span class="ruby-value str">'scenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">scenarioIdx</span>,
239
+ 82: <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>),
240
+ 83: <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>),
241
+ 84: <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>),
242
+ 85: <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>),
243
+ 86: <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>),
244
+ 87: <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>),
245
+ 88: <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>) }
246
+ 89: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
247
+ 90: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">sort!</span>
248
+ 91:
249
+ 92: <span class="ruby-comment cmt"># Prepare the task list.</span>
250
+ 93: <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>)
251
+ 94: <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>))
252
+ 95: <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>),
253
+ 96: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupTask'</span>))
254
+ 97:
255
+ 98: <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>
256
+ 99: <span class="ruby-comment cmt"># Time sheets only make sense for leaf resources that actuall do work.</span>
257
+ 100: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">leaf?</span>
258
+ 101:
259
+ 102: <span class="ruby-comment cmt"># Create a new TSResourceRecord for the resource.</span>
260
+ 103: <span class="ruby-ivar">@records</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">resourceRecord</span> = <span class="ruby-constant">TSResourceRecord</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">resource</span>))
261
+ 104:
262
+ 105: <span class="ruby-comment cmt"># Now we have to find all the task that the resource is allocated to</span>
263
+ 106: <span class="ruby-comment cmt"># during the report period.</span>
264
+ 107: <span class="ruby-identifier">assignedTaskList</span> = <span class="ruby-identifier">filterTaskList</span>(<span class="ruby-identifier">taskList</span>, <span class="ruby-identifier">resource</span>,
265
+ 108: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'hideTask'</span>),
266
+ 109: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'rollupTask'</span>))
267
+ 110: <span class="ruby-identifier">queryAttrs</span>[<span class="ruby-value str">'scopeProperty'</span>] = <span class="ruby-identifier">resource</span>
268
+ 111: <span class="ruby-identifier">assignedTaskList</span>.<span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
269
+ 112: <span class="ruby-identifier">assignedTaskList</span>.<span class="ruby-identifier">sort!</span>
270
+ 113:
271
+ 114: <span class="ruby-identifier">assignedTaskList</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>
272
+ 115: <span class="ruby-comment cmt"># Time sheet task records only make sense for leaf tasks.</span>
273
+ 116: <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>
274
+ 117:
275
+ 118: <span class="ruby-identifier">queryAttrs</span>[<span class="ruby-value str">'property'</span>] = <span class="ruby-identifier">task</span>
276
+ 119: <span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
277
+ 120:
278
+ 121: <span class="ruby-comment cmt"># Get the allocated effort for the task for this period.</span>
279
+ 122: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">attributeId</span> = <span class="ruby-value str">'effort'</span>
280
+ 123: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>)
281
+ 124: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)
282
+ 125: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">process</span>
283
+ 126: <span class="ruby-identifier">work</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_s</span>
284
+ 127:
285
+ 128: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'effort'</span>, <span class="ruby-identifier">scenarioIdx</span>]
286
+ 129: <span class="ruby-comment cmt"># The task is an effort based task.</span>
287
+ 130: <span class="ruby-comment cmt"># Get the remaining effort for this task.</span>
288
+ 131: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)
289
+ 132: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">scenarioIdx</span>]
290
+ 133: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">process</span>
291
+ 134: <span class="ruby-identifier">remaining</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_s</span>
292
+ 135: <span class="ruby-identifier">endDate</span> = <span class="ruby-keyword kw">nil</span>
293
+ 136: <span class="ruby-keyword kw">else</span>
294
+ 137: <span class="ruby-comment cmt"># The task is a duration task.</span>
295
+ 138: <span class="ruby-comment cmt"># Get the planned task end date.</span>
296
+ 139: <span class="ruby-identifier">remaining</span> = <span class="ruby-keyword kw">nil</span>
297
+ 140: <span class="ruby-identifier">endDate</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">scenarioIdx</span>]
298
+ 141: <span class="ruby-keyword kw">end</span>
299
+ 142:
300
+ 143: <span class="ruby-comment cmt"># Put all data into a TSTaskRecord and push it into the resource</span>
301
+ 144: <span class="ruby-comment cmt"># record.</span>
302
+ 145: <span class="ruby-identifier">resourceRecord</span>.<span class="ruby-identifier">tasks</span> <span class="ruby-operator">&lt;&lt;</span>
303
+ 146: <span class="ruby-constant">TSTaskRecord</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">work</span>, <span class="ruby-identifier">remaining</span>, <span class="ruby-identifier">endDate</span>)
304
+ 147: <span class="ruby-keyword kw">end</span>
305
+ 148: <span class="ruby-keyword kw">end</span>
306
+ 149: <span class="ruby-keyword kw">end</span>
307
+ </pre>
308
+ </div>
309
+
310
+ </div>
311
+ </div>
312
+
313
+
314
+ <div id="method-M000352" class="method-detail">
315
+ <a name="M000352"></a>
316
+
317
+ <div class="method-heading">
318
+
319
+ <a href="#M000352" class="method-signature">
320
+
321
+ <span class="method-name">to_tjp</span><span class="method-args">()</span>
322
+
323
+ </a>
324
+
325
+ </div>
326
+
327
+ <div class="method-description">
328
+
329
+ <p>
330
+ Generate a time sheet in TJP syntax format.
331
+ </p>
332
+
333
+ <p><a class="source-toggle" href="#"
334
+ onclick="toggleCode('M000352-source');return false;">[Source]</a></p>
335
+ <div class="method-source-code" id="M000352-source">
336
+ <pre>
337
+ <span class="ruby-comment cmt"># File lib/reports/TimeSheetReport.rb, line 152</span>
338
+ 152: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_tjp</span>
339
+ 153:
340
+ 154: <span class="ruby-comment cmt"># Prepare the task list.</span>
341
+ 155: <span class="ruby-ivar">@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>)
342
+ 156: <span class="ruby-ivar">@taskList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'sortTasks'</span>))
343
+ 157: <span class="ruby-ivar">@taskList</span> = <span class="ruby-identifier">filterTaskList</span>(<span class="ruby-ivar">@taskList</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">a</span>(<span class="ruby-value str">'hideTask'</span>), <span class="ruby-identifier">a</span>(<span class="ruby-value str">'rollupTask'</span>))
344
+ 158: <span class="ruby-ivar">@taskList</span>.<span class="ruby-identifier">sort!</span>
345
+ 159:
346
+ 160: <span class="ruby-comment cmt"># This String will hold the result.</span>
347
+ 161: <span class="ruby-ivar">@file</span> = <span class="ruby-value str">''</span>
348
+ 162:
349
+ 163: <span class="ruby-comment cmt"># Iterate over all the resources that we have TSResourceRecords for.</span>
350
+ 164: <span class="ruby-ivar">@records</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rr</span><span class="ruby-operator">|</span>
351
+ 165: <span class="ruby-identifier">resource</span> = <span class="ruby-identifier">rr</span>.<span class="ruby-identifier">resource</span>
352
+ 166: <span class="ruby-comment cmt"># Generate the time sheet header</span>
353
+ 167: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;timesheet #{resource.fullId} &quot;</span> <span class="ruby-operator">+</span>
354
+ 168: <span class="ruby-node">&quot;#{a('start')} - #{a('end')} {\n\n&quot;</span>
355
+ 169:
356
+ 170: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rr</span>.<span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">empty?</span>
357
+ 171: <span class="ruby-comment cmt"># If there were no assignments, just write a comment.</span>
358
+ 172: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; # There were no planned tasks assignements for &quot;</span> <span class="ruby-operator">+</span>
359
+ 173: <span class="ruby-value str">&quot;this period!\n\n&quot;</span>
360
+ 174: <span class="ruby-keyword kw">else</span>
361
+ 175: <span class="ruby-identifier">rr</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">tr</span><span class="ruby-operator">|</span>
362
+ 176: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">tr</span>.<span class="ruby-identifier">task</span>
363
+ 177:
364
+ 178: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # Task: #{task.name}\n&quot;</span>
365
+ 179: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; task #{task.fullId} {\n&quot;</span>
366
+ 180: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; work #{tr.work}\n&quot;</span>
367
+ 181: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tr</span>.<span class="ruby-identifier">remaining</span>
368
+ 182: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; remaining #{tr.remaining}\n&quot;</span>
369
+ 183: <span class="ruby-keyword kw">else</span>
370
+ 184: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; end #{tr.endDate.to_tjp}\n&quot;</span>
371
+ 185: <span class="ruby-keyword kw">end</span>
372
+ 186: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; status green \&quot;Your status here!\&quot; {\n&quot;</span> <span class="ruby-operator">+</span>
373
+ 187: <span class="ruby-value str">&quot; summary\n&quot;</span> <span class="ruby-operator">+</span>
374
+ 188: <span class="ruby-value str">&quot; -8&lt;-\n&quot;</span> <span class="ruby-operator">+</span>
375
+ 189: <span class="ruby-value str">&quot; Your summary here!\n&quot;</span> <span class="ruby-operator">+</span>
376
+ 190: <span class="ruby-value str">&quot; -&gt;8-\n&quot;</span> <span class="ruby-operator">+</span>
377
+ 191: <span class="ruby-value str">&quot; }\n&quot;</span>
378
+ 192: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; }\n\n&quot;</span>
379
+ 193: <span class="ruby-keyword kw">end</span>
380
+ 194: <span class="ruby-keyword kw">end</span>
381
+ 195: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; # If you had unplanned tasks, uncomment and fill out the following lines:\n # newtask new.task.id \&quot;A task title\&quot; {\n # work X.Xd\n # remaining Y.Yd\n # }\n&quot;</span>
382
+ 196: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;}\n\n&quot;</span>
383
+ 197: <span class="ruby-keyword kw">end</span>
384
+ 198: <span class="ruby-ivar">@file</span>
385
+ 199: <span class="ruby-keyword kw">end</span>
386
+ </pre>
387
+ </div>
388
+
389
+ </div>
390
+ </div>
391
+
392
+
393
+
394
+ </div>
395
+
396
+
397
+
398
+
399
+ </div>
400
+
401
+ <div id="validator-badges">
402
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
403
+ </div>
404
+
405
+ </body>
406
+ </html>