taskjuggler 3.5.0 → 3.6.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 (547) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +31 -0
  3. data/COPYING +72 -13
  4. data/README.rdoc +8 -8
  5. data/bin/tj3 +1 -1
  6. data/bin/tj3client +1 -1
  7. data/bin/tj3d +1 -1
  8. data/bin/tj3man +1 -1
  9. data/bin/tj3ss_receiver +1 -1
  10. data/bin/tj3ss_sender +1 -1
  11. data/bin/tj3ts_receiver +1 -1
  12. data/bin/tj3ts_sender +1 -1
  13. data/bin/tj3ts_summary +1 -1
  14. data/bin/tj3webd +1 -1
  15. data/data/tjp.vim +13 -5
  16. data/examples/Fedora-20/f-20.tjp +15 -15
  17. data/examples/ProjectTemplate/template.tjp +2 -2
  18. data/lib/header.tmpl +2 -2
  19. data/lib/taskjuggler/Account.rb +2 -2
  20. data/lib/taskjuggler/AccountCredit.rb +2 -2
  21. data/lib/taskjuggler/AccountScenario.rb +2 -2
  22. data/lib/taskjuggler/AlertLevelDefinitions.rb +2 -2
  23. data/lib/taskjuggler/AlgorithmDiff.rb +4 -4
  24. data/lib/taskjuggler/Allocation.rb +2 -2
  25. data/lib/taskjuggler/AppConfig.rb +3 -3
  26. data/lib/taskjuggler/AttributeBase.rb +12 -4
  27. data/lib/taskjuggler/AttributeDefinition.rb +2 -2
  28. data/lib/taskjuggler/Attributes.rb +3 -3
  29. data/lib/taskjuggler/BatchProcessor.rb +2 -2
  30. data/lib/taskjuggler/Booking.rb +2 -2
  31. data/lib/taskjuggler/Charge.rb +2 -2
  32. data/lib/taskjuggler/ChargeSet.rb +2 -2
  33. data/lib/taskjuggler/DataCache.rb +2 -2
  34. data/lib/taskjuggler/FileList.rb +2 -2
  35. data/lib/taskjuggler/HTMLDocument.rb +2 -2
  36. data/lib/taskjuggler/HTMLElements.rb +3 -3
  37. data/lib/taskjuggler/ICalendar.rb +2 -2
  38. data/lib/taskjuggler/Interval.rb +2 -2
  39. data/lib/taskjuggler/IntervalList.rb +2 -2
  40. data/lib/taskjuggler/Journal.rb +2 -2
  41. data/lib/taskjuggler/KateSyntax.rb +2 -2
  42. data/lib/taskjuggler/KeywordArray.rb +2 -2
  43. data/lib/taskjuggler/KeywordDocumentation.rb +55 -33
  44. data/lib/taskjuggler/LeaveList.rb +4 -3
  45. data/lib/taskjuggler/Limits.rb +2 -2
  46. data/lib/taskjuggler/Log.rb +2 -2
  47. data/lib/taskjuggler/LogicalExpression.rb +2 -2
  48. data/lib/taskjuggler/LogicalFunction.rb +15 -3
  49. data/lib/taskjuggler/LogicalOperation.rb +15 -10
  50. data/lib/taskjuggler/MessageHandler.rb +2 -2
  51. data/lib/taskjuggler/PTNProxy.rb +2 -2
  52. data/lib/taskjuggler/Painter.rb +2 -2
  53. data/lib/taskjuggler/Project.rb +8 -2
  54. data/lib/taskjuggler/ProjectFileParser.rb +3 -3
  55. data/lib/taskjuggler/ProjectFileScanner.rb +2 -2
  56. data/lib/taskjuggler/PropertyList.rb +8 -15
  57. data/lib/taskjuggler/PropertySet.rb +6 -2
  58. data/lib/taskjuggler/PropertyTreeNode.rb +20 -2
  59. data/lib/taskjuggler/Query.rb +9 -4
  60. data/lib/taskjuggler/RealFormat.rb +2 -2
  61. data/lib/taskjuggler/Resource.rb +2 -2
  62. data/lib/taskjuggler/ResourceScenario.rb +45 -33
  63. data/lib/taskjuggler/RichText.rb +2 -2
  64. data/lib/taskjuggler/RichText/Document.rb +2 -2
  65. data/lib/taskjuggler/RichText/Element.rb +2 -2
  66. data/lib/taskjuggler/RichText/FunctionExample.rb +2 -2
  67. data/lib/taskjuggler/RichText/FunctionHandler.rb +2 -2
  68. data/lib/taskjuggler/RichText/Parser.rb +2 -2
  69. data/lib/taskjuggler/RichText/RTFHandlers.rb +2 -2
  70. data/lib/taskjuggler/RichText/RTFNavigator.rb +2 -2
  71. data/lib/taskjuggler/RichText/RTFQuery.rb +2 -2
  72. data/lib/taskjuggler/RichText/RTFReport.rb +2 -2
  73. data/lib/taskjuggler/RichText/RTFReportLink.rb +2 -2
  74. data/lib/taskjuggler/RichText/RTFWithQuerySupport.rb +2 -2
  75. data/lib/taskjuggler/RichText/Scanner.rb +2 -2
  76. data/lib/taskjuggler/RichText/Snip.rb +2 -2
  77. data/lib/taskjuggler/RichText/SyntaxRules.rb +2 -2
  78. data/lib/taskjuggler/RichText/TOCEntry.rb +2 -2
  79. data/lib/taskjuggler/RichText/TableOfContents.rb +2 -2
  80. data/lib/taskjuggler/RuntimeConfig.rb +4 -4
  81. data/lib/taskjuggler/Scenario.rb +2 -2
  82. data/lib/taskjuggler/ScenarioData.rb +2 -2
  83. data/lib/taskjuggler/Scoreboard.rb +2 -2
  84. data/lib/taskjuggler/SheetHandlerBase.rb +3 -3
  85. data/lib/taskjuggler/SheetReceiver.rb +2 -2
  86. data/lib/taskjuggler/SheetSender.rb +2 -2
  87. data/lib/taskjuggler/Shift.rb +2 -2
  88. data/lib/taskjuggler/ShiftAssignments.rb +2 -2
  89. data/lib/taskjuggler/ShiftScenario.rb +2 -2
  90. data/lib/taskjuggler/SimpleQueryExpander.rb +2 -2
  91. data/lib/taskjuggler/StatusSheetReceiver.rb +2 -2
  92. data/lib/taskjuggler/StatusSheetSender.rb +4 -4
  93. data/lib/taskjuggler/StdIoWrapper.rb +2 -2
  94. data/lib/taskjuggler/SyntaxReference.rb +3 -3
  95. data/lib/taskjuggler/TableColumnDefinition.rb +2 -2
  96. data/lib/taskjuggler/TableColumnSorter.rb +2 -2
  97. data/lib/taskjuggler/Task.rb +2 -2
  98. data/lib/taskjuggler/TaskDependency.rb +2 -2
  99. data/lib/taskjuggler/TaskJuggler.rb +3 -4
  100. data/lib/taskjuggler/TaskScenario.rb +138 -60
  101. data/lib/taskjuggler/TernarySearchTree.rb +2 -2
  102. data/lib/taskjuggler/TextFormatter.rb +2 -2
  103. data/lib/taskjuggler/TextParser.rb +2 -2
  104. data/lib/taskjuggler/TextParser/MacroTable.rb +2 -2
  105. data/lib/taskjuggler/TextParser/Pattern.rb +2 -2
  106. data/lib/taskjuggler/TextParser/Rule.rb +2 -2
  107. data/lib/taskjuggler/TextParser/Scanner.rb +3 -3
  108. data/lib/taskjuggler/TextParser/SourceFileInfo.rb +2 -2
  109. data/lib/taskjuggler/TextParser/StackElement.rb +2 -2
  110. data/lib/taskjuggler/TextParser/State.rb +2 -2
  111. data/lib/taskjuggler/TextParser/TokenDoc.rb +2 -2
  112. data/lib/taskjuggler/TimeSheetReceiver.rb +2 -2
  113. data/lib/taskjuggler/TimeSheetSender.rb +2 -2
  114. data/lib/taskjuggler/TimeSheetSummary.rb +3 -3
  115. data/lib/taskjuggler/TimeSheets.rb +2 -2
  116. data/lib/taskjuggler/Tj3AppBase.rb +2 -2
  117. data/lib/taskjuggler/Tj3Config.rb +5 -5
  118. data/lib/taskjuggler/Tj3SheetAppBase.rb +2 -2
  119. data/lib/taskjuggler/TjException.rb +2 -2
  120. data/lib/taskjuggler/TjTime.rb +2 -2
  121. data/lib/taskjuggler/TjpExample.rb +2 -2
  122. data/lib/taskjuggler/TjpSyntaxRules.rb +206 -52
  123. data/lib/taskjuggler/URLParameter.rb +2 -2
  124. data/lib/taskjuggler/UTF8String.rb +2 -2
  125. data/lib/taskjuggler/UserManual.rb +3 -2
  126. data/lib/taskjuggler/VimSyntax.rb +4 -4
  127. data/lib/taskjuggler/WorkingHours.rb +2 -2
  128. data/lib/taskjuggler/XMLDocument.rb +2 -2
  129. data/lib/taskjuggler/XMLElement.rb +2 -2
  130. data/lib/taskjuggler/apps/Tj3.rb +2 -2
  131. data/lib/taskjuggler/apps/Tj3Client.rb +2 -2
  132. data/lib/taskjuggler/apps/Tj3Daemon.rb +7 -3
  133. data/lib/taskjuggler/apps/Tj3Man.rb +3 -3
  134. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +2 -2
  135. data/lib/taskjuggler/apps/Tj3SsSender.rb +2 -2
  136. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +2 -2
  137. data/lib/taskjuggler/apps/Tj3TsSender.rb +2 -2
  138. data/lib/taskjuggler/apps/Tj3TsSummary.rb +2 -2
  139. data/lib/taskjuggler/apps/Tj3WebD.rb +7 -3
  140. data/lib/taskjuggler/daemon/Daemon.rb +2 -2
  141. data/lib/taskjuggler/daemon/DaemonConnector.rb +2 -2
  142. data/lib/taskjuggler/daemon/ProcessIntercom.rb +4 -3
  143. data/lib/taskjuggler/daemon/ProjectBroker.rb +2 -2
  144. data/lib/taskjuggler/daemon/ProjectServer.rb +2 -2
  145. data/lib/taskjuggler/daemon/ReportServer.rb +2 -2
  146. data/lib/taskjuggler/daemon/ReportServlet.rb +22 -11
  147. data/lib/taskjuggler/daemon/WebServer.rb +2 -2
  148. data/lib/taskjuggler/daemon/WelcomePage.rb +2 -2
  149. data/lib/taskjuggler/deep_copy.rb +2 -2
  150. data/lib/taskjuggler/reports/AccountListRE.rb +2 -2
  151. data/lib/taskjuggler/reports/CSVFile.rb +2 -2
  152. data/lib/taskjuggler/reports/ChartPlotter.rb +2 -2
  153. data/lib/taskjuggler/reports/CollisionDetector.rb +2 -2
  154. data/lib/taskjuggler/reports/ColumnTable.rb +2 -2
  155. data/lib/taskjuggler/reports/ExportRE.rb +2 -2
  156. data/lib/taskjuggler/reports/GanttChart.rb +2 -2
  157. data/lib/taskjuggler/reports/GanttContainer.rb +2 -2
  158. data/lib/taskjuggler/reports/GanttHeader.rb +2 -2
  159. data/lib/taskjuggler/reports/GanttHeaderScaleItem.rb +2 -2
  160. data/lib/taskjuggler/reports/GanttLine.rb +8 -5
  161. data/lib/taskjuggler/reports/GanttLoadStack.rb +2 -2
  162. data/lib/taskjuggler/reports/GanttMilestone.rb +2 -2
  163. data/lib/taskjuggler/reports/GanttRouter.rb +2 -2
  164. data/lib/taskjuggler/reports/GanttTaskBar.rb +2 -2
  165. data/lib/taskjuggler/reports/HTMLGraphics.rb +2 -2
  166. data/lib/taskjuggler/reports/ICalReport.rb +2 -2
  167. data/lib/taskjuggler/reports/MspXmlRE.rb +6 -3
  168. data/lib/taskjuggler/reports/Navigator.rb +2 -2
  169. data/lib/taskjuggler/reports/NikuReport.rb +2 -2
  170. data/lib/taskjuggler/reports/Report.rb +6 -6
  171. data/lib/taskjuggler/reports/ReportBase.rb +2 -2
  172. data/lib/taskjuggler/reports/ReportContext.rb +2 -2
  173. data/lib/taskjuggler/reports/ReportTable.rb +2 -2
  174. data/lib/taskjuggler/reports/ReportTableCell.rb +2 -2
  175. data/lib/taskjuggler/reports/ReportTableColumn.rb +2 -2
  176. data/lib/taskjuggler/reports/ReportTableLegend.rb +2 -2
  177. data/lib/taskjuggler/reports/ReportTableLine.rb +2 -2
  178. data/lib/taskjuggler/reports/ResourceListRE.rb +2 -2
  179. data/lib/taskjuggler/reports/StatusSheetReport.rb +2 -2
  180. data/lib/taskjuggler/reports/TableReport.rb +22 -19
  181. data/lib/taskjuggler/reports/TableReportColumn.rb +2 -2
  182. data/lib/taskjuggler/reports/TagFile.rb +2 -2
  183. data/lib/taskjuggler/reports/TaskListRE.rb +2 -2
  184. data/lib/taskjuggler/reports/TextReport.rb +2 -2
  185. data/lib/taskjuggler/reports/TimeSheetReport.rb +2 -2
  186. data/lib/taskjuggler/reports/TjpExportRE.rb +2 -2
  187. data/lib/taskjuggler/reports/TraceReport.rb +3 -3
  188. data/lib/tj3.rb +2 -2
  189. data/lib/tj3client.rb +2 -2
  190. data/lib/tj3d.rb +2 -2
  191. data/lib/tj3man.rb +2 -2
  192. data/lib/tj3ss_receiver.rb +2 -2
  193. data/lib/tj3ss_sender.rb +2 -2
  194. data/lib/tj3ts_receiver.rb +2 -2
  195. data/lib/tj3ts_sender.rb +2 -2
  196. data/lib/tj3ts_summary.rb +2 -2
  197. data/lib/tj3webd.rb +2 -2
  198. data/manual/Day_To_Day_Juggling +7 -7
  199. data/manual/Getting_Started +2 -2
  200. data/manual/Installation +4 -4
  201. data/manual/Intro +1 -1
  202. data/manual/List_Attributes +45 -0
  203. data/manual/Rich_Text_Attributes +5 -5
  204. data/manual/Software +1 -1
  205. data/manual/TaskJuggler_2x_Migration +2 -2
  206. data/manual/html/Day_To_Day_Juggling.html +9 -9
  207. data/manual/html/Getting_Started.html +3 -3
  208. data/manual/html/How_To_Contribute.html +2 -2
  209. data/manual/html/Installation.html +6 -6
  210. data/manual/html/Intro.html +3 -3
  211. data/manual/html/List_Attributes.html +76 -0
  212. data/manual/html/Reporting_Bugs.html +2 -2
  213. data/manual/html/Rich_Text_Attributes.html +9 -9
  214. data/manual/html/Software.html +5 -5
  215. data/manual/html/TaskJuggler_2x_Migration.html +4 -4
  216. data/manual/html/TaskJuggler_Internals.html +2 -2
  217. data/manual/html/The_TaskJuggler_Syntax.html +2 -2
  218. data/manual/html/Tutorial.html +2 -2
  219. data/manual/html/account.html +5 -3
  220. data/manual/html/account.task.html +5 -3
  221. data/manual/html/accountprefix.html +5 -3
  222. data/manual/html/accountreport.html +5 -3
  223. data/manual/html/accountroot.html +5 -3
  224. data/manual/html/active.html +5 -3
  225. data/manual/html/adopt.task.html +5 -3
  226. data/manual/html/aggregate.html +5 -3
  227. data/manual/html/alert.html +5 -3
  228. data/manual/html/alertlevels.html +5 -3
  229. data/manual/html/allocate.html +6 -3
  230. data/manual/html/alphabet.html +1 -1
  231. data/manual/html/alternative.html +5 -3
  232. data/manual/html/author.html +5 -3
  233. data/manual/html/auxdir.html +5 -3
  234. data/manual/html/auxdir.report.html +5 -3
  235. data/manual/html/balance.html +5 -3
  236. data/manual/html/booking.resource.html +6 -4
  237. data/manual/html/booking.task.html +7 -4
  238. data/manual/html/caption.html +5 -3
  239. data/manual/html/cellcolor.column.html +5 -3
  240. data/manual/html/celltext.column.html +5 -3
  241. data/manual/html/center.html +5 -3
  242. data/manual/html/charge.html +6 -3
  243. data/manual/html/chargeset.html +6 -3
  244. data/manual/html/columnid.html +24 -15
  245. data/manual/html/columns.html +6 -3
  246. data/manual/html/complete.html +5 -3
  247. data/manual/html/copyright.html +5 -3
  248. data/manual/html/credits.html +6 -3
  249. data/manual/html/currency.html +5 -3
  250. data/manual/html/currencyformat.html +5 -3
  251. data/manual/html/dailymax.html +5 -3
  252. data/manual/html/dailymin.html +5 -3
  253. data/manual/html/dailyworkinghours.html +5 -3
  254. data/manual/html/date.extend.html +5 -3
  255. data/manual/html/date.html +5 -3
  256. data/manual/html/definitions.html +5 -3
  257. data/manual/html/depends.html +6 -3
  258. data/manual/html/details.html +5 -3
  259. data/manual/html/disabled.html +5 -3
  260. data/manual/html/duration.html +5 -3
  261. data/manual/html/efficiency.html +5 -3
  262. data/manual/html/effort.html +7 -5
  263. data/manual/html/effortdone.html +105 -0
  264. data/manual/html/effortleft.html +105 -0
  265. data/manual/html/email.html +7 -5
  266. data/manual/html/enabled.html +5 -3
  267. data/manual/html/end.column.html +5 -3
  268. data/manual/html/end.html +5 -3
  269. data/manual/html/end.limit.html +5 -3
  270. data/manual/html/end.report.html +5 -3
  271. data/manual/html/end.timesheet.html +5 -3
  272. data/manual/html/endcredit.html +5 -3
  273. data/manual/html/epilog.html +5 -3
  274. data/manual/html/export.html +5 -3
  275. data/manual/html/extend.html +5 -3
  276. data/manual/html/fail.html +6 -3
  277. data/manual/html/fdl.html +2 -2
  278. data/manual/html/flags.account.html +6 -3
  279. data/manual/html/flags.html +5 -3
  280. data/manual/html/flags.journalentry.html +5 -3
  281. data/manual/html/flags.report.html +6 -3
  282. data/manual/html/flags.resource.html +6 -3
  283. data/manual/html/flags.statussheet.html +5 -3
  284. data/manual/html/flags.task.html +6 -3
  285. data/manual/html/flags.timesheet.html +5 -3
  286. data/manual/html/fontcolor.column.html +5 -3
  287. data/manual/html/footer.html +5 -3
  288. data/manual/html/formats.export.html +6 -4
  289. data/manual/html/formats.html +6 -3
  290. data/manual/html/functions.html +5 -3
  291. data/manual/html/gapduration.html +6 -4
  292. data/manual/html/gaplength.html +6 -4
  293. data/manual/html/halign.center.html +5 -3
  294. data/manual/html/halign.column.html +5 -3
  295. data/manual/html/halign.left.html +5 -3
  296. data/manual/html/halign.right.html +5 -3
  297. data/manual/html/hasalert.html +5 -3
  298. data/manual/html/header.html +5 -3
  299. data/manual/html/headline.html +5 -3
  300. data/manual/html/height.html +5 -3
  301. data/manual/html/hideaccount.html +5 -3
  302. data/manual/html/hidejournalentry.html +5 -3
  303. data/manual/html/hidereport.html +5 -3
  304. data/manual/html/hideresource.html +5 -3
  305. data/manual/html/hidetask.html +5 -3
  306. data/manual/html/icalreport.html +5 -3
  307. data/manual/html/include.macro.html +5 -3
  308. data/manual/html/include.project.html +5 -3
  309. data/manual/html/include.properties.html +5 -3
  310. data/manual/html/index.html +1 -1
  311. data/manual/html/inherit.extend.html +5 -3
  312. data/manual/html/interval1.html +5 -3
  313. data/manual/html/interval2.html +5 -3
  314. data/manual/html/interval3.html +5 -3
  315. data/manual/html/interval4.html +5 -3
  316. data/manual/html/isactive.html +5 -3
  317. data/manual/html/ischildof.html +5 -3
  318. data/manual/html/isdependencyof.html +5 -3
  319. data/manual/html/isdutyof.html +5 -3
  320. data/manual/html/isfeatureof.html +5 -3
  321. data/manual/html/isleaf.html +5 -3
  322. data/manual/html/ismilestone.html +5 -3
  323. data/manual/html/isongoing.html +5 -3
  324. data/manual/html/isresource.html +5 -3
  325. data/manual/html/isresponsibilityof.html +5 -3
  326. data/manual/html/istask.html +5 -3
  327. data/manual/html/isvalid.html +5 -3
  328. data/manual/html/journalattributes.html +5 -3
  329. data/manual/html/journalentry.html +5 -3
  330. data/manual/html/journalmode.html +5 -3
  331. data/manual/html/leaveallowance.html +5 -3
  332. data/manual/html/leaves.html +13 -6
  333. data/manual/html/left.html +5 -3
  334. data/manual/html/length.html +5 -3
  335. data/manual/html/limits.allocate.html +5 -3
  336. data/manual/html/limits.html +5 -3
  337. data/manual/html/limits.resource.html +5 -3
  338. data/manual/html/limits.task.html +5 -3
  339. data/manual/html/listitem.column.html +5 -3
  340. data/manual/html/listtype.column.html +5 -3
  341. data/manual/html/loadunit.html +5 -3
  342. data/manual/html/logicalexpression.html +6 -4
  343. data/manual/html/logicalflagexpression.html +5 -3
  344. data/manual/html/macro.html +5 -3
  345. data/manual/html/managers.html +6 -3
  346. data/manual/html/mandatory.html +5 -3
  347. data/manual/html/maxend.html +5 -3
  348. data/manual/html/maximum.html +5 -3
  349. data/manual/html/maxstart.html +5 -3
  350. data/manual/html/milestone.html +5 -3
  351. data/manual/html/minend.html +5 -3
  352. data/manual/html/minimum.html +5 -3
  353. data/manual/html/minstart.html +5 -3
  354. data/manual/html/monthlymax.html +5 -3
  355. data/manual/html/monthlymin.html +5 -3
  356. data/manual/html/navbar.html +7 -1
  357. data/manual/html/navigator.html +5 -3
  358. data/manual/html/newtask.html +5 -3
  359. data/manual/html/nikureport.html +5 -3
  360. data/manual/html/note.task.html +5 -3
  361. data/manual/html/now.html +5 -3
  362. data/manual/html/number.extend.html +5 -3
  363. data/manual/html/numberformat.html +5 -3
  364. data/manual/html/onend.html +5 -3
  365. data/manual/html/onstart.html +5 -3
  366. data/manual/html/opennodes.html +5 -3
  367. data/manual/html/outputdir.html +5 -3
  368. data/manual/html/overtime.booking.html +5 -3
  369. data/manual/html/period.column.html +5 -3
  370. data/manual/html/period.limit.html +5 -3
  371. data/manual/html/period.report.html +5 -3
  372. data/manual/html/period.task.html +5 -3
  373. data/manual/html/persistent.html +5 -3
  374. data/manual/html/precedes.html +6 -3
  375. data/manual/html/priority.html +5 -3
  376. data/manual/html/priority.timesheet.html +5 -3
  377. data/manual/html/project.html +5 -3
  378. data/manual/html/projectid.html +5 -3
  379. data/manual/html/projectid.task.html +5 -3
  380. data/manual/html/projectids.html +5 -3
  381. data/manual/html/projection.html +5 -3
  382. data/manual/html/prolog.html +5 -3
  383. data/manual/html/properties.html +5 -3
  384. data/manual/html/purge.html +5 -3
  385. data/manual/html/rate.html +5 -3
  386. data/manual/html/rate.resource.html +5 -3
  387. data/manual/html/rawhtmlhead.html +5 -3
  388. data/manual/html/reference.extend.html +5 -3
  389. data/manual/html/remaining.html +5 -3
  390. data/manual/html/replace.html +5 -3
  391. data/manual/html/reportprefix.html +5 -3
  392. data/manual/html/resource.html +5 -3
  393. data/manual/html/resourceattributes.html +5 -3
  394. data/manual/html/resourceprefix.html +5 -3
  395. data/manual/html/resourcereport.html +5 -3
  396. data/manual/html/resourceroot.html +5 -3
  397. data/manual/html/resources.limit.html +5 -3
  398. data/manual/html/responsible.html +6 -3
  399. data/manual/html/richtext.extend.html +5 -3
  400. data/manual/html/right.html +5 -3
  401. data/manual/html/rollupaccount.html +5 -3
  402. data/manual/html/rollupresource.html +5 -3
  403. data/manual/html/rolluptask.html +5 -3
  404. data/manual/html/scale.column.html +5 -3
  405. data/manual/html/scenario.html +5 -3
  406. data/manual/html/scenario.ical.html +5 -3
  407. data/manual/html/scenarios.export.html +5 -3
  408. data/manual/html/scenarios.html +6 -3
  409. data/manual/html/scenariospecific.extend.html +5 -3
  410. data/manual/html/scheduled.html +6 -4
  411. data/manual/html/scheduling.html +7 -5
  412. data/manual/html/schedulingmode.html +74 -0
  413. data/manual/html/select.html +7 -5
  414. data/manual/html/selfcontained.html +5 -3
  415. data/manual/html/shift.allocate.html +5 -3
  416. data/manual/html/shift.html +5 -3
  417. data/manual/html/shift.resource.html +5 -3
  418. data/manual/html/shift.task.html +5 -3
  419. data/manual/html/shift.timesheet.html +5 -3
  420. data/manual/html/shifts.allocate.html +5 -3
  421. data/manual/html/shifts.resource.html +5 -3
  422. data/manual/html/shifts.task.html +6 -4
  423. data/manual/html/shorttimeformat.html +5 -3
  424. data/manual/html/sloppy.booking.html +5 -3
  425. data/manual/html/sloppy.projection.html +5 -3
  426. data/manual/html/sortaccounts.html +6 -4
  427. data/manual/html/sortjournalentries.html +5 -3
  428. data/manual/html/sortresources.html +6 -4
  429. data/manual/html/sorttasks.html +6 -4
  430. data/manual/html/start.column.html +5 -3
  431. data/manual/html/start.html +5 -3
  432. data/manual/html/start.limit.html +5 -3
  433. data/manual/html/start.report.html +5 -3
  434. data/manual/html/startcredit.html +5 -3
  435. data/manual/html/status.statussheet.html +5 -3
  436. data/manual/html/status.timesheet.html +5 -3
  437. data/manual/html/statussheet.html +5 -3
  438. data/manual/html/statussheetreport.html +5 -3
  439. data/manual/html/strict.projection.html +5 -3
  440. data/manual/html/summary.html +5 -3
  441. data/manual/html/supplement.html +5 -3
  442. data/manual/html/supplement.resource.html +5 -3
  443. data/manual/html/supplement.task.html +24 -4
  444. data/manual/html/tagfile.html +5 -3
  445. data/manual/html/task.html +24 -4
  446. data/manual/html/task.statussheet.html +5 -3
  447. data/manual/html/task.timesheet.html +5 -3
  448. data/manual/html/taskattributes.html +5 -3
  449. data/manual/html/taskprefix.html +5 -3
  450. data/manual/html/taskreport.html +5 -3
  451. data/manual/html/taskroot.export.html +5 -3
  452. data/manual/html/taskroot.html +5 -3
  453. data/manual/html/text.extend.html +5 -3
  454. data/manual/html/textreport.html +5 -3
  455. data/manual/html/timeformat.html +5 -3
  456. data/manual/html/timeformat1.html +5 -3
  457. data/manual/html/timeformat2.html +5 -3
  458. data/manual/html/timeoff.nikureport.html +5 -3
  459. data/manual/html/timesheet.html +5 -3
  460. data/manual/html/timesheetreport.html +5 -3
  461. data/manual/html/timezone.export.html +5 -3
  462. data/manual/html/timezone.html +5 -3
  463. data/manual/html/timezone.report.html +5 -3
  464. data/manual/html/timezone.shift.html +5 -3
  465. data/manual/html/timingresolution.html +5 -3
  466. data/manual/html/title.column.html +5 -3
  467. data/manual/html/title.html +5 -3
  468. data/manual/html/toc.html +251 -223
  469. data/manual/html/tooltip.column.html +5 -3
  470. data/manual/html/tracereport.html +6 -3
  471. data/manual/html/trackingscenario.html +5 -3
  472. data/manual/html/treelevel.html +5 -3
  473. data/manual/html/vacation.html +5 -3
  474. data/manual/html/vacation.resource.html +5 -3
  475. data/manual/html/vacation.shift.html +5 -3
  476. data/manual/html/warn.html +6 -3
  477. data/manual/html/weeklymax.html +5 -3
  478. data/manual/html/weeklymin.html +5 -3
  479. data/manual/html/weekstartsmonday.html +5 -3
  480. data/manual/html/weekstartssunday.html +5 -3
  481. data/manual/html/width.column.html +5 -3
  482. data/manual/html/width.html +5 -3
  483. data/manual/html/work.html +5 -3
  484. data/manual/html/workinghours.project.html +5 -3
  485. data/manual/html/workinghours.resource.html +5 -3
  486. data/manual/html/workinghours.shift.html +5 -3
  487. data/manual/html/yearlyworkingdays.html +5 -3
  488. data/spec/Color_spec.rb +6 -2
  489. data/spec/ICalendar_spec.rb +6 -2
  490. data/spec/IntervalList_spec.rb +7 -3
  491. data/spec/ProjectBroker_spec.rb +6 -2
  492. data/spec/StatusSheets_spec.rb +6 -2
  493. data/spec/TableColumnSorter_spec.rb +6 -2
  494. data/spec/TernarySearchTree_spec.rb +8 -4
  495. data/spec/TimeSheets_spec.rb +6 -2
  496. data/spec/Tj3Daemon_spec.rb +6 -2
  497. data/spec/Tj3_spec.rb +6 -2
  498. data/spec/TraceReport_spec.rb +2 -2
  499. data/spec/support/DaemonControl.rb +2 -2
  500. data/spec/support/spec_helper.rb +2 -2
  501. data/taskjuggler.gemspec +1 -1
  502. data/test/MessageChecker.rb +2 -2
  503. data/test/ReferenceGenerator.rb +2 -2
  504. data/test/TestSuite/CSV-Reports/headcount.tjp +1 -0
  505. data/test/TestSuite/ReportGenerator/Correct/JournalMode.tjp +1 -1
  506. data/test/TestSuite/ReportGenerator/Correct/refs/JournalMode-1.csv +9 -9
  507. data/test/TestSuite/ReportGenerator/Correct/refs/JournalMode-2.csv +46 -48
  508. data/test/TestSuite/Scheduler/Correct/Depends.tjp +17 -0
  509. data/test/TestSuite/Scheduler/Correct/Precedes.tjp +17 -0
  510. data/test/TestSuite/Scheduler/Correct/Scheduled.tjp +11 -0
  511. data/test/TestSuite/Scheduler/Correct/SchedulingMode.tjp +45 -0
  512. data/test/TestSuite/{Syntax → Scheduler}/Errors/not_scheduled.tjp +1 -1
  513. data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -1
  514. data/test/TestSuite/Syntax/Correct/ListAttributes.tjp +48 -0
  515. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +1 -1
  516. data/test/TestSuite/Syntax/Errors/working_duration_too_small.tjp +6 -0
  517. data/test/TjpGen.rb +2 -2
  518. data/test/all.rb +2 -2
  519. data/test/test_AlgorithmDiff.rb +2 -2
  520. data/test/test_BatchProcessor.rb +2 -2
  521. data/test/test_CSV-Reports.rb +2 -2
  522. data/test/test_CSVFile.rb +2 -2
  523. data/test/test_CollisionDetector.rb +2 -2
  524. data/test/test_Export-Reports.rb +2 -2
  525. data/test/test_Journal.rb +2 -2
  526. data/test/test_Limits.rb +2 -2
  527. data/test/test_LogicalExpression.rb +2 -2
  528. data/test/test_MacroTable.rb +2 -2
  529. data/test/test_Project.rb +2 -2
  530. data/test/test_ProjectFileScanner.rb +2 -2
  531. data/test/test_PropertySet.rb +2 -2
  532. data/test/test_Query.rb +2 -2
  533. data/test/test_RealFormat.rb +2 -2
  534. data/test/test_ReportGenerator.rb +2 -2
  535. data/test/test_RichText.rb +2 -2
  536. data/test/test_Scheduler.rb +2 -2
  537. data/test/test_ShiftAssignments.rb +2 -2
  538. data/test/test_SimpleQueryExpander.rb +2 -2
  539. data/test/test_Syntax.rb +2 -2
  540. data/test/test_TextFormatter.rb +2 -2
  541. data/test/test_TjTime.rb +2 -2
  542. data/test/test_TjpExample.rb +2 -2
  543. data/test/test_URLParameter.rb +2 -2
  544. data/test/test_UTF8String.rb +2 -2
  545. data/test/test_WorkingHours.rb +2 -2
  546. data/test/test_deep_copy.rb +2 -2
  547. metadata +346 -350
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = LeaveList.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -28,7 +28,8 @@ class TaskJuggler
28
28
  :special => 3,
