taskjuggler 0.0.2 → 0.0.3

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 (432) hide show
  1. data/Rakefile +1 -0
  2. data/benchmarks/depends.tjp +2 -1
  3. data/benchmarks/htmltaskreport.tjp +2 -1
  4. data/doc/classes/AppConfig.html +124 -120
  5. data/doc/classes/Arguments.html +10 -6
  6. data/doc/classes/Object.html +229 -0
  7. data/doc/classes/String.html +35 -31
  8. data/doc/classes/TaskJuggler/Account.html +18 -18
  9. data/doc/classes/TaskJuggler/AccountAttribute.html +261 -0
  10. data/doc/classes/TaskJuggler/AccountScenario.html +12 -12
  11. data/doc/classes/TaskJuggler/Allocation.html +34 -30
  12. data/doc/classes/TaskJuggler/AllocationAttribute.html +70 -70
  13. data/doc/classes/TaskJuggler/AttributeBase.html +131 -147
  14. data/doc/classes/TaskJuggler/AttributeDefinition.html +38 -21
  15. data/doc/classes/TaskJuggler/BatchProcessor.html +313 -0
  16. data/doc/classes/TaskJuggler/Booking.html +22 -18
  17. data/doc/classes/TaskJuggler/BookingListAttribute.html +42 -42
  18. data/doc/classes/TaskJuggler/BooleanAttribute.html +40 -40
  19. data/doc/classes/TaskJuggler/CSVFile.html +28 -24
  20. data/doc/classes/TaskJuggler/Charge.html +22 -18
  21. data/doc/classes/TaskJuggler/ChargeListAttribute.html +30 -30
  22. data/doc/classes/TaskJuggler/ChargeSet.html +41 -37
  23. data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +46 -46
  24. data/doc/classes/TaskJuggler/ColumnListAttribute.html +231 -0
  25. data/doc/classes/TaskJuggler/ColumnTable.html +23 -21
  26. data/doc/classes/TaskJuggler/DateAttribute.html +20 -20
  27. data/doc/classes/TaskJuggler/DefinitionListAttribute.html +162 -0
  28. data/doc/classes/TaskJuggler/DependencyListAttribute.html +46 -46
  29. data/doc/classes/TaskJuggler/DurationAttribute.html +30 -30
  30. data/doc/classes/TaskJuggler/FixnumAttribute.html +20 -20
  31. data/doc/classes/TaskJuggler/FlagListAttribute.html +42 -42
  32. data/doc/classes/TaskJuggler/FloatAttribute.html +30 -30
  33. data/doc/classes/TaskJuggler/FormatListAttribute.html +197 -0
  34. data/doc/classes/TaskJuggler/GanttChart.html +236 -207
  35. data/doc/classes/TaskJuggler/GanttContainer.html +46 -42
  36. data/doc/classes/TaskJuggler/GanttHeader.html +16 -12
  37. data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +16 -12
  38. data/doc/classes/TaskJuggler/GanttLine.html +28 -24
  39. data/doc/classes/TaskJuggler/GanttLoadStack.html +22 -18
  40. data/doc/classes/TaskJuggler/GanttMilestone.html +46 -42
  41. data/doc/classes/TaskJuggler/GanttRouter.html +104 -98
  42. data/doc/classes/TaskJuggler/GanttTaskBar.html +46 -42
  43. data/doc/classes/TaskJuggler/HTMLDocument.html +12 -12
  44. data/doc/classes/TaskJuggler/HTMLGraphics.html +12 -12
  45. data/doc/classes/TaskJuggler/Interval.html +126 -120
  46. data/doc/classes/TaskJuggler/IntervalListAttribute.html +46 -46
  47. data/doc/classes/TaskJuggler/JobInfo.html +284 -0
  48. data/doc/classes/TaskJuggler/Journal.html +197 -0
  49. data/doc/classes/TaskJuggler/JournalEntry.html +218 -0
  50. data/doc/classes/TaskJuggler/KeywordArray.html +179 -0
  51. data/doc/classes/TaskJuggler/KeywordDocumentation.html +445 -396
  52. data/doc/classes/TaskJuggler/Limits/Limit.html +34 -30
  53. data/doc/classes/TaskJuggler/Limits.html +68 -62
  54. data/doc/classes/TaskJuggler/LimitsAttribute.html +40 -40
  55. data/doc/classes/TaskJuggler/ListAttributeBase.html +207 -0
  56. data/doc/classes/TaskJuggler/Log.html +72 -68
  57. data/doc/classes/TaskJuggler/LogicalAttribute.html +38 -34
  58. data/doc/classes/TaskJuggler/LogicalExpression.html +16 -12
  59. data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +194 -0
  60. data/doc/classes/TaskJuggler/LogicalFlag.html +32 -32
  61. data/doc/classes/TaskJuggler/LogicalFunction.html +28 -24
  62. data/doc/classes/TaskJuggler/LogicalOperation.html +17 -13
  63. data/doc/classes/TaskJuggler/Macro.html +10 -6
  64. data/doc/classes/TaskJuggler/MacroParser.html +36 -36
  65. data/doc/classes/TaskJuggler/MacroTable.html +40 -36
  66. data/doc/classes/TaskJuggler/Message.html +16 -12
  67. data/doc/classes/TaskJuggler/MessageHandler.html +16 -12
  68. data/doc/classes/TaskJuggler/Navigator.html +249 -0
  69. data/doc/classes/TaskJuggler/OnShiftCache.html +316 -0
  70. data/doc/classes/TaskJuggler/Project.html +1064 -678
  71. data/doc/classes/TaskJuggler/ProjectFileParser.html +90 -85
  72. data/doc/classes/TaskJuggler/PropertyAttribute.html +194 -0
  73. data/doc/classes/TaskJuggler/PropertyList.html +114 -113
  74. data/doc/classes/TaskJuggler/PropertySet.html +355 -312
  75. data/doc/classes/TaskJuggler/PropertyTreeNode.html +527 -474
  76. data/doc/classes/TaskJuggler/Query.html +90 -85
  77. data/doc/classes/TaskJuggler/RTPNavigator.html +292 -0
  78. data/doc/classes/TaskJuggler/RTPReport.html +301 -0
  79. data/doc/classes/TaskJuggler/RealFormat.html +114 -57
  80. data/doc/classes/TaskJuggler/RealFormatAttribute.html +162 -0
  81. data/doc/classes/TaskJuggler/ReferenceAttribute.html +87 -20
  82. data/doc/classes/TaskJuggler/Report.html +82 -291
  83. data/doc/classes/TaskJuggler/ReportBase.html +448 -0
  84. data/doc/classes/TaskJuggler/ReportContext.html +243 -0
  85. data/doc/classes/TaskJuggler/ReportTable.html +158 -129
  86. data/doc/classes/TaskJuggler/ReportTableCell.html +30 -26
  87. data/doc/classes/TaskJuggler/ReportTableColumn.html +29 -25
  88. data/doc/classes/TaskJuggler/ReportTableLegend.html +28 -24
  89. data/doc/classes/TaskJuggler/ReportTableLine.html +34 -30
  90. data/doc/classes/TaskJuggler/Resource.html +12 -12
  91. data/doc/classes/TaskJuggler/ResourceListAttribute.html +46 -46
  92. data/doc/classes/TaskJuggler/ResourceListRE.html +49 -57
  93. data/doc/classes/TaskJuggler/ResourceScenario.html +126 -126
  94. data/doc/classes/TaskJuggler/RichText.html +52 -48
  95. data/doc/classes/TaskJuggler/RichTextAttribute.html +30 -30
  96. data/doc/classes/TaskJuggler/RichTextDocument.html +41 -37
  97. data/doc/classes/TaskJuggler/RichTextElement.html +274 -264
  98. data/doc/classes/TaskJuggler/RichTextException.html +13 -13
  99. data/doc/classes/TaskJuggler/RichTextParser.html +48 -47
  100. data/doc/classes/TaskJuggler/RichTextProtocolExample.html +52 -55
  101. data/doc/classes/TaskJuggler/RichTextProtocolHandler.html +55 -10
  102. data/doc/classes/TaskJuggler/RichTextScanner.html +106 -245
  103. data/doc/classes/TaskJuggler/RichTextSnip.html +28 -24
  104. data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +381 -301
  105. data/doc/classes/TaskJuggler/Scenario.html +6 -6
  106. data/doc/classes/TaskJuggler/ScenarioData.html +40 -36
  107. data/doc/classes/TaskJuggler/ScenarioListAttribute.html +229 -0
  108. data/doc/classes/TaskJuggler/Scoreboard.html +70 -66
  109. data/doc/classes/TaskJuggler/Shift.html +18 -18
  110. data/doc/classes/TaskJuggler/ShiftAssignment.html +58 -54
  111. data/doc/classes/TaskJuggler/ShiftAssignments.html +82 -78
  112. data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +40 -40
  113. data/doc/classes/TaskJuggler/ShiftScenario.html +24 -24
  114. data/doc/classes/TaskJuggler/SortListAttribute.html +196 -0
  115. data/doc/classes/TaskJuggler/SourceFileInfo.html +16 -12
  116. data/doc/classes/TaskJuggler/StringAttribute.html +30 -30
  117. data/doc/classes/TaskJuggler/SymbolAttribute.html +20 -20
  118. data/doc/classes/TaskJuggler/SyntaxReference.html +46 -42
  119. data/doc/classes/TaskJuggler/TOCEntry.html +16 -12
  120. data/doc/classes/TaskJuggler/TableColumnDefinition.html +48 -33
  121. data/doc/classes/TaskJuggler/TableOfContents.html +22 -18
  122. data/doc/classes/TaskJuggler/TableReport.html +1036 -0
  123. data/doc/classes/TaskJuggler/Task.html +12 -12
  124. data/doc/classes/TaskJuggler/TaskDependency.html +16 -12
  125. data/doc/classes/TaskJuggler/TaskListAttribute.html +46 -46
  126. data/doc/classes/TaskJuggler/TaskListRE.html +49 -58
  127. data/doc/classes/TaskJuggler/TaskScenario.html +1270 -1180
  128. data/doc/classes/TaskJuggler/TextParser/Pattern.html +100 -96
  129. data/doc/classes/TaskJuggler/TextParser/Rule.html +88 -84
  130. data/doc/classes/TaskJuggler/TextParser/StackElement.html +16 -12
  131. data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +12 -12
  132. data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +10 -6
  133. data/doc/classes/TaskJuggler/TextParser.html +203 -140
  134. data/doc/classes/TaskJuggler/TextReport.html +364 -0
  135. data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +70 -70
  136. data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +50 -42
  137. data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +16 -12
  138. data/doc/classes/TaskJuggler/TextScanner.html +334 -240
  139. data/doc/classes/TaskJuggler/TjException.html +6 -6
  140. data/doc/classes/TaskJuggler/TjTime.html +547 -497
  141. data/doc/classes/TaskJuggler/TjpExample.html +29 -25
  142. data/doc/classes/TaskJuggler/TjpExportRE.html +77 -97
  143. data/doc/classes/TaskJuggler/TjpSyntaxRules.html +3911 -3886
  144. data/doc/classes/TaskJuggler/UserManual.html +54 -54
  145. data/doc/classes/TaskJuggler/WorkingHours.html +53 -49
  146. data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +53 -85
  147. data/doc/classes/TaskJuggler/XMLBlob.html +21 -21
  148. data/doc/classes/TaskJuggler/XMLComment.html +21 -21
  149. data/doc/classes/TaskJuggler/XMLDocument.html +28 -24
  150. data/doc/classes/TaskJuggler/XMLElement.html +70 -58
  151. data/doc/classes/TaskJuggler/XMLNamedText.html +11 -11
  152. data/doc/classes/TaskJuggler/XMLText.html +36 -36
  153. data/doc/classes/TaskJuggler.html +266 -183
  154. data/doc/files/COPYING.html +1 -1
  155. data/doc/files/README.html +1 -1
  156. data/doc/files/lib/AccountScenario_rb.html +1 -1
  157. data/doc/files/lib/Account_rb.html +1 -1
  158. data/doc/files/lib/Allocation_rb.html +1 -1
  159. data/doc/files/lib/AppConfig_rb.html +1 -1
  160. data/doc/files/lib/AttributeBase_rb.html +11 -1
  161. data/doc/files/lib/AttributeDefinition_rb.html +1 -1
  162. data/doc/files/lib/Attributes_rb.html +1 -1
  163. data/doc/files/lib/{LogicalFlag_rb.html → BatchProcessor_rb.html} +8 -6
  164. data/doc/files/lib/Booking_rb.html +1 -1
  165. data/doc/files/lib/ChargeSet_rb.html +1 -1
  166. data/doc/files/lib/Charge_rb.html +1 -1
  167. data/doc/files/lib/HTMLDocument_rb.html +1 -1
  168. data/doc/files/lib/Interval_rb.html +1 -1
  169. data/doc/files/lib/Journal_rb.html +106 -0
  170. data/doc/files/lib/KeywordArray_rb.html +106 -0
  171. data/doc/files/lib/KeywordDocumentation_rb.html +1 -1
  172. data/doc/files/lib/Limits_rb.html +1 -1
  173. data/doc/files/lib/Log_rb.html +1 -1
  174. data/doc/files/lib/LogicalExpression_rb.html +1 -3
  175. data/doc/files/lib/LogicalFunction_rb.html +1 -1
  176. data/doc/files/lib/LogicalOperation_rb.html +1 -1
  177. data/doc/files/lib/MacroParser_rb.html +1 -1
  178. data/doc/files/lib/MacroTable_rb.html +1 -1
  179. data/doc/files/lib/MessageHandler_rb.html +1 -1
  180. data/doc/files/lib/Message_rb.html +1 -1
  181. data/doc/files/lib/ProjectFileParser_rb.html +5 -1
  182. data/doc/files/lib/Project_rb.html +5 -1
  183. data/doc/files/lib/PropertyList_rb.html +1 -1
  184. data/doc/files/lib/PropertySet_rb.html +1 -1
  185. data/doc/files/lib/PropertyTreeNode_rb.html +1 -1
  186. data/doc/files/lib/Query_rb.html +1 -1
  187. data/doc/files/lib/RTPNavigator_rb.html +120 -0
  188. data/doc/files/lib/RTPReport_rb.html +118 -0
  189. data/doc/files/lib/RealFormat_rb.html +1 -1
  190. data/doc/files/lib/ResourceScenario_rb.html +1 -1
  191. data/doc/files/lib/Resource_rb.html +1 -1
  192. data/doc/files/lib/RichTextDocument_rb.html +1 -1
  193. data/doc/files/lib/RichTextElement_rb.html +1 -1
  194. data/doc/files/lib/RichTextParser_rb.html +1 -1
  195. data/doc/files/lib/RichTextProtocolExample_rb.html +1 -1
  196. data/doc/files/lib/RichTextProtocolHandler_rb.html +1 -1
  197. data/doc/files/lib/RichTextScanner_rb.html +1 -1
  198. data/doc/files/lib/RichTextSnip_rb.html +1 -1
  199. data/doc/files/lib/RichTextSyntaxRules_rb.html +1 -1
  200. data/doc/files/lib/RichText_rb.html +1 -1
  201. data/doc/files/lib/ScenarioData_rb.html +1 -1
  202. data/doc/files/lib/Scenario_rb.html +1 -1
  203. data/doc/files/lib/Scoreboard_rb.html +1 -1
  204. data/doc/files/lib/ShiftAssignments_rb.html +1 -1
  205. data/doc/files/lib/ShiftScenario_rb.html +1 -1
  206. data/doc/files/lib/Shift_rb.html +1 -1
  207. data/doc/files/lib/SourceFileInfo_rb.html +1 -1
  208. data/doc/files/lib/SyntaxReference_rb.html +1 -1
  209. data/doc/files/lib/TOCEntry_rb.html +1 -1
  210. data/doc/files/lib/TableColumnDefinition_rb.html +1 -1
  211. data/doc/files/lib/TableOfContents_rb.html +1 -1
  212. data/doc/files/lib/TaskDependency_rb.html +1 -1
  213. data/doc/files/lib/TaskJuggler_rb.html +1 -1
  214. data/doc/files/lib/TaskScenario_rb.html +1 -1
  215. data/doc/files/lib/Task_rb.html +1 -1
  216. data/doc/files/lib/TextParser/Pattern_rb.html +1 -1
  217. data/doc/files/lib/TextParser/Rule_rb.html +1 -1
  218. data/doc/files/lib/TextParser/StackElement_rb.html +1 -1
  219. data/doc/files/lib/TextParser/TokenDoc_rb.html +1 -1
  220. data/doc/files/lib/TextParser_rb.html +1 -1
  221. data/doc/files/lib/TextScanner_rb.html +1 -1
  222. data/doc/files/lib/Tj3Config_rb.html +1 -1
  223. data/doc/files/lib/TjException_rb.html +1 -1
  224. data/doc/files/lib/TjTime_rb.html +1 -1
  225. data/doc/files/lib/TjpExample_rb.html +1 -1
  226. data/doc/files/lib/TjpSyntaxRules_rb.html +1 -1
  227. data/doc/files/lib/UTF8String_rb.html +1 -1
  228. data/doc/files/lib/UserManual_rb.html +1 -1
  229. data/doc/files/lib/WorkingHours_rb.html +1 -1
  230. data/doc/files/lib/XMLDocument_rb.html +1 -1
  231. data/doc/files/lib/XMLElement_rb.html +1 -1
  232. data/doc/files/lib/deep_copy_rb.html +106 -0
  233. data/doc/files/lib/ms_test_rb.html +90 -0
  234. data/doc/files/lib/reports/CSVFile_rb.html +1 -1
  235. data/doc/files/lib/reports/ColumnTable_rb.html +1 -1
  236. data/doc/files/lib/reports/GanttChart_rb.html +1 -1
  237. data/doc/files/lib/reports/GanttContainer_rb.html +1 -1
  238. data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  239. data/doc/files/lib/reports/GanttHeader_rb.html +1 -1
  240. data/doc/files/lib/reports/GanttLine_rb.html +1 -1
  241. data/doc/files/lib/reports/GanttLoadStack_rb.html +1 -1
  242. data/doc/files/lib/reports/GanttMilestone_rb.html +1 -1
  243. data/doc/files/lib/reports/GanttRouter_rb.html +1 -1
  244. data/doc/files/lib/reports/GanttTaskBar_rb.html +1 -1
  245. data/doc/files/lib/reports/HTMLGraphics_rb.html +1 -1
  246. data/doc/files/lib/reports/{ReportElement_rb.html → Navigator_rb.html} +6 -8
  247. data/doc/files/lib/reports/ReportBase_rb.html +106 -0
  248. data/doc/files/lib/reports/ReportContext_rb.html +106 -0
  249. data/doc/files/lib/reports/ReportTableCell_rb.html +1 -1
  250. data/doc/files/lib/reports/ReportTableColumn_rb.html +1 -1
  251. data/doc/files/lib/reports/ReportTableLegend_rb.html +1 -1
  252. data/doc/files/lib/reports/ReportTableLine_rb.html +1 -1
  253. data/doc/files/lib/reports/ReportTable_rb.html +1 -1
  254. data/doc/files/lib/reports/Report_rb.html +8 -2
  255. data/doc/files/lib/reports/ResourceListRE_rb.html +2 -2
  256. data/doc/files/lib/reports/{ReportTableElement_rb.html → TableReport_rb.html} +7 -5
  257. data/doc/files/lib/reports/TaskListRE_rb.html +2 -2
  258. data/doc/files/lib/reports/TextReport_rb.html +116 -0
  259. data/doc/files/lib/reports/TjpExportRE_rb.html +2 -2
  260. data/doc/files/lib/taskjuggler3_rb.html +61 -56
  261. data/doc/files/lib/tj3man_rb.html +1 -1
  262. data/doc/fr_class_index.html +41 -3
  263. data/doc/fr_file_index.html +21 -5
  264. data/doc/fr_method_index.html +1069 -959
  265. data/examples/ContactList.html +1467 -0
  266. data/examples/Deliveries.html +485 -0
  267. data/examples/Development.html +2525 -0
  268. data/examples/Overview.html +747 -0
  269. data/examples/Resource Graph.html +616 -0
  270. data/examples/tutorial.tjp +63 -67
  271. data/lib/AttributeBase.rb +27 -31
  272. data/lib/AttributeDefinition.rb +12 -7
  273. data/lib/Attributes.rb +134 -34
  274. data/lib/Interval.rb +2 -0
  275. data/lib/Journal.rb +44 -0
  276. data/lib/{LogicalFlag.rb → KeywordArray.rb} +5 -13
  277. data/lib/KeywordDocumentation.rb +84 -47
  278. data/lib/Limits.rb +7 -5
  279. data/lib/LogicalExpression.rb +1 -1
  280. data/lib/LogicalOperation.rb +33 -0
  281. data/lib/Project.rb +313 -99
  282. data/lib/ProjectFileParser.rb +88 -11
  283. data/lib/PropertyList.rb +2 -1
  284. data/lib/PropertySet.rb +13 -4
  285. data/lib/PropertyTreeNode.rb +34 -15
  286. data/lib/Query.rb +2 -1
  287. data/lib/RTPNavigator.rb +53 -0
  288. data/lib/RTPReport.rb +62 -0
  289. data/lib/RealFormat.rb +28 -10
  290. data/lib/RichTextElement.rb +18 -12
  291. data/lib/RichTextParser.rb +1 -0
  292. data/lib/RichTextProtocolExample.rb +8 -11
  293. data/lib/RichTextProtocolHandler.rb +11 -1
  294. data/lib/RichTextScanner.rb +308 -164
  295. data/lib/RichTextSyntaxRules.rb +24 -0
  296. data/lib/TableColumnDefinition.rb +5 -1
  297. data/lib/TaskJuggler.rb +3 -2
  298. data/lib/TaskScenario.rb +123 -31
  299. data/lib/TextParser.rb +14 -3
  300. data/lib/TextScanner.rb +210 -34
  301. data/lib/Tj3Config.rb +1 -1
  302. data/lib/TjTime.rb +15 -0
  303. data/lib/TjpExample.rb +1 -1
  304. data/lib/TjpSyntaxRules.rb +674 -473
  305. data/lib/WorkingHours.rb +1 -1
  306. data/lib/XMLElement.rb +11 -3
  307. data/lib/deep_copy.rb +72 -0
  308. data/lib/ms_test.rb +27 -0
  309. data/lib/reports/ColumnTable.rb +7 -5
  310. data/lib/reports/GanttChart.rb +60 -34
  311. data/lib/reports/GanttHeader.rb +1 -1
  312. data/lib/reports/GanttRouter.rb +7 -5
  313. data/lib/reports/Navigator.rb +72 -0
  314. data/lib/reports/Report.rb +58 -73
  315. data/lib/reports/ReportBase.rb +241 -0
  316. data/lib/reports/ReportContext.rb +41 -0
  317. data/lib/reports/ReportTable.rb +7 -2
  318. data/lib/reports/ReportTableCell.rb +3 -3
  319. data/lib/reports/ResourceListRE.rb +19 -26
  320. data/lib/reports/{ReportTableElement.rb → TableReport.rb} +297 -97
  321. data/lib/reports/TaskListRE.rb +16 -24
  322. data/lib/reports/TextReport.rb +87 -0
  323. data/lib/reports/TjpExportRE.rb +55 -50
  324. data/lib/taskjuggler3.rb +6 -1
  325. data/manual/Getting_Started +57 -6
  326. data/manual/How_To_Contribute +2 -4
  327. data/manual/Intro +2 -2
  328. data/manual/Reporting_Bugs +9 -2
  329. data/manual/Rich_Text_Attributes +41 -0
  330. data/manual/Tutorial +219 -173
  331. data/tasks/test.rake +3 -0
  332. data/test/TestSuite/CSV-Reports/celltext.tjp +2 -1
  333. data/test/TestSuite/CSV-Reports/resourcereport.tjp +2 -1
  334. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +2 -1
  335. data/test/TestSuite/CSV-Reports/sortByTree.tjp +2 -1
  336. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +2 -1
  337. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +2 -1
  338. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +2 -1
  339. data/test/TestSuite/CSV-Reports/taskreport.tjp +2 -1
  340. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +2 -1
  341. data/test/TestSuite/HTML-Reports/depArrows.tjp +72 -0
  342. data/test/TestSuite/HTML-Reports/reference-export.html +187 -0
  343. data/test/TestSuite/HTML-Reports/reference.tjp +21 -0
  344. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -1
  345. data/test/TestSuite/Scheduler/Correct/AutomaticMilestones.tjp +3 -3
  346. data/test/TestSuite/Scheduler/Correct/Booking.tjp +3 -3
  347. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +37 -0
  348. data/test/TestSuite/Scheduler/Correct/Container.tjp +40 -0
  349. data/test/TestSuite/Scheduler/Correct/Depends.tjp +9 -14
  350. data/test/TestSuite/Scheduler/Correct/Duration.tjp +2 -1
  351. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +20 -29
  352. data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -13
  353. data/test/TestSuite/Scheduler/Correct/Optimize-1.tjp +6 -5
  354. data/test/TestSuite/Scheduler/Correct/Optimize-2.tjp +10 -6
  355. data/test/TestSuite/Scheduler/Correct/Optimize-3.tjp +9 -6
  356. data/test/TestSuite/Scheduler/Correct/Optimize-4.tjp +9 -6
  357. data/test/TestSuite/Scheduler/Correct/Optimize-5.tjp +13 -10
  358. data/test/TestSuite/Scheduler/Correct/Precedes.tjp +9 -14
  359. data/test/TestSuite/Scheduler/Correct/Shift.tjp +9 -8
  360. data/test/TestSuite/Scheduler/Correct/checks.tji +4 -0
  361. data/test/TestSuite/Scheduler/Errors/weak_end_dep.tjp +16 -0
  362. data/test/TestSuite/Scheduler/Errors/weak_start_dep.tjp +16 -0
  363. data/test/TestSuite/Syntax/Correct/Account.tjp +1 -1
  364. data/test/TestSuite/Syntax/Correct/AutoID.tjp +21 -0
  365. data/test/TestSuite/Syntax/Correct/AutoMacros.tjp +2 -1
  366. data/test/TestSuite/Syntax/Correct/Caption.tjp +7 -6
  367. data/test/TestSuite/Syntax/Correct/Celltext.tjp +7 -4
  368. data/test/TestSuite/Syntax/Correct/Comments.tjp +1 -1
  369. data/test/TestSuite/Syntax/Correct/CompletedWork.tji +11 -19
  370. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +4 -3
  371. data/test/TestSuite/Syntax/Correct/Export.tjp +3 -1
  372. data/test/TestSuite/Syntax/Correct/Flags.tjp +2 -1
  373. data/test/TestSuite/Syntax/Correct/HtmlTaskReport.tjp +2 -1
  374. data/test/TestSuite/Syntax/Correct/Journal.tjp +18 -0
  375. data/test/TestSuite/Syntax/Correct/LoadUnits.tjp +2 -1
  376. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +16 -0
  377. data/test/TestSuite/Syntax/Correct/Period.tjp +2 -1
  378. data/test/TestSuite/Syntax/Correct/RawHTML.tjp +4 -2
  379. data/test/TestSuite/Syntax/Correct/Reports.tjp +4 -2
  380. data/test/TestSuite/Syntax/Correct/ResourcePrefix.tji +2 -0
  381. data/test/TestSuite/Syntax/Correct/ResourcePrefix.tjp +23 -0
  382. data/test/TestSuite/Syntax/Correct/Responsible.tjp +1 -1
  383. data/test/TestSuite/Syntax/Correct/Simple.tjp +1 -1
  384. data/test/TestSuite/Syntax/Correct/String.tjp +1 -1
  385. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +2 -1
  386. data/test/TestSuite/Syntax/Correct/tutorial.tjp +92 -70
  387. data/test/TestSuite/Syntax/Errors/bad_comment.tjp +7 -0
  388. data/test/TestSuite/Syntax/Errors/bad_include.tjp +1 -1
  389. data/test/TestSuite/Syntax/Errors/bad_time_zone.tjp +6 -0
  390. data/test/TestSuite/Syntax/Errors/bad_timing_res.tjp +5 -0
  391. data/test/TestSuite/Syntax/Errors/chargeset_master.tjp +1 -1
  392. data/test/TestSuite/Syntax/Errors/container_attribute.tjp +1 -1
  393. data/test/TestSuite/Syntax/Errors/cost_acct_no_top.tjp +3 -2
  394. data/test/TestSuite/Syntax/Errors/cost_rev_same.tjp +1 -1
  395. data/test/TestSuite/Syntax/Errors/eof_in_istring1.tjp +5 -0
  396. data/test/TestSuite/Syntax/Errors/eof_in_istring2.tjp +5 -0
  397. data/test/TestSuite/Syntax/Errors/eof_in_istring3.tjp +6 -0
  398. data/test/TestSuite/Syntax/Errors/eof_in_istring4.tjp +6 -0
  399. data/test/TestSuite/Syntax/Errors/eof_in_istring5.tjp +6 -0
  400. data/test/TestSuite/Syntax/Errors/include_recursion.tji +1 -0
  401. data/test/TestSuite/Syntax/Errors/include_recursion.tjp +7 -0
  402. data/test/TestSuite/Syntax/Errors/junk_after_cut.tjp +6 -0
  403. data/test/TestSuite/Syntax/Errors/navigator_exists.tjp +10 -0
  404. data/test/TestSuite/Syntax/Errors/operand_unkn_flag.tjp +1 -1
  405. data/test/TestSuite/Syntax/Errors/report_end.tjp +1 -1
  406. data/test/TestSuite/Syntax/Errors/report_exists.tjp +10 -0
  407. data/test/TestSuite/Syntax/Errors/report_start.tjp +1 -1
  408. data/test/TestSuite/Syntax/Errors/rev_acct_no_top.tjp +1 -1
  409. data/test/TestSuite/Syntax/Errors/sort_direction.tjp +1 -1
  410. data/test/TestSuite/Syntax/Errors/sort_unknown_scen.tjp +1 -1
  411. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd1.tjp +1 -1
  412. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd2.tjp +1 -1
  413. data/test/TestSuite/Syntax/Errors/sorting_wbs.tjp +1 -1
  414. data/test/TestSuite/Syntax/Errors/too_large_timing_res.tjp +7 -0
  415. data/test/TestSuite/Syntax/Errors/unknown_scenario_idx.tjp +1 -1
  416. data/test/TestSuite/Syntax/Errors/unknown_task.tjp +1 -1
  417. data/test/all.rb +1 -16
  418. data/test/test_CSV-Reports.rb +8 -5
  419. data/test/test_Query.rb +2 -2
  420. data/test/test_RichText.rb +95 -0
  421. data/test/test_Scheduler.rb +8 -4
  422. data/test/test_Syntax.rb +8 -4
  423. data/test/test_deep_copy.rb +83 -0
  424. metadata +549 -487
  425. data/benchmarks/UTF-8-Strings.rb +0 -58
  426. data/doc/classes/TaskJuggler/ReportElement.html +0 -1070
  427. data/doc/classes/TaskJuggler/ReportTableElement.html +0 -644
  428. data/lib/reports/ReportElement.rb +0 -427
  429. data/test/TestSuite/Syntax/Correct/csvtest +0 -16
  430. data/test/TestSuite/Syntax/Errors/no_csv_suffix.tjp +0 -10
  431. data/test/TestSuite/Syntax/Errors/no_html_suffix.tjp +0 -10
  432. data/test/TestSuite/Syntax/Errors/report_redifinition.tjp +0 -10
