taskjuggler 3.1.0 → 3.2.0

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 (410) hide show
  1. data/CHANGELOG +44 -0
  2. data/bin/tj3webd +4 -0
  3. data/data/css/tjreport.css +14 -5
  4. data/data/tjp.vim +22 -7
  5. data/examples/Fedora-20/reports.tji +2 -4
  6. data/examples/Scrum/Product Burndown.csv +26 -0
  7. data/examples/Scrum/Sprint 1 Burndown.csv +26 -0
  8. data/examples/Scrum/Sprint 2 Burndown.csv +26 -0
  9. data/examples/Scrum/Sprint 3 Burndown.csv +26 -0
  10. data/examples/Scrum/scrum.tjp +141 -0
  11. data/examples/Tutorial/tutorial.tjp +13 -7
  12. data/lib/taskjuggler/Attributes.rb +2 -3
  13. data/lib/taskjuggler/HTMLDocument.rb +25 -18
  14. data/lib/taskjuggler/Journal.rb +85 -65
  15. data/lib/taskjuggler/KeywordDocumentation.rb +25 -13
  16. data/lib/taskjuggler/LeaveList.rb +1 -1
  17. data/lib/taskjuggler/Limits.rb +3 -5
  18. data/lib/taskjuggler/MessageHandler.rb +173 -19
  19. data/lib/taskjuggler/Painter.rb +75 -0
  20. data/lib/taskjuggler/Painter/BasicShapes.rb +76 -0
  21. data/lib/taskjuggler/Painter/Color.rb +273 -0
  22. data/lib/taskjuggler/Painter/Element.rb +56 -0
  23. data/lib/taskjuggler/Painter/FontData.rb +221 -0
  24. data/lib/taskjuggler/Painter/FontMetrics.rb +125 -0
  25. data/lib/taskjuggler/Painter/FontMetricsData.rb +151 -0
  26. data/lib/taskjuggler/Painter/Group.rb +77 -0
  27. data/lib/taskjuggler/Painter/Points.rb +47 -0
  28. data/lib/taskjuggler/Painter/Primitives.rb +100 -0
  29. data/lib/taskjuggler/Painter/SVGSupport.rb +36 -0
  30. data/lib/taskjuggler/Painter/Text.rb +36 -0
  31. data/lib/taskjuggler/Project.rb +46 -29
  32. data/lib/taskjuggler/ProjectFileParser.rb +24 -22
  33. data/lib/taskjuggler/ProjectFileScanner.rb +2 -2
  34. data/lib/taskjuggler/PropertyTreeNode.rb +26 -34
  35. data/lib/taskjuggler/Query.rb +8 -5
  36. data/lib/taskjuggler/RealFormat.rb +3 -0
  37. data/lib/taskjuggler/Resource.rb +3 -5
  38. data/lib/taskjuggler/ResourceScenario.rb +19 -7
  39. data/lib/taskjuggler/RichText.rb +4 -6
  40. data/lib/taskjuggler/RichText/FunctionExample.rb +1 -1
  41. data/lib/taskjuggler/RichText/FunctionHandler.rb +5 -6
  42. data/lib/taskjuggler/RichText/Parser.rb +4 -6
  43. data/lib/taskjuggler/RichText/RTFNavigator.rb +1 -1
  44. data/lib/taskjuggler/RichText/RTFQuery.rb +2 -3
  45. data/lib/taskjuggler/RichText/RTFReport.rb +1 -1
  46. data/lib/taskjuggler/RichText/RTFReportLink.rb +1 -2
  47. data/lib/taskjuggler/RichText/RTFWithQuerySupport.rb +1 -1
  48. data/lib/taskjuggler/RichText/Scanner.rb +6 -6
  49. data/lib/taskjuggler/RichText/Snip.rb +1 -2
  50. data/lib/taskjuggler/RuntimeConfig.rb +9 -6
  51. data/lib/taskjuggler/ScenarioData.rb +4 -3
  52. data/lib/taskjuggler/Scoreboard.rb +6 -0
  53. data/lib/taskjuggler/SheetHandlerBase.rb +25 -8
  54. data/lib/taskjuggler/SimpleQueryExpander.rb +14 -5
  55. data/lib/taskjuggler/SyntaxReference.rb +1 -2
  56. data/lib/taskjuggler/TableColumnSorter.rb +84 -0
  57. data/lib/taskjuggler/Task.rb +3 -5
  58. data/lib/taskjuggler/TaskJuggler.rb +36 -29
  59. data/lib/taskjuggler/TaskScenario.rb +154 -66
  60. data/lib/taskjuggler/TextParser.rb +24 -17
  61. data/lib/taskjuggler/TextParser/Scanner.rb +16 -11
  62. data/lib/taskjuggler/TextParser/SourceFileInfo.rb +20 -15
  63. data/lib/taskjuggler/TimeSheets.rb +6 -12
  64. data/lib/taskjuggler/Tj3AppBase.rb +35 -16
  65. data/lib/taskjuggler/Tj3Config.rb +1 -1
  66. data/lib/taskjuggler/TjpSyntaxRules.rb +239 -49
  67. data/lib/taskjuggler/XMLElement.rb +9 -2
  68. data/lib/taskjuggler/apps/Tj3.rb +43 -37
  69. data/lib/taskjuggler/apps/Tj3Client.rb +62 -112
  70. data/lib/taskjuggler/apps/Tj3Daemon.rb +66 -29
  71. data/lib/taskjuggler/apps/Tj3Man.rb +5 -5
  72. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +10 -13
  73. data/lib/taskjuggler/apps/Tj3SsSender.rb +13 -16
  74. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +10 -13
  75. data/lib/taskjuggler/apps/Tj3TsSender.rb +12 -15
  76. data/lib/taskjuggler/apps/Tj3TsSummary.rb +12 -15
  77. data/lib/taskjuggler/apps/Tj3WebD.rb +99 -0
  78. data/lib/taskjuggler/daemon/Daemon.rb +50 -10
  79. data/lib/taskjuggler/daemon/DaemonConnector.rb +127 -0
  80. data/lib/taskjuggler/daemon/ProcessIntercom.rb +36 -21
  81. data/lib/taskjuggler/daemon/ProjectBroker.rb +122 -112
  82. data/lib/taskjuggler/daemon/ProjectServer.rb +78 -46
  83. data/lib/taskjuggler/daemon/ReportServer.rb +52 -28
  84. data/lib/taskjuggler/daemon/ReportServlet.rb +92 -21
  85. data/lib/taskjuggler/daemon/WebServer.rb +75 -22
  86. data/lib/taskjuggler/daemon/WelcomePage.rb +1 -0
  87. data/lib/taskjuggler/reports/AccountListRE.rb +3 -3
  88. data/lib/taskjuggler/reports/CSVFile.rb +9 -2
  89. data/lib/taskjuggler/reports/ChartPlotter.rb +453 -0
  90. data/lib/taskjuggler/reports/Navigator.rb +1 -0
  91. data/lib/taskjuggler/reports/NikuReport.rb +4 -4
  92. data/lib/taskjuggler/reports/Report.rb +6 -18
  93. data/lib/taskjuggler/reports/ReportBase.rb +9 -9
  94. data/lib/taskjuggler/reports/ReportContext.rb +2 -2
  95. data/lib/taskjuggler/reports/StatusSheetReport.rb +6 -6
  96. data/lib/taskjuggler/reports/TableReport.rb +24 -15
  97. data/lib/taskjuggler/reports/TimeSheetReport.rb +5 -5
  98. data/lib/taskjuggler/reports/TraceReport.rb +251 -0
  99. data/lib/tj3webd.rb +17 -0
  100. data/manual/Day_To_Day_Juggling +10 -3
  101. data/manual/Installation +38 -19
  102. data/manual/Software +25 -19
  103. data/manual/Tutorial +119 -110
  104. data/manual/html/Day_To_Day_Juggling.html +7 -5
  105. data/manual/html/Getting_Started.html +4 -4
  106. data/manual/html/How_To_Contribute.html +4 -4
  107. data/manual/html/Installation.html +19 -11
  108. data/manual/html/Intro.html +4 -4
  109. data/manual/html/Reporting_Bugs.html +4 -4
  110. data/manual/html/Rich_Text_Attributes.html +4 -4
  111. data/manual/html/Software.html +15 -11
  112. data/manual/html/TaskJuggler_2x_Migration.html +4 -4
  113. data/manual/html/TaskJuggler_Internals.html +4 -4
  114. data/manual/html/The_TaskJuggler_Syntax.html +4 -4
  115. data/manual/html/Tutorial.html +41 -32
  116. data/manual/html/account.html +4 -4
  117. data/manual/html/account.task.html +4 -4
  118. data/manual/html/accountprefix.html +4 -4
  119. data/manual/html/accountreport.html +27 -9
  120. data/manual/html/accountroot.html +5 -5
  121. data/manual/html/active.html +4 -4
  122. data/manual/html/adopt.task.html +4 -4
  123. data/manual/html/aggregate.html +4 -4
  124. data/manual/html/alert.html +4 -4
  125. data/manual/html/alertlevels.html +4 -4
  126. data/manual/html/allocate.html +5 -5
  127. data/manual/html/alphabet.html +4 -4
  128. data/manual/html/alternative.html +4 -4
  129. data/manual/html/author.html +4 -4
  130. data/manual/html/balance.html +5 -5
  131. data/manual/html/booking.resource.html +4 -4
  132. data/manual/html/booking.task.html +4 -4
  133. data/manual/html/caption.html +5 -5
  134. data/manual/html/cellcolor.column.html +43 -8
  135. data/manual/html/celltext.column.html +4 -4
  136. data/manual/html/center.html +5 -5
  137. data/manual/html/charge.html +4 -4
  138. data/manual/html/chargeset.html +4 -4
  139. data/manual/html/columnid.html +27 -15
  140. data/manual/html/columns.html +5 -5
  141. data/manual/html/complete.html +4 -4
  142. data/manual/html/copyright.html +4 -4
  143. data/manual/html/credits.html +4 -4
  144. data/manual/html/css/tjreport.css +14 -5
  145. data/manual/html/currency.html +4 -4
  146. data/manual/html/currencyformat.html +5 -5
  147. data/manual/html/dailymax.html +5 -5
  148. data/manual/html/dailymin.html +5 -5
  149. data/manual/html/dailyworkinghours.html +4 -4
  150. data/manual/html/date.extend.html +4 -4
  151. data/manual/html/date.html +5 -5
  152. data/manual/html/definitions.html +4 -4
  153. data/manual/html/depends.html +4 -4
  154. data/manual/html/details.html +4 -4
  155. data/manual/html/disabled.html +4 -4
  156. data/manual/html/duration.html +4 -4
  157. data/manual/html/efficiency.html +4 -4
  158. data/manual/html/effort.html +4 -4
  159. data/manual/html/email.html +4 -4
  160. data/manual/html/enabled.html +4 -4
  161. data/manual/html/end.column.html +4 -4
  162. data/manual/html/end.html +4 -4
  163. data/manual/html/end.limit.html +4 -4
  164. data/manual/html/end.report.html +5 -5
  165. data/manual/html/end.timesheet.html +4 -4
  166. data/manual/html/endcredit.html +4 -4
  167. data/manual/html/epilog.html +5 -5
  168. data/manual/html/export.html +4 -4
  169. data/manual/html/extend.html +4 -4
  170. data/manual/html/fail.html +43 -8
  171. data/manual/html/fdl.html +4 -4
  172. data/manual/html/flags.account.html +4 -4
  173. data/manual/html/flags.html +4 -4
  174. data/manual/html/flags.journalentry.html +4 -4
  175. data/manual/html/flags.report.html +5 -5
  176. data/manual/html/flags.resource.html +4 -4
  177. data/manual/html/flags.statussheet.html +4 -4
  178. data/manual/html/flags.task.html +4 -4
  179. data/manual/html/flags.timesheet.html +4 -4
  180. data/manual/html/fontcolor.column.html +43 -8
  181. data/manual/html/footer.html +5 -5
  182. data/manual/html/formats.html +5 -5
  183. data/manual/html/functions.html +4 -4
  184. data/manual/html/gapduration.html +4 -4
  185. data/manual/html/gaplength.html +4 -4
  186. data/manual/html/halign.center.html +4 -4
  187. data/manual/html/halign.column.html +43 -8
  188. data/manual/html/halign.left.html +4 -4
  189. data/manual/html/halign.right.html +4 -4
  190. data/manual/html/hasalert.html +4 -4
  191. data/manual/html/header.html +5 -5
  192. data/manual/html/headline.html +7 -7
  193. data/manual/html/height.html +72 -0
  194. data/manual/html/hideaccount.html +46 -11
  195. data/manual/html/hidejournalentry.html +5 -5
  196. data/manual/html/hidereport.html +43 -8
  197. data/manual/html/hideresource.html +44 -9
  198. data/manual/html/hidetask.html +44 -9
  199. data/manual/html/icalreport.html +4 -4
  200. data/manual/html/include.macro.html +4 -4
  201. data/manual/html/include.project.html +4 -4
  202. data/manual/html/include.properties.html +4 -4
  203. data/manual/html/index.html +2 -1
  204. data/manual/html/inherit.extend.html +4 -4
  205. data/manual/html/interval1.html +4 -4
  206. data/manual/html/interval2.html +4 -4
  207. data/manual/html/interval3.html +4 -4
  208. data/manual/html/interval4.html +4 -4
  209. data/manual/html/isactive.html +4 -4
  210. data/manual/html/ischildof.html +4 -4
  211. data/manual/html/isdependencyof.html +4 -4
  212. data/manual/html/isdutyof.html +4 -4
  213. data/manual/html/isfeatureof.html +4 -4
  214. data/manual/html/isleaf.html +4 -4
  215. data/manual/html/ismilestone.html +4 -4
  216. data/manual/html/isongoing.html +4 -4
  217. data/manual/html/isresource.html +4 -4
  218. data/manual/html/isresponsibilityof.html +4 -4
  219. data/manual/html/istask.html +4 -4
  220. data/manual/html/journalattributes.html +11 -7
  221. data/manual/html/journalentry.html +4 -4
  222. data/manual/html/journalmode.html +5 -5
  223. data/manual/html/leaveallowance.html +5 -5
  224. data/manual/html/leaves.html +5 -6
  225. data/manual/html/left.html +5 -5
  226. data/manual/html/length.html +4 -4
  227. data/manual/html/limits.allocate.html +4 -4
  228. data/manual/html/limits.html +4 -4
  229. data/manual/html/limits.resource.html +4 -4
  230. data/manual/html/limits.task.html +4 -4
  231. data/manual/html/listitem.column.html +4 -4
  232. data/manual/html/listtype.column.html +4 -4
  233. data/manual/html/loadunit.html +5 -5
  234. data/manual/html/logicalexpression.html +8 -44
  235. data/manual/html/logicalflagexpression.html +4 -4
  236. data/manual/html/macro.html +4 -4
  237. data/manual/html/managers.html +4 -4
  238. data/manual/html/mandatory.html +4 -4
  239. data/manual/html/maxend.html +4 -4
  240. data/manual/html/maximum.html +5 -5
  241. data/manual/html/maxstart.html +4 -4
  242. data/manual/html/milestone.html +4 -4
  243. data/manual/html/minend.html +4 -4
  244. data/manual/html/minimum.html +5 -5
  245. data/manual/html/minstart.html +4 -4
  246. data/manual/html/monthlymax.html +5 -5
  247. data/manual/html/monthlymin.html +5 -5
  248. data/manual/html/navbar.html +10 -4
  249. data/manual/html/navigator.html +4 -4
  250. data/manual/html/newtask.html +4 -4
  251. data/manual/html/nikureport.html +4 -4
  252. data/manual/html/note.task.html +4 -4
  253. data/manual/html/now.html +4 -4
  254. data/manual/html/numberformat.html +5 -5
  255. data/manual/html/onend.html +4 -4
  256. data/manual/html/onstart.html +4 -4
  257. data/manual/html/opennodes.html +5 -5
  258. data/manual/html/overtime.booking.html +4 -4
  259. data/manual/html/period.column.html +4 -4
  260. data/manual/html/period.limit.html +4 -4
  261. data/manual/html/period.report.html +5 -5
  262. data/manual/html/period.task.html +4 -4
  263. data/manual/html/persistent.html +4 -4
  264. data/manual/html/precedes.html +4 -4
  265. data/manual/html/priority.html +4 -4
  266. data/manual/html/priority.timesheet.html +4 -4
  267. data/manual/html/project.html +4 -4
  268. data/manual/html/projectid.html +4 -4
  269. data/manual/html/projectid.task.html +4 -4
  270. data/manual/html/projectids.html +4 -4
  271. data/manual/html/projection.html +5 -7
  272. data/manual/html/prolog.html +5 -5
  273. data/manual/html/properties.html +11 -5
  274. data/manual/html/purge.html +5 -5
  275. data/manual/html/rate.html +4 -4
  276. data/manual/html/rate.resource.html +4 -4
  277. data/manual/html/reference.extend.html +4 -4
  278. data/manual/html/remaining.html +4 -4
  279. data/manual/html/replace.html +4 -4
  280. data/manual/html/reportprefix.html +4 -4
  281. data/manual/html/resource.html +4 -10
  282. data/manual/html/resourceattributes.html +4 -4
  283. data/manual/html/resourceprefix.html +4 -4
  284. data/manual/html/resourcereport.html +28 -10
  285. data/manual/html/resourceroot.html +5 -5
  286. data/manual/html/resources.limit.html +4 -4
  287. data/manual/html/responsible.html +4 -4
  288. data/manual/html/richtext.extend.html +4 -4
  289. data/manual/html/right.html +5 -5
  290. data/manual/html/rollupaccount.html +44 -9
  291. data/manual/html/rollupresource.html +44 -9
  292. data/manual/html/rolluptask.html +44 -9
  293. data/manual/html/scale.column.html +4 -4
  294. data/manual/html/scenario.html +4 -22
  295. data/manual/html/scenario.ical.html +4 -4
  296. data/manual/html/scenarios.export.html +4 -4
  297. data/manual/html/scenarios.html +5 -5
  298. data/manual/html/scenariospecific.extend.html +4 -4
  299. data/manual/html/scheduled.html +4 -4
  300. data/manual/html/scheduling.html +4 -4
  301. data/manual/html/select.html +4 -4
  302. data/manual/html/selfcontained.html +5 -5
  303. data/manual/html/shift.allocate.html +4 -4
  304. data/manual/html/shift.html +4 -4
  305. data/manual/html/shift.resource.html +5 -5
  306. data/manual/html/shift.task.html +4 -4
  307. data/manual/html/shift.timesheet.html +4 -4
  308. data/manual/html/shifts.allocate.html +4 -4
  309. data/manual/html/shifts.resource.html +4 -4
  310. data/manual/html/shifts.task.html +4 -4
  311. data/manual/html/shorttimeformat.html +4 -4
  312. data/manual/html/sloppy.booking.html +4 -4
  313. data/manual/html/sloppy.projection.html +5 -5
  314. data/manual/html/sortaccounts.html +5 -5
  315. data/manual/html/sortjournalentries.html +5 -5
  316. data/manual/html/sortresources.html +5 -5
  317. data/manual/html/sorttasks.html +5 -5
  318. data/manual/html/start.column.html +4 -4
  319. data/manual/html/start.html +4 -4
  320. data/manual/html/start.limit.html +4 -4
  321. data/manual/html/start.report.html +5 -5
  322. data/manual/html/startcredit.html +4 -4
  323. data/manual/html/status.statussheet.html +4 -4
  324. data/manual/html/status.timesheet.html +4 -4
  325. data/manual/html/statussheet.html +4 -4
  326. data/manual/html/statussheetreport.html +4 -4
  327. data/manual/html/strict.projection.html +5 -5
  328. data/manual/html/summary.html +4 -4
  329. data/manual/html/supplement.html +4 -4
  330. data/manual/html/supplement.resource.html +4 -10
  331. data/manual/html/supplement.task.html +4 -28
  332. data/manual/html/tagfile.html +4 -4
  333. data/manual/html/task.html +4 -28
  334. data/manual/html/task.statussheet.html +4 -4
  335. data/manual/html/task.timesheet.html +4 -4
  336. data/manual/html/taskattributes.html +4 -4
  337. data/manual/html/taskprefix.html +4 -4
  338. data/manual/html/taskreport.html +28 -10
  339. data/manual/html/taskroot.html +5 -5
  340. data/manual/html/text.extend.html +4 -4
  341. data/manual/html/textreport.html +27 -9
  342. data/manual/html/timeformat.html +5 -5
  343. data/manual/html/timeoff.nikureport.html +4 -4
  344. data/manual/html/timesheet.html +4 -4
  345. data/manual/html/timesheetreport.html +23 -5
  346. data/manual/html/timezone.export.html +4 -4
  347. data/manual/html/timezone.html +4 -4
  348. data/manual/html/timezone.report.html +5 -5
  349. data/manual/html/timezone.shift.html +4 -4
  350. data/manual/html/timingresolution.html +4 -4
  351. data/manual/html/title.column.html +4 -4
  352. data/manual/html/title.html +5 -5
  353. data/manual/html/toc.html +207 -179
  354. data/manual/html/tooltip.column.html +45 -10
  355. data/manual/html/tracereport.html +405 -0
  356. data/manual/html/trackingscenario.html +6 -6
  357. data/manual/html/treelevel.html +4 -4
  358. data/manual/html/vacation.html +4 -4
  359. data/manual/html/vacation.resource.html +4 -4
  360. data/manual/html/vacation.shift.html +4 -4
  361. data/manual/html/warn.html +43 -8
  362. data/manual/html/weeklymax.html +5 -5
  363. data/manual/html/weeklymin.html +5 -5
  364. data/manual/html/weekstartsmonday.html +4 -4
  365. data/manual/html/weekstartssunday.html +6 -6
  366. data/manual/html/width.column.html +6 -6
  367. data/manual/html/width.html +72 -0
  368. data/manual/html/work.html +4 -4
  369. data/manual/html/workinghours.project.html +4 -4
  370. data/manual/html/workinghours.resource.html +4 -4
  371. data/manual/html/workinghours.shift.html +4 -4
  372. data/manual/html/yearlyworkingdays.html +4 -4
  373. data/spec/Color_spec.rb +60 -0
  374. data/spec/ProjectBroker_spec.rb +3 -2
  375. data/spec/StatusSheets_spec.rb +5 -4
  376. data/spec/TableColumnSorter_spec.rb +78 -0
  377. data/spec/TimeSheets_spec.rb +6 -2
  378. data/spec/Tj3Daemon_spec.rb +2 -2
  379. data/spec/TraceReport_spec.rb +117 -0
  380. data/taskjuggler.gemspec +1 -1
  381. data/test/MessageChecker.rb +3 -1
  382. data/test/ReferenceGenerator.rb +1 -1
  383. data/test/TestSuite/CSV-Reports/Leave.tjp +1 -1
  384. data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +3 -0
  385. data/test/TestSuite/CSV-Reports/refs/taskcounter.csv +9 -0
  386. data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +19 -16
  387. data/test/TestSuite/CSV-Reports/refs/weekly.csv +1 -0
  388. data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +14 -2
  389. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +98 -86
  390. data/test/TestSuite/Scheduler/Correct/Leaves.tjp +25 -0
  391. data/test/TestSuite/Syntax/Correct/Leave.tjp +1 -1
  392. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +9 -1
  393. data/test/TestSuite/Syntax/Correct/TraceReport.tjp +10 -0
  394. data/test/TestSuite/Syntax/Correct/tutorial.tjp +10 -4
  395. data/test/test_CSV-Reports.rb +3 -3
  396. data/test/test_Export-Reports.rb +91 -86
  397. data/test/test_Journal.rb +15 -12
  398. data/test/test_Limits.rb +3 -3
  399. data/test/test_Project.rb +1 -2
  400. data/test/test_ProjectFileScanner.rb +1 -1
  401. data/test/test_PropertySet.rb +1 -1
  402. data/test/test_Query.rb +5 -6
  403. data/test/test_ReportGenerator.rb +15 -7
  404. data/test/test_RichText.rb +4 -3
  405. data/test/test_Scheduler.rb +19 -7
  406. data/test/test_ShiftAssignments.rb +2 -2
  407. data/test/test_SimpleQueryExpander.rb +29 -2
  408. data/test/test_Syntax.rb +14 -5
  409. metadata +49 -10
  410. data/lib/taskjuggler/LogFile.rb +0 -73
