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
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # = ReportBase.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of version 2 of the GNU General Public License as
@@ -28,7 +28,13 @@ class TaskJuggler
28
28
  end
29
29
 
30
30
  def generateIntermediateFormat
31
- raise 'This function must be overriden by derived classes.'
31
+ query = @report.project.reportContext.query
32
+ %w( header left center right footer
33
+ prolog headline caption epilog ).each do |name|
34
+ next unless text = a(name)
35
+
36
+ text.functionHandler('query').setQuery(query)
37
+ end
32
38
  end
33
39
 
34
40
  def to_html
@@ -52,11 +58,13 @@ class TaskJuggler
52
58
 
53
59
  if resource
54
60
  # If we have a resource we need to check that the resource is allocated
55
- # to the tasks in any of the reported scenarios.
61
+ # to the tasks in any of the reported scenarios within the report time
62
+ # frame.
56
63
  list.delete_if do |task|
57
64
  delete = true
58
65
  a('scenarios').each do |scenarioIdx|
59
- if task['assignedresources', scenarioIdx].include?(resource)
66
+ iv = Interval.new(a('start'), a('end'))
67
+ if task.hasResourceAllocated?(scenarioIdx, iv, resource)
60
68
  delete = false
61
69
  break;
62
70
  end
@@ -65,26 +73,6 @@ class TaskJuggler
65
73
  end
66
74
  end
67
75
 
68
- # Remove all tasks that don't overlap with the reported interval.
69
- list.delete_if do |task|
70
- delete = true
71
- a('scenarios').each do |scenarioIdx|
72
- iv = Interval.new(task['start', scenarioIdx].nil? ?
73
- @project['start'] : task['start', scenarioIdx],
74
- task['end', scenarioIdx].nil? ?
75
- @project['end'] : task['end', scenarioIdx])
76
- # Special case to include milestones at the report end.
77
- if iv.start == iv.end && iv.end == @end
78
- iv.start = iv.end = iv.start - 1
79
- end
80
- if iv.overlaps?(Interval.new(a('start'), a('end')))
81
- delete = false
82
- break;
83
- end
84
- end
85
- delete
86
- end
87
-
88
76
  standardFilterOps(list, hideExpr, rollupExpr, resource, taskRoot)
89
77
  end
90
78
 
@@ -106,7 +94,8 @@ class TaskJuggler
106
94
  list.delete_if do |resource|
107
95
  delete = true
108
96
  a('scenarios').each do |scenarioIdx|
109
- if resource.allocated?(scenarioIdx, iv, task)
97
+ if task.hasResourceAllocated?(scenarioIdx, iv, resource)
98
+ #if resource.allocated?(scenarioIdx, iv, task)
110
99
  delete = false
111
100
  break;
112
101
  end
@@ -131,10 +120,15 @@ class TaskJuggler
131
120
  # This function implements the generic filtering functionality for all kinds
132
121
  # of lists.
133
122
  def standardFilterOps(list, hideExpr, rollupExpr, scopeProperty, root)
123
+ # Make a copy of the current Query.
124
+ query = @project.reportContext.query.dup
125
+ query.scopeProperty = scopeProperty
126
+
134
127
  # Remove all properties that the user wants to have hidden.
135
128
  if hideExpr
136
129
  list.delete_if do |property|
137
- hideExpr.eval(property, scopeProperty)
130
+ query.property = property
131
+ hideExpr.eval(query)
138
132
  end
139
133
  end
140
134
 
@@ -144,7 +138,8 @@ class TaskJuggler
144
138
  parent = property.parent
145
139
  delete = false
146
140
  while (parent)
147
- if rollupExpr.eval(parent, scopeProperty)
141
+ query.property = parent
142
+ if rollupExpr.eval(query)
148
143
  delete = true
149
144
  break
150
145
  end
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # = ReportContext.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of version 2 of the GNU General Public License as
@@ -12,30 +12,44 @@
12
12
 
13
13
  class TaskJuggler
14
14
 
15
- # Each Project has a single ReportContext object that is used during the
16
- # report generation. It is a container for global state.
15
+ # The ReportContext objects provide some settings that are used during the
16
+ # generation of a report. Reports can be nested, so multiple objects can
17
+ # exist at a time. But there is only one current ReportContext that is
18
+ # always accessable via Project.reportContext.
17
19
  class ReportContext
18
20
 
19
- attr_reader :project, :report
20
- attr_accessor :start, :end, :tasks, :resources
21
+ attr_reader :project, :report, :query
22
+ attr_accessor :tasks, :resources
21
23
 
22
24
  def initialize(project, report)