@@ -70,8 +70,12 @@
70
70
  <td><strong>Parent:</strong></td>
71
71
  <td>
72
72
 
73
+ <a href="../Object.html">
74
+
73
75
  Object
74
76
 
77
+ </a>
78
+
75
79
  </td>
76
80
  </tr>
77
81
 
@@ -105,21 +109,21 @@ generateByWidth or generateByResolution.
105
109
 
106
110
  <div class="name-list">
107
111
 
108
- <a href="#M000305">addTask</a>&nbsp;&nbsp;
112
+ <a href="#M000546">addTask</a>&nbsp;&nbsp;
109
113
 
110
- <a href="#M000310">dateToX</a>&nbsp;&nbsp;
114
+ <a href="#M000551">dateToX</a>&nbsp;&nbsp;
111
115
 
112
- <a href="#M000307">generateByScale</a>&nbsp;&nbsp;
116
+ <a href="#M000548">generateByScale</a>&nbsp;&nbsp;
113
117
 
114
- <a href="#M000306">generateByWidth</a>&nbsp;&nbsp;
118
+ <a href="#M000547">generateByWidth</a>&nbsp;&nbsp;
115
119
 
116
- <a href="#M000311">hasScrollbar?</a>&nbsp;&nbsp;
120
+ <a href="#M000552">hasScrollbar?</a>&nbsp;&nbsp;
117
121
 