@@ -36,8 +36,7 @@ class TestJournal < Test::Unit::TestCase
36
36
  end
37
37
 
38
38
  def setup
39
- @p = TaskJuggler::Project.new('hello', 'Hello World', '1.0',
40
- MessageHandler.new(true))
39
+ @p = TaskJuggler::Project.new('hello', 'Hello World', '1.0')
41
40
  @p['start'] = tm('2009-11-01')
42
41
  @p['end'] = tm('2009-12-31')
43
42
  @j = @p['journal']
@@ -109,62 +108,66 @@ class TestJournal < Test::Unit::TestCase
109
108
 
110
109
  def test_currentEntries
111
110
  createTaskTree
111
+ q = Query.new
112
+ q.scenarioIdx = 0
112
113
  # Set a 0 alert for a task
113
114
  a1 = addAlert('2009-11-29', 0, t = task('p1.m1.l1'))
114
- ce = @j.currentEntriesR(tm('2009-12-05'), t)
115
+ ce = @j.currentEntriesR(tm('2009-12-05'), t, 0, nil, q)
115
116
  assert_equal(1, ce.count)
116
117
  assert_equal(a1, ce[0])
117
118
 
118
119
  # Add a later alert for the same task
119
120
  a2 = addAlert('2009-11-30', 0, t = task('p1.m1.l1'))