29
29
  :sick => 4,
30
30
  :unpaid => 5,
31
- :holiday => 6
31
+ :holiday => 6,
32
+ :unemployed => 7
32
33
  }
33
34
 
34
35
  # Create a new Leave object. _interval_ should be an Interval describing
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = Limits.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = Log.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = LogicalExpression.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = LogicalFunction.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -250,7 +250,19 @@ class TaskJuggler
250
250
  expr.error("Unknown attribute '#{attr}' used for function " +
251
251
  "isvalid()")
252
252
  end
253
- !property[attr, scenarioIdx].nil?
253
+ if scenario
254
+ unless property.attributeDefinition(attr).scenarioSpecific
255
+ expr.error("Attribute '#{attr}' of property '#{property.fullId}' " +
256
+ "is not scenario specific. Don't provide a scenario ID!")
257
+ end
258
+ !property[attr, scenarioIdx].nil?
259
+ else
260
+ if property.attributeDefinition(attr).scenarioSpecific
261
+ expr.error("Attribute '#{attr}' of property '#{property.fullId}' " +
262
+ "is scenario specific. Please provide a scenario ID!")
263
+ end
264
+ !property.get(attr).nil?
265
+ end
254
266
  end
255
267
 
256
268
  def treelevel(expr, args)
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = LogicalOperation.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -195,12 +195,17 @@ class TaskJuggler
195
195
  query.scenarioIdx = @scenario.sequenceNo - 1