118
- <a href="#M000304">new</a>&nbsp;&nbsp;
122
+ <a href="#M000545">new</a>&nbsp;&nbsp;
119
123
 
120
- <a href="#M000309">to_csv</a>&nbsp;&nbsp;
124
+ <a href="#M000550">to_csv</a>&nbsp;&nbsp;
121
125
 
122
- <a href="#M000308">to_html</a>&nbsp;&nbsp;
126
+ <a href="#M000549">to_html</a>&nbsp;&nbsp;
123
127
 
124
128
  </div>
125
129
  </div>
@@ -140,6 +144,30 @@ generateByWidth or generateByResolution.
140
144
 
141
145
  <div id="section">
142
146
 
147
+ <div id="constants-list">
148
+ <h3 class="section-bar">Constants</h3>
149
+
150
+ <div class="name-list">
151
+ <table summary="Constants">
152
+
153
+ <tr class="top-aligned-row context-row">
154
+ <td class="context-item-name">SCROLLBARHEIGHT</td>
155
+ <td>=</td>
156
+ <td class="context-item-value">20</td>
157
+
158
+ <td>&nbsp;</td>
159
+ <td class="context-item-desc">
160
+ The height in pixels of a horizontal scrollbar on an HTML page. This value
161
+ should be large enough to work for all browsers.
162
+
163
+ </td>
164
+
165
+ </tr>
166
+
167
+ </table>
168
+ </div>
169
+ </div>
170
+
143
171
 