120
- ce = @j.currentEntriesR(tm('2009-12-05'), t)
121
+ ce = @j.currentEntriesR(tm('2009-12-05'), t, 0, nil, q)
121
122
  assert_equal(1, ce.count)
122
123
  assert_equal(a2, ce[0])
123
124
 
124
125
  # Add another alert to the sister task and check parent
125
126
  a3 = addAlert('2009-11-30', 0, t = task('p1.m1.l2'))
126
- ce = @j.currentEntriesR(tm('2009-12-05'), task('p1.m1'))
127
+ ce = @j.currentEntriesR(tm('2009-12-05'), task('p1.m1'), 0, nil, q)
127
128
  assert_equal(2, ce.count)
128
129
  assert_equal(a2, ce[0])
129
130
  assert_equal(a3, ce[1])
130
131
 
131
132
  # Check root task
132
- ce = @j.currentEntriesR(tm('2009-12-05'), task('p1'))
133
+ ce = @j.currentEntriesR(tm('2009-12-05'), task('p1'), 0, nil, q)
133
134
  assert_equal(2, ce.count)
134
135
  assert_equal(a2, ce[0])
135
136
  assert_equal(a3, ce[1])
136
137
 
137
138
  # Add old override alert to p1.m1
138
139
  addAlert('2009-11-29', 0, t = task('p1.m1'))