196
196
  query.attributeId = @operand1
197
197
  query.process
198
- # The logical expressions are mostly about comparing values. So we use
199
- # the sortableResult of the Query. This creates some challenges for load
200
- # values, as the user is not accustomed to the internal representation
201
- # of those.
202
- # Convert nil results into empty Strings if necessary
203
- query.result || ''
198
+ if query.ok
199
+ # The logical expressions are mostly about comparing values. So we use
200
+ # the sortableResult of the Query. This creates some challenges for load
201
+ # values, as the user is not accustomed to the internal representation
202
+ # of those.
203
+ # Convert nil results into empty Strings if necessary
204
+ query.result || ''
205
+ else
206
+ expr.error(query.errorMessage)
207
+ query.errorMessage
208
+ end
204
209
  end
205
210
 
206
211
  # Dumps the LogicalOperation as String. If _query_ is nil, the variable
@@ -241,9 +246,9 @@ class TaskJuggler
241
246
  def to_s(query)
242
247
  if query
243
248
  if query.is_a?(Query)
244
- query.property['flags', 0].include(@operand1) ? 'true' : 'false'
249
+ query.property['flags', 0].include?(@operand1) ? 'true' : 'false'
245
250
  else
246
- query.flags.include(@operand1) ? 'true' : 'false'
251
+ query.flags.include?(@operand1) ? 'true' : 'false'
247
252
  end