144
172
 
145
173
  <div id="attribute-list">
@@ -240,12 +268,12 @@ generateByWidth or generateByResolution.
240
268
  <h3 class="section-bar">Public Class methods</h3>
241
269
 
242
270
 
243
- <div id="method-M000304" class="method-detail">
244
- <a name="M000304"></a>
271
+ <div id="method-M000545" class="method-detail">
272
+ <a name="M000545"></a>
245
273
 
246
274
  <div class="method-heading">
247
275
 
248
- <a href="#M000304" class="method-signature">
276
+ <a href="#M000545" class="method-signature">
249
277
 
250
278
  <span class="method-name">new</span><span class="method-args">(now, weekStartsMonday, table = nil)</span>
251
279
 
@@ -261,74 +289,73 @@ do much right now. We still need more information about the chart before we
261
289
  can actually generate it. <em>now</em> is the date that should be used as
262
290
  current date. <em>weekStartsMonday</em> is true if the weeks should start
263
291
  on Mondays instead of Sundays. <em>table</em> is a reference to the <a
264
- href="ReportTableElement.html">ReportTableElement</a> that the chart is
265
- part of.
292
+ href="TableReport.html">TableReport</a> that the chart is part of.
266
293
  </p>
267
294
 
268
295
  <p><a class="source-toggle" href="#"
269
- onclick="toggleCode('M000304-source');return false;">[Source]</a></p>
270
- <div class="method-source-code" id="M000304-source">
296
+ onclick="toggleCode('M000545-source');return false;">[Source]</a></p>
297
+ <div class="method-source-code" id="M000545-source">
271
298
  <pre>