139
- ce = @j.currentEntriesR(tm('2009-12-05'), task('p1'))
140
+ ce = @j.currentEntriesR(tm('2009-12-05'), task('p1'), 0, nil, q)
140
141
  assert_equal(2, ce.count)
141
142
  assert_equal(a2, ce[0])
142
143
  assert_equal(a3, ce[1])
143
144
 
144
145
  # Add new override alert to p1.m1
145
146
  a4 = addAlert('2009-12-01', 0, t = task('p1.m1'))
146
- ce = @j.currentEntriesR(tm('2009-12-05'), task('p1'))
147
+ ce = @j.currentEntriesR(tm('2009-12-05'), task('p1'), 0, nil, q)
147
148
  assert_equal(1, ce.count)
148
149
  assert_equal(a4, ce[0])
149
150
  end
150
151
 
151
152
  def test_alertSimple
152
153
  createTaskTree
154
+ q = Query.new
155
+ q.scenarioIdx = 0
153
156
  # Set a 0 alert for a task
154
157
  addAlert('2009-11-29', 0, t = task('p1.m1.l1'))
155
- assert_equal(0, @j.alertLevel(tm('2009-12-01'), t, nil))
158
+ assert_equal(0, @j.alertLevel(tm('2009-12-01'), t, q))
156
159
 
157
160
  # Now add a later 1 alert
158
161
  addAlert('2009-12-01', 1, t)