23
25
  @project = project
24
26
  @report = report
25
-
26
- if (parent = @project.reportContext)
27
+ queryAttrs = {
28
+ 'project' => @project,
29
+ 'loadUnit' => @report.get('loadUnit'),
30
+ 'numberFormat' => @report.get('numberFormat'),
31
+ 'timeFormat' => @report.get('timeFormat'),
32
+ 'currencyFormat' => @report.get('currencyFormat'),
33
+ 'start' => @report.get('start'),
34
+ 'end' => @report.get('end'),
35
+ 'costAccount' => @report.get('costAccount'),
36
+ 'revenueAccount' => @report.get('revenueAccount')
37
+ }
38
+ @query = Query.new(queryAttrs)
39
+ if (@parent = @project.reportContext)
27
40
  # If the new ReportContext is created from within an existing context,
28
- # this is used as parent context and all attribute values are copied
29
- # as default initial values.
30
- @start = parent.start
31
- @end = parent.end
32
- @tasks = parent.tasks
33
- @resources = parent.resources
41
+ # this is used as parent context and the settings are copied as
42
+ # default initial values.
43
+ @tasks = @parent.tasks.dup
44
+ @resources = @parent.resources.dup
34
45
  else
35
- @start = @end = nil
36
- @tasks = @resources = nil
46
+ # There is no existing ReportContext yet, so we create one based on
47
+ # the settings of the report.
48
+ @tasks = @project.tasks.dup
49
+ @resources = @project.resources.dup
37
50
  end
38
51
  end
39
52
 
40
53
  end
54
+
41
55
  end
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # = ReportTable.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # = ReportTableCell.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of version 2 of the GNU General Public License as
@@ -20,23 +20,29 @@ class TaskJuggler
20
20
  class ReportTableCell
21
21
 
22
22
  attr_reader :line
23
- attr_accessor :data, :text, :url, :category, :hidden, :alignment,
24
- :padding, :indent, :fontSize, :fontColor, :bold, :width,
23
+ attr_accessor :data, :category, :hidden, :alignment, :padding,
24
+ :text, :tooltip, :selfcontained,
25
+ :cellColor, :indent, :icon, :fontSize, :fontColor,
26
+ :bold, :width,
25
27
  :rows, :columns, :special
26
28
 
27
29
  # Create the ReportTableCell object and initialize the attributes to some
28
30
  # default values. _line_ is the ReportTableLine this cell belongs to. _text_
29
31
  # is the text that should appear in the cell. _headerCell_ is a flag that
30
32
  # must be true only for table header cells.
31
- def initialize(line, text = '', headerCell = false)
33
+ def initialize(line, query, text = nil, headerCell = false)
32
34
  @line = line
33
35
  @line.addCell(self) if line
34
36
 
35
37
  @headerCell = headerCell
36
- # The printable form of the cell content
37
- @text = text
38
- # A URL that is associated with the content of the cell.
39
- @url = nil
38
+ # A copy of a Query object that is needed to access project data via the
39
+ # query function.
40
+ @query = query ? query.dup : nil
41
+ # The cell textual content. This may be a String or a
42
+ # RichTextIntermediate object.
43
+ self.text = text || ''
44
+ # A custom text for the tooltip.
45
+ @tooltip = nil
40
46
  # The original data of the cell content (optional, nil if not provided)
41
47
  @data = nil
42
48
  @category = nil
@@ -48,12 +54,16 @@ class TaskJuggler
48
54
  # Whether or not to indent the cell. If not nil, it is a Fixnum
49
55
  # indicating the indentation level.
50
56
  @indent = nil
57
+ # The basename of the icon file
58
+ @icon = nil
51
59
  @fontSize = nil
52
- @fontColor = 0x000000
60
+ @cellColor = nil
61
+ @fontColor = nil
53
62
  @bold = false
54
63
  @width = nil
55
64
  @rows = 1
56
65
  @columns = 1
66
+ @selfcontained = false
57
67
  # Ignore everything and use this reference to generate the output.
58
68
  @special = nil
59
69
  end
@@ -63,6 +73,7 @@ class TaskJuggler
63
73
  # with.
64
74
  def ==(c)
65
75
  @text == c.text &&
76
+ @tooltip == c.tooltip &&
66
77
  @alignment == c.alignment &&
67
78
  @padding == c.padding &&
68
79
  @indent == c.indent &&
@@ -79,44 +90,100 @@ class TaskJuggler
79
90
  attribs['rowspan'] = "#{@rows}" if @rows > 1
80
91
  attribs['colspan'] = "#{@columns}" if @columns > 1