272
- <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 41</span>
273
- 41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">now</span>, <span class="ruby-identifier">weekStartsMonday</span>, <span class="ruby-identifier">table</span> = <span class="ruby-keyword kw">nil</span>)
274
- 42: <span class="ruby-comment cmt"># The start and end dates of the reported interval.</span>
275
- 43: <span class="ruby-ivar">@start</span> = <span class="ruby-keyword kw">nil</span>
276
- 44: <span class="ruby-ivar">@end</span> = <span class="ruby-keyword kw">nil</span>
277
- 45: <span class="ruby-ivar">@now</span> = <span class="ruby-identifier">now</span>
278
- 46: <span class="ruby-ivar">@table</span> = <span class="ruby-identifier">table</span>
279
- 47:
280
- 48: <span class="ruby-comment cmt"># This defines the possible horizontal scales that the Gantt chart can</span>
281
- 49: <span class="ruby-comment cmt"># have. The scales differ in their resolution and the amount of detail</span>
282
- 50: <span class="ruby-comment cmt"># that is displayed. A scale is defined by its name. The _name_ must be</span>
283
- 51: <span class="ruby-comment cmt"># unique and can be used to select the scale. The _stepSize_ defines the</span>
284
- 52: <span class="ruby-comment cmt"># width of a scale step in pixels. The _stepsToFunc_ is a TjTime method</span>
285
- 53: <span class="ruby-comment cmt"># that determines the number of steps between 2 dates. _minTimeOff_</span>
286
- 54: <span class="ruby-comment cmt"># defines the minimum required length of an time-off interval that is</span>
287
- 55: <span class="ruby-comment cmt"># displayed in this scale.</span>
288
- 56: <span class="ruby-ivar">@@scales</span> = [
289
- 57: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'hour'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">20</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:hoursTo</span>,
290
- 58: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">5</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> },
291
- 59: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'day'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">20</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:daysTo</span>,
292
- 60: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">6</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> },
293
- 61: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'week'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">20</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:weeksTo</span>,
294
- 62: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> },
295
- 63: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'month'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">35</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:monthsTo</span>,
296
- 64: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">5</span> <span class="ruby-operator">*</span> <span class="ruby-value">24</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> },
297
- 65: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'quarter'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">28</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:quartersTo</span>,
298
- 66: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">-1</span> },
299
- 67: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'year'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">20</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:yearsTo</span>,
300
- 68: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">-1</span> }
301
- 69: ]
302
- 70: <span class="ruby-comment cmt"># This points to one of the scales above and marks the current scale.</span>
303
- 71: <span class="ruby-ivar">@scale</span> = <span class="ruby-keyword kw">nil</span>
304
- 72: <span class="ruby-comment cmt"># The height of the chart (without the header)</span>
305
- 73: <span class="ruby-ivar">@height</span> = <span class="ruby-value">0</span>
306
- 74: <span class="ruby-comment cmt"># The width of the chart in pixels.</span>
307
- 75: <span class="ruby-ivar">@width</span> = <span class="ruby-value">0</span>
308
- 76: <span class="ruby-comment cmt"># The width of the view that the chart is presented in. If it's nil, the</span>
309
- 77: <span class="ruby-comment cmt"># view will be adapted to the width of the chart.</span>
310
- 78: <span class="ruby-ivar">@viewWidth</span> = <span class="ruby-keyword kw">nil</span>
311
- 79: <span class="ruby-comment cmt"># True of the week starts on a Monday.</span>
312
- 80: <span class="ruby-ivar">@weekStartsMonday</span> = <span class="ruby-identifier">weekStartsMonday</span>
313
- 81:
314
- 82: <span class="ruby-comment cmt"># Reference to the GanttHeader object that models the chart header.</span>
315
- 83: <span class="ruby-ivar">@header</span> = <span class="ruby-keyword kw">nil</span>
316
- 84: <span class="ruby-comment cmt"># The GanttLine objects that model the lines of the chart.</span>
317
- 85: <span class="ruby-ivar">@lines</span> = []
318
- 86: <span class="ruby-comment cmt"># The router for dependency lines.</span>
319
- 87: <span class="ruby-ivar">@router</span> = <span class="ruby-keyword kw">nil</span>
320
- 88: <span class="ruby-comment cmt"># This dictionary stores primary task lines indexed by their task. To</span>
321
- 89: <span class="ruby-comment cmt"># handle multiple scenarios, the dictionary stored the lines in an Array.</span>
322
- 90: <span class="ruby-comment cmt"># This is used to generate dependency arrows.</span>
323
- 91: <span class="ruby-ivar">@tasks</span> = {}
324
- 92: <span class="ruby-comment cmt"># This is a list of the dependency lines. Each entry is an Array of [x, y]</span>
325
- 93: <span class="ruby-comment cmt"># coordinate pairs.</span>
326
- 94: <span class="ruby-ivar">@depArrows</span> = []
327
- 95: <span class="ruby-comment cmt"># This is the list of arrow heads used for the dependency arrows. It</span>
328
- 96: <span class="ruby-comment cmt"># contains an Array of [ x, y ] coordinates that mark the tip of the</span>
329
- 97: <span class="ruby-comment cmt"># arrow.</span>
330
- 98: <span class="ruby-ivar">@arrowHeads</span> = []
331
- 99: <span class="ruby-keyword kw">end</span>
299
+ <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 45</span>
300
+ 45: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">now</span>, <span class="ruby-identifier">weekStartsMonday</span>, <span class="ruby-identifier">table</span> = <span class="ruby-keyword kw">nil</span>)
301
+ 46: <span class="ruby-comment cmt"># The start and end dates of the reported interval.</span>
302
+ 47: <span class="ruby-ivar">@start</span> = <span class="ruby-keyword kw">nil</span>
303
+ 48: <span class="ruby-ivar">@end</span> = <span class="ruby-keyword kw">nil</span>
304
+ 49: <span class="ruby-ivar">@now</span> = <span class="ruby-identifier">now</span>
305
+ 50: <span class="ruby-ivar">@table</span> = <span class="ruby-identifier">table</span>
306
+ 51:
307
+ 52: <span class="ruby-comment cmt"># This defines the possible horizontal scales that the Gantt chart can</span>
308
+ 53: <span class="ruby-comment cmt"># have. The scales differ in their resolution and the amount of detail</span>
309
+ 54: <span class="ruby-comment cmt"># that is displayed. A scale is defined by its name. The _name_ must be</span>
310
+ 55: <span class="ruby-comment cmt"># unique and can be used to select the scale. The _stepSize_ defines the</span>
311
+ 56: <span class="ruby-comment cmt"># width of a scale step in pixels. The _stepsToFunc_ is a TjTime method</span>
312
+ 57: <span class="ruby-comment cmt"># that determines the number of steps between 2 dates. _minTimeOff_</span>
313
+ 58: <span class="ruby-comment cmt"># defines the minimum required length of an time-off interval that is</span>
314
+ 59: <span class="ruby-comment cmt"># displayed in this scale.</span>
315
+ 60: <span class="ruby-ivar">@@scales</span> = [
316
+ 61: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'hour'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">20</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:hoursTo</span>,
317
+ 62: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">5</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> },
318
+ 63: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'day'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">20</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:daysTo</span>,
319
+ 64: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">6</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> },
320
+ 65: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'week'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">20</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:weeksTo</span>,
321
+ 66: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">24</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> },
322
+ 67: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'month'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">35</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:monthsTo</span>,
323
+ 68: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">5</span> <span class="ruby-operator">*</span> <span class="ruby-value">24</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> },
324
+ 69: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'quarter'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">28</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:quartersTo</span>,
325
+ 70: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">-1</span> },
326
+ 71: { <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'year'</span>, <span class="ruby-value str">'stepSize'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">20</span>, <span class="ruby-value str">'stepsToFunc'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:yearsTo</span>,
327
+ 72: <span class="ruby-value str">'minTimeOff'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">-1</span> }
328
+ 73: ]
329
+ 74: <span class="ruby-comment cmt"># This points to one of the scales above and marks the current scale.</span>
330
+ 75: <span class="ruby-ivar">@scale</span> = <span class="ruby-keyword kw">nil</span>
331
+ 76: <span class="ruby-comment cmt"># The height of the chart (without the header)</span>
332
+ 77: <span class="ruby-ivar">@height</span> = <span class="ruby-value">0</span>
333
+ 78: <span class="ruby-comment cmt"># The width of the chart in pixels.</span>
334
+ 79: <span class="ruby-ivar">@width</span> = <span class="ruby-value">0</span>
335
+ 80: <span class="ruby-comment cmt"># The width of the view that the chart is presented in. If it's nil, the</span>
336
+ 81: <span class="ruby-comment cmt"># view will be adapted to the width of the chart.</span>
337
+ 82: <span class="ruby-ivar">@viewWidth</span> = <span class="ruby-keyword kw">nil</span>
338
+ 83: <span class="ruby-comment cmt"># True of the week starts on a Monday.</span>
339
+ 84: <span class="ruby-ivar">@weekStartsMonday</span> = <span class="ruby-identifier">weekStartsMonday</span>
340
+ 85:
341
+ 86: <span class="ruby-comment cmt"># Reference to the GanttHeader object that models the chart header.</span>
342
+ 87: <span class="ruby-ivar">@header</span> = <span class="ruby-keyword kw">nil</span>
343
+ 88: <span class="ruby-comment cmt"># The GanttLine objects that model the lines of the chart.</span>
344
+ 89: <span class="ruby-ivar">@lines</span> = []
345
+ 90: <span class="ruby-comment cmt"># The router for dependency lines.</span>
346
+ 91: <span class="ruby-ivar">@router</span> = <span class="ruby-keyword kw">nil</span>
347
+ 92: <span class="ruby-comment cmt"># This dictionary stores primary task lines indexed by their task. To</span>
348
+ 93: <span class="ruby-comment cmt"># handle multiple scenarios, the dictionary stored the lines in an Array.</span>
349
+ 94: <span class="ruby-comment cmt"># This is used to generate dependency arrows.</span>
350
+ 95: <span class="ruby-ivar">@tasks</span> = {}
351
+ 96: <span class="ruby-comment cmt"># This is a list of the dependency lines. Each entry is an Array of [x, y]</span>
352
+ 97: <span class="ruby-comment cmt"># coordinate pairs.</span>
353
+ 98: <span class="ruby-ivar">@depArrows</span> = []
354
+ 99: <span class="ruby-comment cmt"># This is the list of arrow heads used for the dependency arrows. It</span>
355
+ 100: <span class="ruby-comment cmt"># contains an Array of [ x, y ] coordinates that mark the tip of the</span>
356
+ 101: <span class="ruby-comment cmt"># arrow.</span>
357
+ 102: <span class="ruby-ivar">@arrowHeads</span> = []
358
+ 103: <span class="ruby-keyword kw">end</span>
332
359
  </pre>
333
360
  </div>
334
361
 
@@ -339,12 +366,12 @@ part of.
339
366
  <h3 class="section-bar">Public Instance methods</h3>
340
367
 
341
368
 
342
- <div id="method-M000305" class="method-detail">
343
- <a name="M000305"></a>
369
+ <div id="method-M000546" class="method-detail">
370
+ <a name="M000546"></a>
344
371
 
345
372
  <div class="method-heading">
346
373
 
347
- <a href="#M000305" class="method-signature">
374
+ <a href="#M000546" class="method-signature">
348
375
 
349
376
  <span class="method-name">addTask</span><span class="method-args">(task, line)</span>
350
377
 
@@ -361,19 +388,19 @@ corresponding primary <a href="ReportTableLine.html">ReportTableLine</a>.
361
388
  </p>
362
389
 
363
390
  <p><a class="source-toggle" href="#"
364
- onclick="toggleCode('M000305-source');return false;">[Source]</a></p>
365
- <div class="method-source-code" id="M000305-source">
391
+ onclick="toggleCode('M000546-source');return false;">[Source]</a></p>
392
+ <div class="method-source-code" id="M000546-source">
366
393
  <pre>
367
- <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 103</span>
368
- 103: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addTask</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">line</span>)
369
- 104: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
370
- 105: <span class="ruby-comment cmt"># Append the line to the existing lines.</span>
371
- 106: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">task</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line</span>
372
- 107: <span class="ruby-keyword kw">else</span>
373
- 108: <span class="ruby-comment cmt"># Add a new Array for this tasks and store the first line.</span>
374
- 109: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">task</span>] = [ <span class="ruby-identifier">line</span> ]
375
- 110: <span class="ruby-keyword kw">end</span>
376
- 111: <span class="ruby-keyword kw">end</span>
394
+ <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 107</span>
395
+ 107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addTask</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">line</span>)
396
+ 108: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tasks</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">task</span>)
397
+ 109: <span class="ruby-comment cmt"># Append the line to the existing lines.</span>
398
+ 110: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">task</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line</span>
399
+ 111: <span class="ruby-keyword kw">else</span>
400
+ 112: <span class="ruby-comment cmt"># Add a new Array for this tasks and store the first line.</span>
401
+ 113: <span class="ruby-ivar">@tasks</span>[<span class="ruby-identifier">task</span>] = [ <span class="ruby-identifier">line</span> ]
402
+ 114: <span class="ruby-keyword kw">end</span>
403
+ 115: <span class="ruby-keyword kw">end</span>
377
404
  </pre>
378
405
  </div>
379
406
 
@@ -381,12 +408,12 @@ corresponding primary <a href="ReportTableLine.html">ReportTableLine</a>.
381
408
  </div>
382
409
 
383
410
 
384
- <div id="method-M000310" class="method-detail">
385
- <a name="M000310"></a>
411
+ <div id="method-M000551" class="method-detail">
412
+ <a name="M000551"></a>
386
413
 
387
414
  <div class="method-heading">
388
415
 
389
- <a href="#M000310" class="method-signature">
416
+ <a href="#M000551" class="method-signature">
390
417
 
391
418
  <span class="method-name">dateToX</span><span class="method-args">(date)</span>
392
419
 
@@ -402,13 +429,13 @@ Gantt chart.
402
429
  </p>
403
430
 
404
431
  <p><a class="source-toggle" href="#"
405
- onclick="toggleCode('M000310-source');return false;">[Source]</a></p>
406
- <div class="method-source-code" id="M000310-source">
432
+ onclick="toggleCode('M000551-source');return false;">[Source]</a></p>
433
+ <div class="method-source-code" id="M000551-source">
407
434
  <pre>
408
- <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 203</span>
409
- 203: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dateToX</span>(<span class="ruby-identifier">date</span>)
410
- 204: (<span class="ruby-ivar">@width</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@end</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@start</span>)) <span class="ruby-operator">*</span> (<span class="ruby-identifier">date</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@start</span>)
411
- 205: <span class="ruby-keyword kw">end</span>
435
+ <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 209</span>
436
+ 209: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dateToX</span>(<span class="ruby-identifier">date</span>)
437
+ 210: (<span class="ruby-ivar">@width</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@end</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@start</span>)) <span class="ruby-operator">*</span> (<span class="ruby-identifier">date</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@start</span>)
438
+ 211: <span class="ruby-keyword kw">end</span>
412
439
  </pre>