159
- assert_equal(1, @j.alertLevel(tm('2009-12-02'), t, nil))
162
+ assert_equal(1, @j.alertLevel(tm('2009-12-02'), t, q))
160
163
 
161
164
  # Set a 2 alert for p1.m1.l2
162
165
  addAlert('2009-11-29', 2, task('p1.m1.l2'))
163
- assert_equal(2, @j.alertLevel(tm('2009-12-01'), task('p1'), nil))
166
+ assert_equal(2, @j.alertLevel(tm('2009-12-01'), task('p1'), q))
164
167
 
165
168
  # Overide p1.m1 with 0 alert
166
169
  addAlert('2009-12-01', 0, task('p1.m1'))
167
- assert_equal(0, @j.alertLevel(tm('2009-12-01'), task('p1'), nil))
170
+ assert_equal(0, @j.alertLevel(tm('2009-12-01'), task('p1'), q))
168
171
  end
169
172
 
170
173
  private
@@ -24,7 +24,7 @@ class TaskJuggler
24
24
  class TestLimits < Test::Unit::TestCase
25
25
 
26
26
  def setup
27
- @p = Project.new('p1', 'p 1', '1.0', MessageHandler.new)
27
+ @p = Project.new('p1', 'p 1', '1.0')
28
28
  @p['start'] = TjTime.new('2009-01-21')
29
29
  @p['end'] = TjTime.new('2009-03-01')
30
30
  end
@@ -102,7 +102,7 @@ class TestLimits < Test::Unit::TestCase
102
102
  assert(l.ok?)
103
103
  l.inc(dateToIdx('2009-02-01-13:00'))
104
104
  assert(!l.ok?)
105
- assert(l.ok?(nil, true, r))
105
+ assert(!l.ok?(nil, true, r))
106
106
  end
107
107
 
108
108
  def test_with_resource_2
@@ -154,7 +154,7 @@ class TestLimits < Test::Unit::TestCase
154
154
  assert(!l.ok?)
155
155
  l.inc(dateToIdx('2009-02-01-12:00'), r)
156
156
  assert(!l.ok?)
157
- assert(l.ok?(nil, true, r))
157
+ assert(!l.ok?(nil, true, r))
158
158
  l.inc(dateToIdx('2009-02-01-13:00'), r)
159
159
  assert(!l.ok?)
160
160
  assert(!l.ok?(nil, true, r))
@@ -28,8 +28,7 @@ class TestProject < Test::Unit::TestCase
28
28
  end
29
29
 
30
30
  def test_helloWorld
31
- p = TaskJuggler::Project.new('hello', 'Hello World', '1.0',
32
- MessageHandler.new(true))
31
+ p = TaskJuggler::Project.new('hello', 'Hello World', '1.0')
33
32
  p['start'] = TjTime.new('2008-07-24')
34
33
  p['end'] = TjTime.new('2008-08-31')
35
34
 
@@ -177,7 +177,7 @@ EOT
177
177
  end
178
178
 
179
179
  def check(text, ref, macros = [])
180
- s = TaskJuggler::ProjectFileScanner.new(text, MessageHandler.new(true))
180
+ s = TaskJuggler::ProjectFileScanner.new(text)
181
181
  s.open(true)
182
182
 
183
183
  macros.each do |macro|
@@ -28,7 +28,7 @@ class TestPropertySet < Test::Unit::TestCase
28
28
  end
29
29
 
30
30
  def test_index
31
- p = TaskJuggler::Project.new('p', 'Project', '1.0', MessageHandler.new(true))
31
+ p = TaskJuggler::Project.new('p', 'Project', '1.0')
32
32
  p['start'] = TjTime.new('2008-07-29')
33
33
  p['end'] = TjTime.new('2008-08-31')
34
34
 
@@ -23,8 +23,7 @@ class TaskJuggler
23
23
  class TestQuery < Test::Unit::TestCase
24
24
 
25
25
  def setup
26
- @mh = MessageHandler.new
27
- @p = TaskJuggler::Project.new('id', 'name', 'ver', @mh)
26
+ @p = TaskJuggler::Project.new('id', 'name', 'ver')
28
27
  @p['start'] = TjTime.new('2010-09-25')
29
28
  @p['end'] = TjTime.new('2010-09-25')
30
29
  end
@@ -42,7 +41,7 @@ class TestQuery < Test::Unit::TestCase
42
41
  [ 2.0, '2880.0', '48.0', '2.0', '0.3', '0.1', '2.0d'],
43
42
  [ 3.0, '4320.0', '72.0', '3.0', '0.4', '0.1', '3.0d'],
44
43
  [ 4.0, '5760.0', '96.0', '4.0', '0.6', '0.1', '4.0d'],
45
- [ 7.0, '10080.0', '168.0', '7.0', '1.0', '0.2', '1.0w'],
44
+ [ 7.0, '10080.0', '168.0', '7.0', '1.0', '0.2', '7.0d'],
46
45
  [ 14.0, '20160.0', '336.0', '14.0', '2.0', '0.5', '2.0w'],
47
46
  [ 28.0, '40320.0', '672.0', '28.0', '4.0', '0.9', '4.0w']
48
47
  ]
@@ -62,12 +61,12 @@ class TestQuery < Test::Unit::TestCase
62
61
  # Inp mins hours days weeks months shortauto
63
62
  [ 0.0, '0.0', '0.0', '0.0', '0.0', '0.0', '0.0d'],
64
63
  [ 0.25, '120.0', '2.0', '0.3', '0.1', '0.0', '2.0h'],
65
- [ 0.1, '48.0', '0.8', '0.1', '0.0', '0.0', '48.0min'],
66
- [ 0.5, '240.0', '4.0', '0.5', '0.1', '0.0', '4.0h'],
64
+ [ 0.1, '48.0', '0.8', '0.1', '0.0', '0.0', '0.1d'],
65
+ [ 0.5, '240.0', '4.0', '0.5', '0.1', '0.0', '0.5d'],
67
66
  [ 1.0, '480.0', '8.0', '1.0', '0.2', '0.0', '1.0d'],
68
67
  [ 1.5, '720.0', '12.0', '1.5', '0.3', '0.1', '1.5d'],
69
68
  [ 2.0, '960.0', '16.0', '2.0', '0.4', '0.1', '2.0d'],
70
- [ 5.0, '2400.0', '40.0', '5.0', '1.0', '0.2', '1.0w'],
69
+ [ 5.0, '2400.0', '40.0', '5.0', '1.0', '0.2', '5.0d'],
71
70
  [ 10.0, '4800.0', '80.0', '10.0', '2.0', '0.5', '2.0w']
72
71
  ]
73
72
  vals.each do |inp, *out|
@@ -41,11 +41,17 @@ class TestReportGenerator < Test::Unit::TestCase
41
41
  path = File.dirname(__FILE__) + '/'
42
42
  Dir.glob(path + 'TestSuite/ReportGenerator/Errors/*.tjp').each do |f|
43
43
  ENV['TZ'] = 'Europe/Berlin'