81
92
  attribs['class'] = @category ? @category : 'tabcell'
93
+ attribs['style'] = "background-color: #{@cellColor}; " if @cellColor
82
94
  cell = XMLElement.new('td', attribs)
83
95
 
84
96
  # Determine cell style
85
97
  alignSymbols = [ :left, :center, :right ]
86
98
  aligns = %w( left center right)
87
99
  style = "text-align:#{aligns[alignSymbols.index(@alignment)]}; "
100
+ paddingLeft = paddingRight = 0
88
101
  if @indent && @alignment != :center
89
102
  if @alignment == :left
90
- style += "padding-left:#{@padding + @indent * 8}px; "
91
- style += "padding-right:#{@padding}px; " unless @padding == 3
103
+ paddingLeft = @padding + @indent * 8
104
+ paddingRight = @padding
92
105
  elsif @alignment == :right
93
- style += "padding-left:#{@padding}px; " unless @padding == 3
94
- style += "padding-right:#{@padding +
95
- (@line.table.maxIndent - @indent) * 8}px; "
106
+ paddingLeft = @padding
107
+ paddingRight = @padding + (@line.table.maxIndent - @indent) * 8
96
108
  end
109
+ style += "padding-left:#{paddingLeft}px; " unless paddingLeft == 3
110
+ style += "padding-right:#{paddingRight}px; " unless paddingRight == 3
97
111
  elsif @padding != 3
98
112
  style += "padding-left:#{@padding}px; padding-right:#{@padding}px; "
113
+ paddingLeft = paddingRight = @padding
99
114
  end
100
- unless @text.is_a?(TaskJuggler::RichText)
101
- style += 'font-weight:bold; ' if @bold
102
- style += "font-size: #{@fontSize}px; " if fontSize
115
+ style += "width:#{@width - paddingLeft - paddingRight}px; " if @width
116
+ style += 'font-weight:bold; ' if @bold
117
+
118
+ # If we have a RichText content and a width limit, we enable line
119
+ # wrapping.
120
+ if @text.is_a?(RichTextIntermediate) && @width
121
+ style += "white-space:normal; "
103
122
  end
104
- unless @fontColor == 0
105
- style += "color:#{'#%06X' % @fontColor}; "
123
+
124
+ style += "font-size: #{@fontSize}px; " if fontSize
125
+ if @fontColor
126
+ style += "color:#{@fontColor}; "
106
127
  end
107
- style += "width: #{@width}px; " if @width
108
- if @text.is_a?(TaskJuggler::RichText) && @line && @line.table.equiLines
128
+ if @text.is_a?(RichTextIntermediate) && @line && @line.table.equiLines
109
129
  style += "height:#{@line.height - 3}px; "
110
130
  end
111
131
  cell << (div = XMLElement.new('div',
112
132
  'class' => @category ? 'celldiv' : 'headercelldiv', 'style' => style))
113
133
 
114
- if url
115
- div << (a = XMLElement.new('a', 'href' => @url))
116
- a << XMLText.new(@text.is_a?(TaskJuggler::RichText) ? @text.to_s : text)
134
+ if @icon && !@selfcontained
135
+ div << XMLElement.new('img', 'src' => "icons/#{@icon}.png",
136
+ 'align' => 'top',
137
+ 'style' => 'margin-right:3px;' +
138
+ 'margin-bottom:2px')
139
+ end
140
+
141
+ return cell if @text.nil?
142
+
143
+ if @text.respond_to?('functionHandler') && @text.functionHandler('query')
144
+ @text.functionHandler('query').setQuery(@query)
145
+ end
146
+
147
+ shortText, singleLine = shortVersion(@text)
148
+ tooltip = nil
149
+ if (@line && @line.table.equiLines && (!singleLine || @width )) ||
150
+ !@category
151
+ # The cell is size-limited. We only put a shortened plain-text version
152
+ # in the cell and provide the full content via a tooltip.
153
+ div << XMLText.new(shortText)
154
+ tooltip = @text if @text != shortText
117
155
  else