413
440
  </div>
414
441
 
@@ -416,12 +443,12 @@ Gantt chart.
416
443
  </div>
417
444
 
418
445
 
419
- <div id="method-M000307" class="method-detail">
420
- <a name="M000307"></a>
446
+ <div id="method-M000548" class="method-detail">
447
+ <a name="M000548"></a>
421
448
 
422
449
  <div class="method-heading">
423
450
 
424
- <a href="#M000307" class="method-signature">
451
+ <a href="#M000548" class="method-signature">
425
452
 
426
453
  <span class="method-name">generateByScale</span><span class="method-args">(periodStart, periodEnd, scaleName)</span>
427
454
 
@@ -440,20 +467,20 @@ created for this chart.
440
467
  </p>
441
468
 
442
469
  <p><a class="source-toggle" href="#"
443
- onclick="toggleCode('M000307-source');return false;">[Source]</a></p>
444
- <div class="method-source-code" id="M000307-source">
470
+ onclick="toggleCode('M000548-source');return false;">[Source]</a></p>
471
+ <div class="method-source-code" id="M000548-source">
445
472
  <pre>
446
- <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 125</span>
447
- 125: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateByScale</span>(<span class="ruby-identifier">periodStart</span>, <span class="ruby-identifier">periodEnd</span>, <span class="ruby-identifier">scaleName</span>)
448
- 126: <span class="ruby-ivar">@start</span> = <span class="ruby-identifier">periodStart</span>
449
- 127: <span class="ruby-ivar">@end</span> = <span class="ruby-identifier">periodEnd</span>
450
- 128: <span class="ruby-ivar">@scale</span> = <span class="ruby-identifier">scaleByName</span>(<span class="ruby-identifier">scaleName</span>)
451
- 129: <span class="ruby-ivar">@stepSize</span> = <span class="ruby-ivar">@scale</span>[<span class="ruby-value str">'stepSize'</span>]
452
- 130: <span class="ruby-identifier">steps</span> = <span class="ruby-ivar">@start</span>.<span class="ruby-identifier">send</span>(<span class="ruby-ivar">@scale</span>[<span class="ruby-value str">'stepsToFunc'</span>], <span class="ruby-ivar">@end</span>)
453
- 131: <span class="ruby-ivar">@width</span> = <span class="ruby-ivar">@stepSize</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">steps</span>
454
- 132:
455
- 133: <span class="ruby-ivar">@header</span> = <span class="ruby-constant">GanttHeader</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>)
456
- 134: <span class="ruby-keyword kw">end</span>
473
+ <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 129</span>
474
+ 129: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateByScale</span>(<span class="ruby-identifier">periodStart</span>, <span class="ruby-identifier">periodEnd</span>, <span class="ruby-identifier">scaleName</span>)
475
+ 130: <span class="ruby-ivar">@start</span> = <span class="ruby-identifier">periodStart</span>
476
+ 131: <span class="ruby-ivar">@end</span> = <span class="ruby-identifier">periodEnd</span>
477
+ 132: <span class="ruby-ivar">@scale</span> = <span class="ruby-identifier">scaleByName</span>(<span class="ruby-identifier">scaleName</span>)
478
+ 133: <span class="ruby-ivar">@stepSize</span> = <span class="ruby-ivar">@scale</span>[<span class="ruby-value str">'stepSize'</span>]
479
+ 134: <span class="ruby-identifier">steps</span> = <span class="ruby-ivar">@start</span>.<span class="ruby-identifier">send</span>(<span class="ruby-ivar">@scale</span>[<span class="ruby-value str">'stepsToFunc'</span>], <span class="ruby-ivar">@end</span>)
480
+ 135: <span class="ruby-ivar">@width</span> = <span class="ruby-ivar">@stepSize</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">steps</span>
481
+ 136:
482
+ 137: <span class="ruby-ivar">@header</span> = <span class="ruby-constant">GanttHeader</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>)
483
+ 138: <span class="ruby-keyword kw">end</span>
457
484
  </pre>