44
- tj = TaskJuggler.new(false)
45
- assert(tj.parse([ f ]), "Parser failed for #{f}")
46
- assert(tj.schedule, "Scheduler failed for #{f}")
47
- tj.warnTsDeltas = true
48
- tj.generateReports(@tmpDir)
44
+ (mh = TaskJuggler::MessageHandlerInstance.instance).reset
45
+ mh.outputLevel = :none
46
+ mh.trapSetup = true
47
+ begin
48
+ tj = TaskJuggler.new
49
+ assert(tj.parse([ f ]), "Parser failed for #{f}")
50
+ assert(tj.schedule, "Scheduler failed for #{f}")
51
+ tj.warnTsDeltas = true
52
+ tj.generateReports(@tmpDir)
53
+ rescue TaskJuggler::TjRuntimeError
54
+ end
49
55
  checkMessages(tj, f)
50
56
  end
51
57
  end
@@ -54,11 +60,13 @@ class TestReportGenerator < Test::Unit::TestCase
54
60
  path = File.dirname(__FILE__) + '/'
55
61
  Dir.glob(path + 'TestSuite/ReportGenerator/Correct/*.tjp').each do |f|
56
62
  ENV['TZ'] = 'Europe/Berlin'
57
- tj = TaskJuggler.new(true)
63
+ (mh = TaskJuggler::MessageHandlerInstance.instance).reset
64
+ mh.outputLevel = :none
65
+ tj = TaskJuggler.new
58
66
  assert(tj.parse([ f ]), "Parser failed for #{f}")
59
67
  assert(tj.schedule, "Scheduler failed for #{f}")
60
68
  assert(tj.generateReports(@tmpDir), "Report generator failed for #{f}")
61
- assert(tj.messageHandler.messages.empty?, "Unexpected error in #{f}")
69
+ assert(mh.messages.empty?, "Unexpected error in #{f}")
62
70
 
63
71
  checkReports(f)
64
72
  end
@@ -22,7 +22,7 @@ require 'taskjuggler/MessageHandler'
22
22
  class RTFDummy < TaskJuggler::RichTextFunctionHandler
23
23
 
24
24
  def initialize()
25
- super(nil, 'dummy')
25
+ super('dummy')
26
26
  @blockFunction = true
27
27
  end
28
28
 
@@ -936,8 +936,9 @@ EOT
936
936
 
937
937
 
938
938
  def newRichText(text)
939
- mh = TaskJuggler::MessageHandler.new(true)
940
- rText = TaskJuggler::RichText.new(text, [ RTFDummy.new ], mh)
939
+ mh = TaskJuggler::MessageHandlerInstance.instance
940
+ mh.outputLevel = :none
941
+ rText = TaskJuggler::RichText.new(text, [ RTFDummy.new ])
941
942
  assert(rti = rText.generateIntermediateFormat, mh.to_s)
942
943
  rti.linkTarget = '_blank'
943
944
  rti
@@ -27,10 +27,16 @@ class TestScheduler < Test::Unit::TestCase
27
27
  path = File.dirname(__FILE__) + '/'
28
28
  Dir.glob(path + 'TestSuite/Scheduler/Errors/*.tjp').each do |f|
29
29
  ENV['TZ'] = 'Europe/Berlin'
30
- tj = TaskJuggler.new(false)
31
- assert(tj.parse([ f ]), "Parser failed for #{f}")
32
- tj.warnTsDeltas = true
33
- tj.schedule
30
+ (mh = TaskJuggler::MessageHandlerInstance.instance).reset
31
+ mh.outputLevel = :none
32
+ mh.trapSetup = true
33
+ begin
34
+ tj = TaskJuggler.new
35
+ assert(tj.parse([ f ]), "Parser failed for #{f}")
36
+ tj.warnTsDeltas = true
37
+ tj.schedule
38
+ rescue TaskJuggler::TjRuntimeError
39
+ end
34
40
  checkMessages(tj, f)
35
41
  end
36
42
  end
@@ -39,9 +45,15 @@ class TestScheduler < Test::Unit::TestCase
39
45
  path = File.dirname(__FILE__) + '/'
40
46
  Dir.glob(path + 'TestSuite/Scheduler/Correct/*.tjp').each do |f|
41
47
  ENV['TZ'] = 'Europe/Berlin'
42
- tj = TaskJuggler.new(false)
43
- assert(tj.parse([ f ]), "Parser failed for #{f}")
44
- assert(tj.schedule, "Scheduler failed for #{f}")
48
+ (mh = TaskJuggler::MessageHandlerInstance.instance).reset
49
+ mh.outputLevel = :none
50
+ mh.trapSetup = true
51
+ begin
52
+ tj = TaskJuggler.new
53
+ assert(tj.parse([ f ]), "Parser failed for #{f}")
54
+ assert(tj.schedule, "Scheduler failed for #{f}")
55
+ rescue TaskJuggler::TjRuntimeError
56
+ end
45
57
  checkMessages(tj, f)
46
58
  end
47
59
  end
@@ -21,8 +21,8 @@ class TestPropertySet < Test::Unit::TestCase
21
21
 
22
22
  def setup
23
23
  TaskJuggler::ShiftAssignments.sbClear
24
- @p = TaskJuggler::Project.new('p', 'Project', '1.0',
25
- TaskJuggler::MessageHandler.new(true))
24
+ TaskJuggler::MessageHandlerInstance.instance.reset
25
+ @p = TaskJuggler::Project.new('p', 'Project', '1.0')
26
26
  @p['start'] = TaskJuggler::TjTime.new('2008-07-29')
27
27
  @p['end'] = TaskJuggler::TjTime.new('2008-08-31')
28
28
  @s1 = TaskJuggler::Shift.new(@p, 's1', "Shift2", nil).scenario(0)
@@ -20,6 +20,25 @@ require 'taskjuggler/MessageHandler'
20
20
 
21
21
  class TestSimpleQueryExpander < Test::Unit::TestCase
22
22
 
23
+ class Scenario
24
+
25
+ def id
26
+ 'scId'
27
+ end
28
+
29
+ end
30
+
31
+ class Project
32
+
33
+ def initialize
34
+ end
35
+
36
+ def scenario(foo)
37
+ Scenario.new
38
+ end
39
+
40
+ end
41
+
23
42
  class Query
24
43
 
25
44
  def initialize
@@ -28,6 +47,14 @@ class TestSimpleQueryExpander < Test::Unit::TestCase
28
47
  def process
29
48
  end
30
49
 
50
+ def project
51
+ Project.new
52
+ end
53
+
54
+ def scenarioIdx
55
+ 0
56
+ end
57
+
31
58
  def attributeId=(value)
32
59
  end
33
60
 
@@ -38,6 +65,7 @@ class TestSimpleQueryExpander < Test::Unit::TestCase
38
65
  def to_s
39
66
  'XXX'
40
67
  end
68
+
41
69
  end
42
70
 
43
71
  def setup
@@ -48,8 +76,7 @@ class TestSimpleQueryExpander < Test::Unit::TestCase
48
76
 
49
77
  def test_expand
50
78
  exp = TaskJuggler::SimpleQueryExpander.new('foo <-bar-> foo',
51
- Query.new,
52
- nil, nil)
79
+ Query.new, nil)
53
80
  assert_equal('foo XXX foo', exp.expand)
54
81
  end
55
82
 
@@ -16,8 +16,8 @@ $:.unshift File.dirname(__FILE__)
16
16
 
17
17
  require 'test/unit'
18
18
 
19
- require 'MessageChecker'
20
19
  require 'taskjuggler/TaskJuggler'