118
- div << (@text.is_a?(TaskJuggler::RichText) ?
119
- @text.to_html : XMLText.new(@text))
156
+ # The cell will adjust to the size of the content.
157
+ if @text.is_a?(RichTextIntermediate)
158
+ # Don't put the @text into a <div> but a <span>.
159
+ @text.blockMode = false #if singleLine
160
+ div << @text.to_html
161
+ else
162
+ div << XMLText.new(shortText)
163
+ end
164
+ end
165
+
166
+ # Overwrite the tooltip if the user has specified a custom tooltip.
167
+ tooltip = @tooltip if @tooltip
168
+ if tooltip && !tooltip.empty? && !@selfcontained
169
+ if tooltip.respond_to?('functionHandler') &&
170
+ tooltip.functionHandler('query')
171
+ tooltip.functionHandler('query').setQuery(@query)
172
+ end
173
+ div['onmouseover'] = "TagToTip('#{cell.object_id}')"
174
+ div['onmouseout'] = 'UnTip()'
175
+ div << (ltDiv = XMLElement.new('div',
176
+ 'style' => 'position:fixed; ' +
177
+ 'visibility:hidden',
178
+ 'id' => "#{cell.object_id}"))
179
+ ltDiv << (tooltip.respond_to?('to_html') ? tooltip.to_html :
180
+ XMLText.new(tooltip))
181
+
182
+ div << XMLElement.new('img', 'src' => 'icons/details.png',
183
+ 'width' => '6px',
184
+ 'style' => 'vertical-align:top; ' +
185
+ 'margin:2px; ' +
186
+ 'top:5px')
120
187
  end
121
188
 
122
189
  cell
@@ -132,8 +199,34 @@ class TaskJuggler
132
199
  elsif @data && @data.is_a?(String)
133
200
  csv[-1] << indent + @data
134
201
  elsif @text
135
- csv[-1] << indent + @text
202
+ if @text.respond_to?('functionHandler')
203
+ @text.functionHandler('query').setQuery(@query)
204
+ end
205
+ csv[-1] << indent + shortVersion(@text)[0]
206
+ end
207
+ end
208
+
209
+ private
210
+
211
+ # Convert a RichText String into a small one-line plain text
212
+ # version that fits the column.
213
+ def shortVersion(itext)
214
+ text = itext.to_s
215
+ singleLine = true
216
+ modified = false
217
+ if text.include?("\n")
218
+ text = text[0, text.index("\n")]
219
+ singleLine = false
220
+ modified = true
221
+ end
222
+ # Assuming an average character width of 9 pixels
223
+ if @width && (text.length > (@width / 9))
224
+ text = text[0, @width / 9]
225
+ modified = shortened = true
136
226
  end
227
+ # Add three dots to show that there is more info available.
228
+ text += "..." if modified
229
+ [ text, singleLine ]
137
230
  end
138
231
 
139
232
  end
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # = ReportTableColumn.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of version 2 of the GNU General Public License as
@@ -42,9 +42,9 @@ class TaskJuggler
42
42
  definition.column = self if definition
43
43
 
44
44
  # Create the 2 cells of the header.
45
- @cell1 = ReportTableCell.new(nil, title, true)
45
+ @cell1 = ReportTableCell.new(nil, nil, title, true)
46
46
  @cell1.padding = 5
47
- @cell2 = ReportTableCell.new(nil, '', true)
47
+ @cell2 = ReportTableCell.new(nil, nil, '', true)
48
48
  # Header text is always bold.
49
49
  @cell1.bold = @cell2.bold = true
50
50
  # This variable is set to true if the column requires a scrollbar later
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # = ReportTableLegend.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # = ReportTableLine.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of version 2 of the GNU General Public License as
@@ -17,7 +17,8 @@ class TaskJuggler
17
17
  class ReportTableLine
18
18
 
19
19
  attr_reader :table, :property, :scopeLine
20
- attr_accessor :height, :indentation, :fontSize, :no, :lineNo, :subLineNo
20
+ attr_accessor :height, :indentation, :fontSize, :bold,
21
+ :no, :lineNo, :subLineNo
21
22
 
22
23
  # Create a ReportTableCell object and initialize the variables with default
23
24
  # values. _table_ is a reference to the ReportTable object this line belongs
@@ -39,6 +40,8 @@ class TaskJuggler
39
40
  @indentation = 0
40
41
  # The factor used to enlarge or shrink the font size for this line.
41
42
  @fontSize = 12
43
+ # Specifies whether the whole line should be in bold type or not.
44
+ @bold = false
42
45
  # Counter that counts primary and nested lines separately. It restarts
43
46
  # with 0 for each new nested line set. Scenario lines don't count.
44
47
  @no = nil
@@ -63,6 +66,11 @@ class TaskJuggler
63
66
  @cells << cell
64
67
  end
65
68
 
69
+ # Return the scope property or nil
70
+ def scopeProperty
71
+ @scopeLine ? @scopeLine.property : nil
72
+ end
73
+
66
74
  # Return this line as a set of XMLElement that represent the line in HTML.
67
75
  def to_html
68
76
  style = ""