458
485
  </div>
459
486
 
@@ -461,12 +488,12 @@ created for this chart.
461
488
  </div>
462
489
 
463
490
 
464
- <div id="method-M000306" class="method-detail">
465
- <a name="M000306"></a>
491
+ <div id="method-M000547" class="method-detail">
492
+ <a name="M000547"></a>
466
493
 
467
494
  <div class="method-heading">
468
495
 
469
- <a href="#M000306" class="method-signature">
496
+ <a href="#M000547" class="method-signature">
470
497
 
471
498
  <span class="method-name">generateByWidth</span><span class="method-args">(periodStart, periodEnd, width)</span>
472
499
 
@@ -477,16 +504,16 @@ created for this chart.
477
504
  <div class="method-description">
478
505
 
479
506
  <p><a class="source-toggle" href="#"
480
- onclick="toggleCode('M000306-source');return false;">[Source]</a></p>
481
- <div class="method-source-code" id="M000306-source">
507
+ onclick="toggleCode('M000547-source');return false;">[Source]</a></p>
508
+ <div class="method-source-code" id="M000547-source">
482
509
  <pre>
483
- <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 114</span>
484
- 114: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateByWidth</span>(<span class="ruby-identifier">periodStart</span>, <span class="ruby-identifier">periodEnd</span>, <span class="ruby-identifier">width</span>)
485
- 115: <span class="ruby-ivar">@start</span> = <span class="ruby-identifier">periodStart</span>
486
- 116: <span class="ruby-ivar">@end</span> = <span class="ruby-identifier">periodEnd</span>
487
- 117: <span class="ruby-ivar">@width</span> = <span class="ruby-identifier">width</span>
488
- 118: <span class="ruby-comment cmt"># TODO</span>
489
- 119: <span class="ruby-keyword kw">end</span>
510
+ <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 118</span>
511
+ 118: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateByWidth</span>(<span class="ruby-identifier">periodStart</span>, <span class="ruby-identifier">periodEnd</span>, <span class="ruby-identifier">width</span>)
512
+ 119: <span class="ruby-ivar">@start</span> = <span class="ruby-identifier">periodStart</span>
513
+ 120: <span class="ruby-ivar">@end</span> = <span class="ruby-identifier">periodEnd</span>
514
+ 121: <span class="ruby-ivar">@width</span> = <span class="ruby-identifier">width</span>
515
+ 122: <span class="ruby-comment cmt"># TODO</span>
516
+ 123: <span class="ruby-keyword kw">end</span>
490
517
  </pre>
491
518
  </div>
492
519
 
@@ -494,12 +521,12 @@ created for this chart.
494
521
  </div>
495
522
 
496
523
 
497
- <div id="method-M000311" class="method-detail">
498
- <a name="M000311"></a>
524
+ <div id="method-M000552" class="method-detail">
525
+ <a name="M000552"></a>
499
526
 
500
527
  <div class="method-heading">
501
528
 
502
- <a href="#M000311" class="method-signature">
529
+ <a href="#M000552" class="method-signature">
503
530
 
504
531
  <span class="method-name">hasScrollbar?</span><span class="method-args">()</span>
505
532
 
@@ -514,13 +541,13 @@ Returns true if the chart includes a scrollbar.
514
541
  </p>
515
542
 
516
543
  <p><a class="source-toggle" href="#"
517
- onclick="toggleCode('M000311-source');return false;">[Source]</a></p>
518
- <div class="method-source-code" id="M000311-source">
544
+ onclick="toggleCode('M000552-source');return false;">[Source]</a></p>
545
+ <div class="method-source-code" id="M000552-source">
519
546
  <pre>
520
- <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 217</span>
521
- 217: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hasScrollbar?</span>
522
- 218: <span class="ruby-ivar">@viewWidth</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@viewWidth</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@width</span>
523
- 219: <span class="ruby-keyword kw">end</span>
547
+ <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 223</span>
548
+ 223: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hasScrollbar?</span>
549
+ 224: <span class="ruby-ivar">@viewWidth</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@viewWidth</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@width</span>
550
+ 225: <span class="ruby-keyword kw">end</span>
524
551
  </pre>
525
552
  </div>
526
553
 
@@ -528,12 +555,12 @@ Returns true if the chart includes a scrollbar.
528
555
  </div>
529
556
 
530
557
 
531
- <div id="method-M000309" class="method-detail">
532
- <a name="M000309"></a>
558
+ <div id="method-M000550" class="method-detail">
559
+ <a name="M000550"></a>
533
560
 
534
561
  <div class="method-heading">
535
562
 
536
- <a href="#M000309" class="method-signature">
563
+ <a href="#M000550" class="method-signature">
537
564
 
538
565
  <span class="method-name">to_csv</span><span class="method-args">(csv)</span>
539
566
 
@@ -548,13 +575,13 @@ This is a noop function.
548
575
  </p>
549
576
 
550
577
  <p><a class="source-toggle" href="#"
551
- onclick="toggleCode('M000309-source');return false;">[Source]</a></p>
552
- <div class="method-source-code" id="M000309-source">
578
+ onclick="toggleCode('M000550-source');return false;">[Source]</a></p>
579
+ <div class="method-source-code" id="M000550-source">
553
580
  <pre>
554
- <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 197</span>
555
- 197: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_csv</span>(<span class="ruby-identifier">csv</span>)
556
- 198: <span class="ruby-comment cmt"># Can't put a Gantt chart into a CSV file.</span>
557
- 199: <span class="ruby-keyword kw">end</span>
581
+ <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 203</span>
582
+ 203: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_csv</span>(<span class="ruby-identifier">csv</span>)
583
+ 204: <span class="ruby-comment cmt"># Can't put a Gantt chart into a CSV file.</span>
584
+ 205: <span class="ruby-keyword kw">end</span>
558
585
  </pre>
559
586
  </div>
560
587
 
@@ -562,12 +589,12 @@ This is a noop function.
562
589
  </div>
563
590
 
564
591
 
565
- <div id="method-M000308" class="method-detail">
566
- <a name="M000308"></a>
592
+ <div id="method-M000549" class="method-detail">
593
+ <a name="M000549"></a>
567
594
 
568
595
  <div class="method-heading">
569
596
 
570
- <a href="#M000308" class="method-signature">
597
+ <a href="#M000549" class="method-signature">
571
598
 
572
599
  <span class="method-name">to_html</span><span class="method-args">()</span>
573
600
 
@@ -582,68 +609,70 @@ Convert the chart into an HTML representation.
582
609
  </p>
583
610
 
584
611
  <p><a class="source-toggle" href="#"
585
- onclick="toggleCode('M000308-source');return false;">[Source]</a></p>
586
- <div class="method-source-code" id="M000308-source">
612
+ onclick="toggleCode('M000549-source');return false;">[Source]</a></p>
613
+ <div class="method-source-code" id="M000549-source">
587
614
  <pre>