20
+ require 'MessageChecker'
21
21
 
22
22
  class TestSyntax < Test::Unit::TestCase
23
23
 
@@ -30,9 +30,12 @@ class TestSyntax < Test::Unit::TestCase
30
30
  path = File.dirname(__FILE__) + '/'
31
31
  Dir.glob(path + 'TestSuite/Syntax/Correct/*.tjp').each do |f|
32
32
  ENV['TZ'] = 'Europe/Berlin'
33
- tj = TaskJuggler.new(false)
33
+ (mh = TaskJuggler::MessageHandlerInstance.instance).reset
34
+ mh.outputLevel = :none
35
+ mh.trapSetup = true
36
+ tj = TaskJuggler.new
34
37
  assert(tj.parse([ f ]), "Parser failed for #{f}")
35
- assert(tj.messageHandler.messages.empty?, "Unexpected error in #{f}")
38
+ assert(mh.messages.empty?, "Unexpected error in #{f}")
36
39
  end
37
40
  end
38
41
 
@@ -40,8 +43,14 @@ class TestSyntax < Test::Unit::TestCase
40
43
  path = File.dirname(__FILE__) + '/'
41
44
  Dir.glob(path + 'TestSuite/Syntax/Errors/*.tjp').each do |f|
42
45
  ENV['TZ'] = 'Europe/Berlin'
43
- tj = TaskJuggler.new(false)
44
- assert(!tj.parse([ f ]), "Parser succedded for #{f}")
46
+ (mh = TaskJuggler::MessageHandlerInstance.instance).reset
47
+ mh.outputLevel = :none
48
+ mh.trapSetup = true
49
+ begin
50
+ tj = TaskJuggler.new
51
+ assert(!tj.parse([ f ]), "Parser succedded for #{f}")
52
+ rescue TaskJuggler::TjRuntimeError
53
+ end
45
54
  checkMessages(tj, f)
46
55
  end
47
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taskjuggler
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-11 00:00:00.000000000 Z
12
+ date: 2012-04-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mail
16
- requirement: &38476660 !ruby/object:Gem::Requirement
16
+ requirement: &19022880 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 2.2.15
21
+ version: 2.4.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *38476660
24
+ version_requirements: *19022880
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: term-ansicolor
27
- requirement: &38475380 !ruby/object:Gem::Requirement
27
+ requirement: &19022400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.7
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *38475380
35
+ version_requirements: *19022400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &38472780 !ruby/object:Gem::Requirement
38
+ requirement: &19021940 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: 2.5.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *38472780
46
+ version_requirements: *19021940
47
47
  description: ! 'TaskJuggler is a modern and powerful, Free and Open Source Software
48
48
  project
49
49
 
@@ -74,6 +74,7 @@ executables:
74
74
  - tj3ts_receiver
75
75
  - tj3ts_sender
76
76
  - tj3ts_summary
77
+ - tj3webd
77
78
  extensions: []
78
79
  extra_rdoc_files:
79
80
  - README.rdoc
@@ -108,12 +109,23 @@ files:
108
109
  - lib/taskjuggler/LeaveList.rb
109
110
  - lib/taskjuggler/Limits.rb
110
111
  - lib/taskjuggler/Log.rb
111
- - lib/taskjuggler/LogFile.rb
112
112
  - lib/taskjuggler/LogicalExpression.rb
113
113
  - lib/taskjuggler/LogicalFunction.rb
114
114
  - lib/taskjuggler/LogicalOperation.rb
115
115
  - lib/taskjuggler/MessageHandler.rb
116
116
  - lib/taskjuggler/PTNProxy.rb
117
+ - lib/taskjuggler/Painter.rb
118
+ - lib/taskjuggler/Painter/BasicShapes.rb
119
+ - lib/taskjuggler/Painter/Color.rb
120
+ - lib/taskjuggler/Painter/Element.rb
121
+ - lib/taskjuggler/Painter/FontData.rb
122
+ - lib/taskjuggler/Painter/FontMetrics.rb
123
+ - lib/taskjuggler/Painter/FontMetricsData.rb
124
+ - lib/taskjuggler/Painter/Group.rb
125
+ - lib/taskjuggler/Painter/Points.rb
126
+ - lib/taskjuggler/Painter/Primitives.rb
127
+ - lib/taskjuggler/Painter/SVGSupport.rb
128
+ - lib/taskjuggler/Painter/Text.rb
117
129
  - lib/taskjuggler/Project.rb
118
130
  - lib/taskjuggler/ProjectFileParser.rb
119
131
  - lib/taskjuggler/ProjectFileScanner.rb
@@ -157,6 +169,7 @@ files:
157
169
  - lib/taskjuggler/StdIoWrapper.rb
158
170
  - lib/taskjuggler/SyntaxReference.rb
159
171
  - lib/taskjuggler/TableColumnDefinition.rb
172
+ - lib/taskjuggler/TableColumnSorter.rb
160
173
  - lib/taskjuggler/Task.rb
161
174
  - lib/taskjuggler/TaskDependency.rb
162
175
  - lib/taskjuggler/TaskJuggler.rb
@@ -199,7 +212,9 @@ files:
199
212
  - lib/taskjuggler/apps/Tj3TsReceiver.rb
200
213
  - lib/taskjuggler/apps/Tj3TsSender.rb
201
214
  - lib/taskjuggler/apps/Tj3TsSummary.rb
215
+ - lib/taskjuggler/apps/Tj3WebD.rb
202
216
  - lib/taskjuggler/daemon/Daemon.rb
217
+ - lib/taskjuggler/daemon/DaemonConnector.rb
203
218
  - lib/taskjuggler/daemon/ProcessIntercom.rb
204
219
  - lib/taskjuggler/daemon/ProjectBroker.rb
205
220
  - lib/taskjuggler/daemon/ProjectServer.rb
@@ -210,6 +225,7 @@ files:
210
225
  - lib/taskjuggler/deep_copy.rb
211
226
  - lib/taskjuggler/reports/AccountListRE.rb
212
227
  - lib/taskjuggler/reports/CSVFile.rb
228
+ - lib/taskjuggler/reports/ChartPlotter.rb
213
229
  - lib/taskjuggler/reports/CollisionDetector.rb
214
230
  - lib/taskjuggler/reports/ColumnTable.rb
215
231
  - lib/taskjuggler/reports/GanttChart.rb
@@ -242,6 +258,7 @@ files:
242
258
  - lib/taskjuggler/reports/TextReport.rb
243
259
  - lib/taskjuggler/reports/TimeSheetReport.rb
244
260
  - lib/taskjuggler/reports/TjpExportRE.rb
261
+ - lib/taskjuggler/reports/TraceReport.rb
245
262
  - lib/tj3.rb
246
263
  - lib/tj3client.rb
247
264
  - lib/tj3d.rb
@@ -251,6 +268,7 @@ files:
251
268
  - lib/tj3ts_receiver.rb
252
269
  - lib/tj3ts_sender.rb
253
270
  - lib/tj3ts_summary.rb
271
+ - lib/tj3webd.rb
254
272
  - lib/updateheader.sh
255
273
  - data/css/tjmanual.css
256
274
  - data/css/tjreport.css
@@ -283,6 +301,11 @@ files:
283
301
  - examples/Fedora-20/icons/fedoralogo.png