248
253
  else
249
254
  @operand1
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = MessageHandler.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = PTNProxy.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = Painter.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = Project.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -264,6 +264,10 @@ class TaskJuggler
264
264
  false, false, true, 0 ],
265
265
  [ 'effort', 'Effort', DurationAttribute,
266
266
  false, false, true, 0 ],
267
+ [ 'effortdone', 'Completed Effort', FixnumAttribute,
268
+ false, false, true, nil ],
269
+ [ 'effortleft', 'Remaining Effort', FixnumAttribute,
270
+ false, false, true, nil ],
267
271
  [ 'end', 'End', DateAttribute,
268
272
  false, false, true, nil ],
269
273
  [ 'endpreds', 'End Preds.', TaskDepListAttribute,
@@ -312,6 +316,8 @@ class TaskJuggler
312
316
  true, false, true, [] ],
313
317
  [ 'scheduled', 'Scheduled', BooleanAttribute,
314
318
  true, false, true, false ],
319
+ [ 'projectionmode', 'Projection Mode', BooleanAttribute,
320
+ true, false, true, false ],
315
321
  [ 'seqno', 'No', FixnumAttribute,
316
322
  false, false, false, nil ],
317
323
  [ 'shifts', 'Shifts', ShiftAssignmentsAttribute,
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = ProjectFileParser.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -105,7 +105,7 @@ class TaskJuggler
105
105
  open(attributes, false, true)
106
106
  @property = report
107
107
  @project = report.project
108
- parse(:reportAttributes)
108
+ parse(:dynamicAttributes)
109
109
  end
110
110
 
111
111
  private
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = ProjectFileScanner.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = PropertyList.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -226,21 +226,14 @@ class TaskJuggler
226
226
  unless @propertySet.knownAttribute?(criteria) ||
227
227
  @propertySet.hasQuery?(criteria, scIdx)
228
228
  raise TjException.new,
229
- "Unknown attribute #{criteria} used for sorting criterium"
229
+ "Unknown attribute '#{criteria}' used for sorting criterium"
230
230
  end
231
- if scIdx == -1
232
- if @propertySet.scenarioSpecific?(criteria)
233
- raise TjException.new,
234
- "Attribute #{criteria} is scenario specific." +
235
- "You must specify a scenario id."
236
- end
237
- else
231
+ if @propertySet.scenarioSpecific?(criteria)
238
232
  if @propertySet.project.scenario(scIdx).nil?
239
- raise TjException.new, "Unknown scenario index #{scIdx} used."
240
- end
241
- if !@propertySet.scenarioSpecific?(criteria)
242
- raise TjException.new, "Attribute #{criteria} is not scenario specific"
233
+ raise TjException.new, "Unknown scenario index '#{scIdx}' used."
243
234
  end
235
+ else
236
+ scIdx == -1
244
237
  end
245
238
  @sortingCriteria.push(criteria)
246
239
  @sortingUp.push(up)
@@ -262,7 +255,7 @@ class TaskJuggler
262
255
  # real-world projects.
263
256
  tree += idx.to_s.rjust(6, '0')
264
257
  end
265
- property.set('tree', tree)
258
+ property.force('tree', tree)
266
259
  end
267
260
  end
268
261
 
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = PropertySet.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -139,6 +139,10 @@ class TaskJuggler
139
139
  @attributeDefinitions[attrId].userDefined
140
140
  end
141
141
 
142
+ def listAttribute?(attrId)
143
+ (ad = @attributeDefinitions[attrId]) && ad.objClass.isList?
144
+ end
145
+
142
146
  # Return the default value of the attribute.
143
147
  def defaultValue(attrId)
144
148
  return nil if @attributeDefinitions[attrId].nil?
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = PropertyTreeNode.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -590,6 +590,24 @@ class TaskJuggler
590
590
  end
591
591
  end
592
592
 
593
+ def query_children(query)
594
+ list = []
595
+ kids.each do |property|
596
+ if query.listItem
597
+ rti = RichText.new(query.listItem, RTFHandlers.create(@project)).
598
+ generateIntermediateFormat
599
+ q = query.dup
600
+ q.property = property
601
+ rti.setQuery(q)
602
+ list << "<nowiki>#{rti.to_s}</nowiki>"
603
+ else
604
+ list << "<nowiki>#{property.name} (#{property.fullId})</nowiki>"
605
+ end
606
+ end
607
+
608
+ query.assignList(list)
609
+ end
610
+
593
611
  def query_journal(query)
594
612
  @project['journal'].to_rti(query)
595
613
  end
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = Query.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -126,7 +126,7 @@ class TaskJuggler
126
126
  if @propertyId && (@property.nil? || @propertyId[0] == '!')
127
127
  @property = resolvePropertyId(@propertyType, @propertyId)
128
128
  unless @property
129
- @errorMessage = "Unknown property #{@propertyId} queried"
129
+ @errorMessage = "Unknown property '#{@propertyId}' queried"
130
130
  return @ok = false
131
131
  end
132
132
  end
@@ -197,8 +197,13 @@ class TaskJuggler
197
197
  raise ArgumentError unless aType
198
198
  scIdx = aType.scenarioSpecific ? @scenarioIdx : nil
199
199
  @attr = @property.getAttribute(@attributeId, scIdx)
200
+ if @attr.nil? && @attr.is_a?(DateAttribute)
201
+ @errorMessage = "Attribute '#{@attributeId}' of property " +
202
+ "'#{@property.fullId}' has undefined value."
203
+ return @ok = false
204
+ end
200
205
  rescue ArgumentError
201
- @errorMessage = "Unknown attribute #{@attributeId} queried"
206
+ @errorMessage = "Unknown attribute '#{@attributeId}' queried"
202
207
  return @ok = false
203
208
  end
204
209
  end
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = RealFormat.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = Resource.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -3,8 +3,8 @@
3
3
  #
4
4
  # = ResourceScenario.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
7
- # by Chris Schlaeger <chris@linux.com>
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
7
+ # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
10
10
  # it under the terms of version 2 of the GNU General Public License as
@@ -26,14 +26,7 @@ class TaskJuggler
26
26
  # Bit 0: Reserved
27
27
  # Bit 1: 0: Work time (as defined by working hours)
28
28
  # 1: No work time (as defined by working hours)
29
- # Bit 2 - 5: 0: No holiday or leave time
30
- # 1: Public holiday (holiday)
31
- # 2: Annual leave
32
- # 3: Special leave
33
- # 4: Sick leave
34
- # 5: unpaid leave
35
- # 6: blocked for other projects
36
- # 7 - 15: Reserved
29
+ # Bit 2 - 5: See Leave class for acutal values.
37
30
  # Bit 6 - 7: Reserved
38
31
  # Bit 8: 0: No global override
39
32
  # 1: Override global setting
@@ -73,8 +66,6 @@ class TaskJuggler
73
66
  def prepareScheduling
74
67
  @effort = 0
75
68
  initScoreboard if @property.leaf?
76
-
77
- setDirectReports
78
69
  end
79
70
 
80
71
  # The criticalness of a resource is a measure for the probabilty that all
@@ -97,17 +88,35 @@ class TaskJuggler
97
88
  end
98
89
 
99
90
  def setDirectReports
100
- # Only leaf resources have reporting lines.
101
- return unless @property.leaf?
102
-
103
- # The 'directreports' attribute is the reverse link for the 'managers'
104
- # attribute. In contrast to the 'managers' attribute, the
105
- # 'directreports' list has no duplicate entries.
106
- @managers.each do |manager|
107
- unless manager['directreports', @scenarioIdx].include?(@property)
108
- manager['directreports', @scenarioIdx] << @property
91
+ @managers.map! do |managerId|
92
+ # First we need to map 'managerId' to an existing Resource.
93
+ if (manager = @project.resource(managerId)).nil?
94
+ error('resource_id_expected', "#{managerId} is not a defined " +
95
+ 'resource.', @sourceFileInfo)
96
+ end
97
+ unless manager.leaf?
98
+ error('manager_is_group',
99
+ "Resource #{@property.fullId} has group #{manager.fullId} " +
100
+ "assigned as manager. Managers must be leaf resources.")
109
101
  end
102
+ if manager == @property
103
+ error('manager_is_self',
104
+ "Resource #{@property.fullId} cannot manage itself.")
105
+ end
106
+
107
+ # Only leaf resources have reporting lines.
108
+ if @property.leaf?
109
+ # The 'directreports' attribute is the reverse link for the 'managers'
110
+ # attribute. In contrast to the 'managers' attribute, the
111
+ # 'directreports' list has no duplicate entries.
112
+ unless manager['directreports', @scenarioIdx].include?(@property)
113
+ manager['directreports', @scenarioIdx] << @property
114
+ end
115
+ end
116
+
117
+ manager
110
118
  end
119
+ @managers.uniq!
111
120
  end
112
121
 
113
122
  def setReports
@@ -119,17 +128,6 @@ class TaskJuggler
119
128
  end
120
129
 
121
130
  def preScheduleCheck
122
- @managers.each do |manager|
123
- unless manager.leaf?
124
- error('manager_is_group',
125
- "Resource #{@property.fullId} has group #{manager.fullId} " +
126
- "assigned as manager. Managers must be leaf resources.")
127
- end
128
- if manager == @property
129
- error('manager_is_self',
130
- "Resource #{@property.fullId} cannot manage itself.")
131
- end
132
- end
133
131
  end
134
132
 
135
133
  # This method does some housekeeping work after the scheduling is
@@ -387,7 +385,11 @@ class TaskJuggler
387
385
  headcount += query.to_num
388
386
  end
389
387
  else
390
- headcount += @efficiency.round
388
+ if employed?(@project.dateToIdx(query.start))
389
+ # We only count headcount that is employed at the start date of the
390
+ # query interval.
391
+ headcount += @efficiency.round
392
+ end
391
393
  end
392
394
 
393
395
  query.sortable = query.numerical = headcount
@@ -894,6 +896,16 @@ class TaskJuggler
894
896
  end
895
897
  end
896
898
 
899
+ def employed?(sbIdx)
900
+ initScoreboard unless @scoreboard
901
+
902
+ val = @scoreboard[sbIdx]
903
+ return true unless val.is_a?(Fixnum)
904
+
905
+ leave_type = (val >> 2) & 0xF
906
+ leave_type < Leave::Types[:unemployed]
907
+ end
908
+
897
909
  # Returns true if the resource or any of its children is allocated during
898
910
  # the period specified with _startIdx_ and _endIdx_. If task is not nil
899
911
  # only allocations to this tasks are respected.