588
- <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 137</span>
589
- 137: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_html</span>
590
- 138: <span class="ruby-identifier">completeChart</span>
591
- 139:
592
- 140: <span class="ruby-comment cmt"># The chart is rendered into a cell that extends over the full height of</span>
593
- 141: <span class="ruby-comment cmt"># the table. No other cells for this column will be generated. In case</span>
594
- 142: <span class="ruby-comment cmt"># there is a scrollbar, the table will have an extra line to hold the</span>
595
- 143: <span class="ruby-comment cmt"># scrollbar.</span>
596
- 144: <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>,
597
- 145: <span class="ruby-value str">'rowspan'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{2 + @lines.length + (hasScrollbar? ? 1 : 0)}&quot;</span>,
598
- 146: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'padding:0px; vertical-align:top;'</span>)
599
- 147: <span class="ruby-comment cmt"># Now we generate two 'div's nested into each other. The first div is the</span>
600
- 148: <span class="ruby-comment cmt"># view. It may contain a scrollbar if the second div is wider than the</span>
601
- 149: <span class="ruby-comment cmt"># first one. In case we need a scrollbar The outer div is 18 pixels</span>
602
- 150: <span class="ruby-comment cmt"># heigher to hold the scrollbar. Unfortunately this must be a hardcoded</span>
603
- 151: <span class="ruby-comment cmt"># value even though the height of the scrollbar varies from system to</span>
604
- 152: <span class="ruby-comment cmt"># system. This value should be good enough for most systems.</span>
605
- 153: <span class="ruby-identifier">td</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">scrollDiv</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'div'</span>,
606
- 154: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'position:relative; '</span> <span class="ruby-operator">+</span>
607
- 155: <span class="ruby-value str">&quot;overflow:auto; &quot;</span> <span class="ruby-operator">+</span>
608
- 156: <span class="ruby-node">&quot;width:#{hasScrollbar? ? @viewWidth : @width}px; &quot;</span> <span class="ruby-operator">+</span>
609
- 157: <span class="ruby-node">&quot;height:#{@height + (hasScrollbar? ? 18 : 0)}px;&quot;</span>))
610
- 158: <span class="ruby-identifier">scrollDiv</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">div</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'div'</span>,
611
- 159: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;margin:0px; padding:0px; &quot;</span> <span class="ruby-operator">+</span>
612
- 160: <span class="ruby-value str">&quot;position:absolute; &quot;</span> <span class="ruby-operator">+</span>
613
- 161: <span class="ruby-value str">&quot;top:0px; left:0px; &quot;</span> <span class="ruby-operator">+</span>
614
- 162: <span class="ruby-node">&quot;width:#{@width.to_i}px; &quot;</span> <span class="ruby-operator">+</span>
615
- 163: <span class="ruby-node">&quot;height:#{@height}px; &quot;</span> <span class="ruby-operator">+</span>
616
- 164: <span class="ruby-value str">&quot;font-size:10px;&quot;</span>))
617
- 165: <span class="ruby-comment cmt"># Add the header.</span>
618
- 166: <span class="ruby-identifier">div</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@header</span>.<span class="ruby-identifier">to_html</span>
619
- 167: <span class="ruby-comment cmt"># These are the lines of the chart.</span>
620
- 168: <span class="ruby-ivar">@lines</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
621
- 169: <span class="ruby-identifier">div</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">to_html</span>
622
- 170: <span class="ruby-keyword kw">end</span>
623
- 171:
624
- 172: <span class="ruby-comment cmt"># This is used for debugging and testing only.</span>
625
- 173: <span class="ruby-comment cmt">#div &lt;&lt; @router.to_html</span>
626
- 174:
627
- 175: <span class="ruby-comment cmt"># Render the dependency lines.</span>
628
- 176: <span class="ruby-ivar">@depArrows</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arrow</span><span class="ruby-operator">|</span>
629
- 177: <span class="ruby-identifier">xx</span> = <span class="ruby-identifier">yy</span> = <span class="ruby-keyword kw">nil</span>
630
- 178: <span class="ruby-identifier">arrow</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span><span class="ruby-operator">|</span>
631
- 179: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">xx</span>
632
- 180: <span class="ruby-identifier">div</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">lineToHTML</span>(<span class="ruby-identifier">xx</span>, <span class="ruby-identifier">yy</span>, <span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-value str">'depline'</span>)
633
- 181: <span class="ruby-keyword kw">end</span>
634
- 182: <span class="ruby-identifier">xx</span> = <span class="ruby-identifier">x</span>
635
- 183: <span class="ruby-identifier">yy</span> = <span class="ruby-identifier">y</span>
636
- 184: <span class="ruby-keyword kw">end</span>
637
- 185: <span class="ruby-keyword kw">end</span>
638
- 186: <span class="ruby-comment cmt"># And the corresponsing arrow heads.</span>
639
- 187: <span class="ruby-ivar">@arrowHeads</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span><span class="ruby-operator">|</span>
640
- 188: <span class="ruby-value">6</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
641
- 189: <span class="ruby-identifier">div</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">lineToHTML</span>(<span class="ruby-identifier">x</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span>, <span class="ruby-identifier">y</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span>, <span class="ruby-identifier">x</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span>, <span class="ruby-identifier">y</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">i</span>, <span class="ruby-value str">'depline'</span>)
615
+ <span class="ruby-comment cmt"># File lib/reports/GanttChart.rb, line 141</span>
616
+ 141: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_html</span>
617
+ 142: <span class="ruby-identifier">completeChart</span>
618
+ 143:
619
+ 144: <span class="ruby-comment cmt"># The chart is rendered into a cell that extends over the full height of</span>
620
+ 145: <span class="ruby-comment cmt"># the table. No other cells for this column will be generated. In case</span>
621
+ 146: <span class="ruby-comment cmt"># there is a scrollbar, the table will have an extra line to hold the</span>
622
+ 147: <span class="ruby-comment cmt"># scrollbar.</span>
623
+ 148: <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>,
624
+ 149: <span class="ruby-value str">'rowspan'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{2 + @lines.length + (hasScrollbar? ? 1 : 0)}&quot;</span>,
625
+ 150: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'padding:0px; vertical-align:top;'</span>)
626
+ 151: <span class="ruby-comment cmt"># Now we generate two 'div's nested into each other. The first div is the</span>
627
+ 152: <span class="ruby-comment cmt"># view. It may contain a scrollbar if the second div is wider than the</span>
628
+ 153: <span class="ruby-comment cmt"># first one. In case we need a scrollbar The outer div is</span>
629
+ 154: <span class="ruby-comment cmt"># SCROLLBARHEIGHT pixels heigher to hold the scrollbar. Unfortunately</span>
630
+ 155: <span class="ruby-comment cmt"># this must be a hardcoded value even though the height of the scrollbar</span>
631
+ 156: <span class="ruby-comment cmt"># varies from system to system. This value should be good enough for</span>
632
+ 157: <span class="ruby-comment cmt"># most systems.</span>
633
+ 158: <span class="ruby-identifier">td</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">scrollDiv</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'div'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'tabback'</span>,
634
+ 159: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'position:relative; '</span> <span class="ruby-operator">+</span>
635
+ 160: <span class="ruby-value str">&quot;overflow:auto; &quot;</span> <span class="ruby-operator">+</span>
636
+ 161: <span class="ruby-node">&quot;width:#{hasScrollbar? ? @viewWidth : @width}px; &quot;</span> <span class="ruby-operator">+</span>
637
+ 162: <span class="ruby-node">&quot;height:#{@height +
638
+ 163: (hasScrollbar? ? SCROLLBARHEIGHT : 0)}px;&quot;</span>))
639
+ 164: <span class="ruby-identifier">scrollDiv</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">div</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'div'</span>,
640
+ 165: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;margin:0px; padding:0px; &quot;</span> <span class="ruby-operator">+</span>
641
+ 166: <span class="ruby-value str">&quot;position:absolute; &quot;</span> <span class="ruby-operator">+</span>
642
+ 167: <span class="ruby-value str">&quot;top:0px; left:0px; &quot;</span> <span class="ruby-operator">+</span>
643
+ 168: <span class="ruby-node">&quot;width:#{@width.to_i}px; &quot;</span> <span class="ruby-operator">+</span>
644
+ 169: <span class="ruby-node">&quot;height:#{@height}px; &quot;</span> <span class="ruby-operator">+</span>
645
+ 170: <span class="ruby-value str">&quot;font-size:10px;&quot;</span>))
646
+ 171: <span class="ruby-comment cmt"># Add the header.</span>
647
+ 172: <span class="ruby-identifier">div</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@header</span>.<span class="ruby-identifier">to_html</span>
648
+ 173: <span class="ruby-comment cmt"># These are the lines of the chart.</span>
649
+ 174: <span class="ruby-ivar">@lines</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
650
+ 175: <span class="ruby-identifier">div</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">to_html</span>
651
+ 176: <span class="ruby-keyword kw">end</span>
652
+ 177:
653
+ 178: <span class="ruby-comment cmt"># This is used for debugging and testing only.</span>
654
+ 179: <span class="ruby-comment cmt">#div &lt;&lt; @router.to_html</span>
655
+ 180:
656
+ 181: <span class="ruby-comment cmt"># Render the dependency lines.</span>
657
+ 182: <span class="ruby-ivar">@depArrows</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arrow</span><span class="ruby-operator">|</span>
658
+ 183: <span class="ruby-identifier">xx</span> = <span class="ruby-identifier">yy</span> = <span class="ruby-keyword kw">nil</span>
659
+ 184: <span class="ruby-identifier">arrow</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span><span class="ruby-operator">|</span>
660
+ 185: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">xx</span>
661
+ 186: <span class="ruby-identifier">div</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">lineToHTML</span>(<span class="ruby-identifier">xx</span>, <span class="ruby-identifier">yy</span>, <span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-value str">'depline'</span>)
662
+ 187: <span class="ruby-keyword kw">end</span>
663
+ 188: <span class="ruby-identifier">xx</span> = <span class="ruby-identifier">x</span>
664
+ 189: <span class="ruby-identifier">yy</span> = <span class="ruby-identifier">y</span>
642
665
  190: <span class="ruby-keyword kw">end</span>
643
666
  191: <span class="ruby-keyword kw">end</span>
644
- 192:
645
- 193: <span class="ruby-identifier">td</span>
646
- 194: <span class="ruby-keyword kw">end</span>
667
+ 192: <span class="ruby-comment cmt"># And the corresponsing arrow heads.</span>
668
+ 193: <span class="ruby-ivar">@arrowHeads</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span><span class="ruby-operator">|</span>
669
+ 194: <span class="ruby-value">6</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
670
+ 195: <span class="ruby-identifier">div</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">lineToHTML</span>(<span class="ruby-identifier">x</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span>, <span class="ruby-identifier">y</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span>, <span class="ruby-identifier">x</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span>, <span class="ruby-identifier">y</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">i</span>, <span class="ruby-value str">'depline'</span>)
671
+ 196: <span class="ruby-keyword kw">end</span>
672
+ 197: <span class="ruby-keyword kw">end</span>
673
+ 198:
674
+ 199: <span class="ruby-identifier">td</span>
675
+ 200: <span class="ruby-keyword kw">end</span>
647
676
  </pre>
648
677
  </div>
649
678