284
302
  - examples/Fedora-20/reports.tji
285
303
  - examples/ProjectTemplate/template.tjp
304
+ - examples/Scrum/Product Burndown.csv
305
+ - examples/Scrum/Sprint 1 Burndown.csv
306
+ - examples/Scrum/Sprint 2 Burndown.csv
307
+ - examples/Scrum/Sprint 3 Burndown.csv
308
+ - examples/Scrum/scrum.tjp
286
309
  - examples/ToDo-List/todolist.tjp
287
310
  - examples/Tutorial/tutorial.tjp
288
311
  - tasks/changelog.rake
@@ -301,6 +324,7 @@ files:
301
324
  - manual/html/aggregate.html
302
325
  - manual/html/accountreport.html
303
326
  - manual/html/length.html
327
+ - manual/html/tracereport.html
304
328
  - manual/html/purge.html
305
329
  - manual/html/mandatory.html
306
330
  - manual/html/precedes.html
@@ -408,6 +432,7 @@ files:
408
432
  - manual/html/scenarios.export.html
409
433
  - manual/html/priority.timesheet.html
410
434
  - manual/html/milestone.html
435
+ - manual/html/width.html
411
436
  - manual/html/TaskJuggler_2x_Migration.html
412
437
  - manual/html/extend.html
413
438
  - manual/html/note.task.html
@@ -485,6 +510,7 @@ files:
485
510
  - manual/html/caption.html
486
511
  - manual/html/projectids.html
487
512
  - manual/html/tagfile.html
513
+ - manual/html/height.html
488
514
  - manual/html/Installation.html
489
515
  - manual/html/include.project.html
490
516
  - manual/html/flags.task.html
@@ -590,6 +616,7 @@ files:
590
616
  - test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv
591
617
  - test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv
592
618
  - test/TestSuite/CSV-Reports/refs/targets.csv
619
+ - test/TestSuite/CSV-Reports/refs/taskcounter.csv
593
620
  - test/TestSuite/CSV-Reports/refs/taskreport.csv
594
621
  - test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv
595
622
  - test/TestSuite/CSV-Reports/refs/weekly.csv
@@ -717,6 +744,7 @@ files:
717
744
  - test/TestSuite/Scheduler/Correct/Duration.tjp
718
745
  - test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp
719
746
  - test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp
747
+ - test/TestSuite/Scheduler/Correct/Leaves.tjp
720
748
  - test/TestSuite/Scheduler/Correct/Limits.tjp
721
749
  - test/TestSuite/Scheduler/Correct/Manager.tjp
722
750
  - test/TestSuite/Scheduler/Correct/Mandatory.tjp
@@ -870,6 +898,7 @@ files:
870
898
  - test/TestSuite/Syntax/Correct/TimeFrame.tjp
871
899
  - test/TestSuite/Syntax/Correct/TimeSheet1.tjp
872
900
  - test/TestSuite/Syntax/Correct/Timezone.tjp
901
+ - test/TestSuite/Syntax/Correct/TraceReport.tjp
873
902
  - test/TestSuite/Syntax/Correct/Vacation.tjp
874
903
  - test/TestSuite/Syntax/Correct/include/dir1/file2.tji
875
904
  - test/TestSuite/Syntax/Correct/include/dir1/file5.tji
@@ -1007,14 +1036,17 @@ files:
1007
1036
  - test/test_UTF8String.rb
1008
1037
  - test/test_WorkingHours.rb
1009
1038
  - test/test_deep_copy.rb
1039
+ - spec/Color_spec.rb
1010
1040
  - spec/ICalendar_spec.rb
1011
1041
  - spec/IntervalList_spec.rb
1012
1042
  - spec/ProjectBroker_spec.rb
1013
1043
  - spec/StatusSheets_spec.rb
1044
+ - spec/TableColumnSorter_spec.rb
1014
1045
  - spec/TernarySearchTree_spec.rb
1015
1046
  - spec/TimeSheets_spec.rb
1016
1047
  - spec/Tj3Daemon_spec.rb
1017
1048
  - spec/Tj3_spec.rb
1049
+ - spec/TraceReport_spec.rb
1018
1050
  - spec/support/DaemonControl.rb
1019
1051
  - spec/support/spec_helper.rb
1020
1052
  - bin/tj3
@@ -1026,6 +1058,7 @@ files:
1026
1058
  - bin/tj3ts_receiver
1027
1059
  - bin/tj3ts_sender
1028
1060
  - bin/tj3ts_summary
1061
+ - bin/tj3webd
1029
1062
  homepage: http://www.taskjuggler.org
1030
1063
  licenses: []
1031
1064
  post_install_message:
@@ -1075,6 +1108,7 @@ test_files:
1075
1108
  - test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv
1076
1109
  - test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv
1077
1110
  - test/TestSuite/CSV-Reports/refs/targets.csv
1111
+ - test/TestSuite/CSV-Reports/refs/taskcounter.csv
1078
1112
  - test/TestSuite/CSV-Reports/refs/taskreport.csv
1079
1113
  - test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv
1080
1114
  - test/TestSuite/CSV-Reports/refs/weekly.csv
@@ -1202,6 +1236,7 @@ test_files:
1202
1236
  - test/TestSuite/Scheduler/Correct/Duration.tjp
1203
1237
  - test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp
1204
1238
  - test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp
1239
+ - test/TestSuite/Scheduler/Correct/Leaves.tjp
1205
1240
  - test/TestSuite/Scheduler/Correct/Limits.tjp
1206
1241
  - test/TestSuite/Scheduler/Correct/Manager.tjp
1207
1242
  - test/TestSuite/Scheduler/Correct/Mandatory.tjp
@@ -1355,6 +1390,7 @@ test_files:
1355
1390
  - test/TestSuite/Syntax/Correct/TimeFrame.tjp
1356
1391
  - test/TestSuite/Syntax/Correct/TimeSheet1.tjp
1357
1392
  - test/TestSuite/Syntax/Correct/Timezone.tjp
1393
+ - test/TestSuite/Syntax/Correct/TraceReport.tjp
1358
1394
  - test/TestSuite/Syntax/Correct/Vacation.tjp
1359
1395
  - test/TestSuite/Syntax/Correct/include/dir1/file2.tji
1360
1396
  - test/TestSuite/Syntax/Correct/include/dir1/file5.tji
@@ -1492,13 +1528,16 @@ test_files:
1492
1528
  - test/test_UTF8String.rb
1493
1529
  - test/test_WorkingHours.rb
1494
1530
  - test/test_deep_copy.rb
1531
+ - spec/Color_spec.rb
1495
1532
  - spec/ICalendar_spec.rb
1496
1533
  - spec/IntervalList_spec.rb
1497
1534
  - spec/ProjectBroker_spec.rb
1498
1535
  - spec/StatusSheets_spec.rb
1536
+ - spec/TableColumnSorter_spec.rb
1499
1537
  - spec/TernarySearchTree_spec.rb
1500
1538
  - spec/TimeSheets_spec.rb
1501
1539
  - spec/Tj3Daemon_spec.rb
1502
1540
  - spec/Tj3_spec.rb
1541
+ - spec/TraceReport_spec.rb
1503
1542
  - spec/support/DaemonControl.rb
1504
1543
  - spec/support/spec_helper.rb