taskjuggler 0.0.4 → 0.0.5

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 (829) hide show
  1. data/README +1 -1
  2. data/bin/tj3client +3 -0
  3. data/bin/tj3d +3 -0
  4. data/bin/tj3ts_receiver +3 -0
  5. data/bin/tj3ts_sender +3 -0
  6. data/bin/tj3ts_summary +3 -0
  7. data/data/css/tjmanual.css +14 -0
  8. data/data/css/tjreport.css +233 -21
  9. data/data/scripts/wz_tooltip.js +20 -20
  10. data/doc/AppConfig.html +1389 -0
  11. data/doc/Arguments.html +678 -0
  12. data/doc/COPYING.html +837 -0
  13. data/doc/Object.html +996 -0
  14. data/doc/README.html +523 -0
  15. data/doc/RuntimeConfig.html +762 -0
  16. data/doc/String.html +872 -0
  17. data/doc/TaskJuggler/Account.html +691 -0
  18. data/doc/TaskJuggler/AccountAttribute.html +707 -0
  19. data/doc/TaskJuggler/AccountScenario.html +650 -0
  20. data/doc/TaskJuggler/Allocation.html +898 -0
  21. data/doc/TaskJuggler/AllocationAttribute.html +737 -0
  22. data/doc/TaskJuggler/AttributeBase.html +1193 -0
  23. data/doc/TaskJuggler/AttributeDefinition.html +753 -0
  24. data/doc/TaskJuggler/BatchProcessor.html +1112 -0
  25. data/doc/TaskJuggler/Booking.html +797 -0
  26. data/doc/TaskJuggler/BookingListAttribute.html +709 -0
  27. data/doc/TaskJuggler/BooleanAttribute.html +707 -0
  28. data/doc/TaskJuggler/CSVFile.html +924 -0
  29. data/doc/TaskJuggler/CellSettingPattern.html +638 -0
  30. data/doc/TaskJuggler/CellSettingPatternList.html +687 -0
  31. data/doc/TaskJuggler/Charge.html +715 -0
  32. data/doc/TaskJuggler/ChargeListAttribute.html +671 -0
  33. data/doc/TaskJuggler/ChargeSet.html +887 -0
  34. data/doc/TaskJuggler/ChargeSetListAttribute.html +718 -0
  35. data/doc/TaskJuggler/ColumnListAttribute.html +673 -0
  36. data/doc/TaskJuggler/ColumnTable.html +701 -0
  37. data/doc/TaskJuggler/Daemon.html +728 -0
  38. data/doc/TaskJuggler/DateAttribute.html +675 -0
  39. data/doc/TaskJuggler/DefinitionListAttribute.html +593 -0
  40. data/doc/TaskJuggler/DependencyListAttribute.html +713 -0
  41. data/doc/TaskJuggler/DurationAttribute.html +707 -0
  42. data/doc/TaskJuggler/FixnumAttribute.html +629 -0
  43. data/doc/TaskJuggler/FlagListAttribute.html +709 -0
  44. data/doc/TaskJuggler/FloatAttribute.html +671 -0
  45. data/doc/TaskJuggler/FormatListAttribute.html +635 -0
  46. data/doc/TaskJuggler/GanttChart.html +1473 -0
  47. data/doc/TaskJuggler/GanttContainer.html +885 -0
  48. data/doc/TaskJuggler/GanttHeader.html +886 -0
  49. data/doc/TaskJuggler/GanttHeaderScaleItem.html +700 -0
  50. data/doc/TaskJuggler/GanttLine.html +1263 -0
  51. data/doc/TaskJuggler/GanttLoadStack.html +766 -0
  52. data/doc/TaskJuggler/GanttMilestone.html +865 -0
  53. data/doc/TaskJuggler/GanttRouter.html +1433 -0
  54. data/doc/TaskJuggler/GanttTaskBar.html +880 -0
  55. data/doc/TaskJuggler/HTMLDocument.html +719 -0
  56. data/doc/TaskJuggler/HTMLGraphics.html +775 -0
  57. data/doc/TaskJuggler/Interval.html +1016 -0
  58. data/doc/TaskJuggler/IntervalListAttribute.html +713 -0
  59. data/doc/TaskJuggler/JobInfo.html +881 -0
  60. data/doc/TaskJuggler/Journal.html +991 -0
  61. data/doc/TaskJuggler/JournalEntry.html +779 -0
  62. data/doc/TaskJuggler/JournalEntryList.html +952 -0
  63. data/doc/TaskJuggler/KeywordArray.html +628 -0
  64. data/doc/TaskJuggler/KeywordDocumentation.html +1662 -0
  65. data/doc/TaskJuggler/Limits/Limit.html +826 -0
  66. data/doc/TaskJuggler/Limits.html +966 -0
  67. data/doc/TaskJuggler/LimitsAttribute.html +707 -0
  68. data/doc/TaskJuggler/ListAttributeBase.html +641 -0
  69. data/doc/TaskJuggler/Log.html +1103 -0
  70. data/doc/TaskJuggler/LogFile.html +918 -0
  71. data/doc/TaskJuggler/LogicalAttribute.html +698 -0
  72. data/doc/TaskJuggler/LogicalExpression.html +739 -0
  73. data/doc/TaskJuggler/LogicalExpressionAttribute.html +629 -0
  74. data/doc/TaskJuggler/LogicalFlag.html +681 -0
  75. data/doc/TaskJuggler/LogicalFunction.html +1218 -0
  76. data/doc/TaskJuggler/LogicalOperation.html +1078 -0
  77. data/doc/TaskJuggler/Macro.html +646 -0
  78. data/doc/TaskJuggler/MacroParser.html +810 -0
  79. data/doc/TaskJuggler/MacroTable.html +810 -0
  80. data/doc/TaskJuggler/ManagerResponsibilities.html +674 -0
  81. data/doc/TaskJuggler/ManagerStatusRecord.html +678 -0
  82. data/doc/TaskJuggler/Message.html +757 -0
  83. data/doc/TaskJuggler/MessageHandler.html +679 -0
  84. data/doc/TaskJuggler/Navigator.html +867 -0
  85. data/doc/TaskJuggler/NavigatorElement.html +932 -0
  86. data/doc/TaskJuggler/NikuProject.html +662 -0
  87. data/doc/TaskJuggler/NikuReport.html +1316 -0
  88. data/doc/TaskJuggler/NikuResource.html +632 -0
  89. data/doc/TaskJuggler/OnShiftCache.html +864 -0
  90. data/doc/TaskJuggler/ProcessIntercom.html +847 -0
  91. data/doc/TaskJuggler/ProcessIntercomIface.html +664 -0
  92. data/doc/TaskJuggler/Project.html +3056 -0
  93. data/doc/TaskJuggler/ProjectBroker.html +1260 -0
  94. data/doc/TaskJuggler/ProjectBrokerIface.html +734 -0
  95. data/doc/TaskJuggler/ProjectFileParser.html +1951 -0
  96. data/doc/TaskJuggler/ProjectRecord.html +859 -0
  97. data/doc/TaskJuggler/ProjectServer.html +1092 -0
  98. data/doc/TaskJuggler/ProjectServerIface.html +768 -0
  99. data/doc/TaskJuggler/PropertyAttribute.html +629 -0
  100. data/doc/TaskJuggler/PropertyList.html +1336 -0
  101. data/doc/TaskJuggler/PropertySet.html +1785 -0
  102. data/doc/TaskJuggler/PropertyTreeNode.html +2482 -0
  103. data/doc/TaskJuggler/Query.html +1831 -0
  104. data/doc/TaskJuggler/RTFNavigator.html +729 -0
  105. data/doc/TaskJuggler/RTFQuery.html +1038 -0
  106. data/doc/TaskJuggler/RTFReport.html +740 -0
  107. data/doc/TaskJuggler/RealFormat.html +743 -0
  108. data/doc/TaskJuggler/RealFormatAttribute.html +593 -0
  109. data/doc/TaskJuggler/ReferenceAttribute.html +782 -0
  110. data/doc/TaskJuggler/Report.html +1255 -0
  111. data/doc/TaskJuggler/ReportBase.html +1198 -0
  112. data/doc/TaskJuggler/ReportContext.html +711 -0
  113. data/doc/TaskJuggler/ReportServer.html +988 -0
  114. data/doc/TaskJuggler/ReportServerIface.html +838 -0
  115. data/doc/TaskJuggler/ReportServerRecord.html +716 -0
  116. data/doc/TaskJuggler/ReportTable.html +1106 -0
  117. data/doc/TaskJuggler/ReportTableCell.html +1536 -0
  118. data/doc/TaskJuggler/ReportTableColumn.html +828 -0
  119. data/doc/TaskJuggler/ReportTableLegend.html +999 -0
  120. data/doc/TaskJuggler/ReportTableLine.html +1003 -0
  121. data/doc/TaskJuggler/Resource.html +938 -0
  122. data/doc/TaskJuggler/ResourceListAttribute.html +752 -0
  123. data/doc/TaskJuggler/ResourceListRE.html +674 -0
  124. data/doc/TaskJuggler/ResourceScenario.html +2457 -0
  125. data/doc/TaskJuggler/RichText.html +791 -0
  126. data/doc/TaskJuggler/RichTextAttribute.html +743 -0
  127. data/doc/TaskJuggler/RichTextDocument.html +972 -0
  128. data/doc/TaskJuggler/RichTextElement.html +1615 -0
  129. data/doc/TaskJuggler/RichTextException.html +667 -0
  130. data/doc/TaskJuggler/RichTextFunctionExample.html +737 -0
  131. data/doc/TaskJuggler/RichTextFunctionHandler.html +689 -0
  132. data/doc/TaskJuggler/RichTextImage.html +650 -0
  133. data/doc/TaskJuggler/RichTextIntermediate.html +1161 -0
  134. data/doc/TaskJuggler/RichTextParser.html +756 -0
  135. data/doc/TaskJuggler/RichTextScanner.html +2010 -0
  136. data/doc/TaskJuggler/RichTextSnip.html +942 -0
  137. data/doc/TaskJuggler/RichTextSyntaxRules.html +1722 -0
  138. data/doc/TaskJuggler/Scenario.html +594 -0
  139. data/doc/TaskJuggler/ScenarioData.html +815 -0
  140. data/doc/TaskJuggler/ScenarioListAttribute.html +671 -0
  141. data/doc/TaskJuggler/Scoreboard.html +1114 -0
  142. data/doc/TaskJuggler/SheetHandlerBase.html +1115 -0
  143. data/doc/TaskJuggler/SheetReceiver.html +1293 -0
  144. data/doc/TaskJuggler/SheetSender.html +1089 -0
  145. data/doc/TaskJuggler/Shift.html +689 -0
  146. data/doc/TaskJuggler/ShiftAssignment.html +950 -0
  147. data/doc/TaskJuggler/ShiftAssignments.html +1379 -0
  148. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +707 -0
  149. data/doc/TaskJuggler/ShiftScenario.html +720 -0
  150. data/doc/TaskJuggler/SortListAttribute.html +631 -0
  151. data/doc/TaskJuggler/SourceFileInfo.html +698 -0
  152. data/doc/TaskJuggler/StatusSheetReceiver.html +615 -0
  153. data/doc/TaskJuggler/StatusSheetReport.html +872 -0
  154. data/doc/TaskJuggler/StatusSheetSender.html +654 -0
  155. data/doc/TaskJuggler/StringAttribute.html +671 -0
  156. data/doc/TaskJuggler/SymbolAttribute.html +629 -0
  157. data/doc/TaskJuggler/SyntaxReference.html +1155 -0
  158. data/doc/TaskJuggler/TOCEntry.html +723 -0
  159. data/doc/TaskJuggler/TSResourceRecord.html +670 -0
  160. data/doc/TaskJuggler/TSTaskRecord.html +682 -0
  161. data/doc/TaskJuggler/TableColumnDefinition.html +830 -0
  162. data/doc/TaskJuggler/TableOfContents.html +692 -0
  163. data/doc/TaskJuggler/TableReport.html +2444 -0
  164. data/doc/TaskJuggler/Task.html +781 -0
  165. data/doc/TaskJuggler/TaskDependency.html +730 -0
  166. data/doc/TaskJuggler/TaskListAttribute.html +713 -0
  167. data/doc/TaskJuggler/TaskListRE.html +673 -0
  168. data/doc/TaskJuggler/TaskScenario.html +4380 -0
  169. data/doc/TaskJuggler/TextFormatter.html +911 -0
  170. data/doc/TaskJuggler/TextParser/Pattern.html +1482 -0
  171. data/doc/TaskJuggler/TextParser/Rule.html +1288 -0
  172. data/doc/TaskJuggler/TextParser/StackElement.html +726 -0
  173. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +648 -0
  174. data/doc/TaskJuggler/TextParser/TokenDoc.html +680 -0
  175. data/doc/TaskJuggler/TextParser.html +1670 -0
  176. data/doc/TaskJuggler/TextReport.html +856 -0
  177. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +831 -0
  178. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +832 -0
  179. data/doc/TaskJuggler/TextScanner/StreamHandle.html +737 -0
  180. data/doc/TaskJuggler/TextScanner.html +2430 -0
  181. data/doc/TaskJuggler/TimeSheet.html +1233 -0
  182. data/doc/TaskJuggler/TimeSheetReceiver.html +612 -0
  183. data/doc/TaskJuggler/TimeSheetRecord.html +1352 -0
  184. data/doc/TaskJuggler/TimeSheetReport.html +948 -0
  185. data/doc/TaskJuggler/TimeSheetSender.html +637 -0
  186. data/doc/TaskJuggler/TimeSheetSummary.html +865 -0
  187. data/doc/TaskJuggler/TimeSheets.html +674 -0
  188. data/doc/TaskJuggler/Tj3AppBase.html +782 -0
  189. data/doc/TaskJuggler/Tj3Client.html +1455 -0
  190. data/doc/TaskJuggler/Tj3Daemon.html +767 -0
  191. data/doc/TaskJuggler/Tj3SheetAppBase.html +696 -0
  192. data/doc/TaskJuggler/Tj3SsReceiver.html +682 -0
  193. data/doc/TaskJuggler/Tj3SsSender.html +708 -0
  194. data/doc/TaskJuggler/Tj3TsReceiver.html +681 -0
  195. data/doc/TaskJuggler/Tj3TsSender.html +702 -0
  196. data/doc/TaskJuggler/Tj3TsSummary.html +710 -0
  197. data/doc/TaskJuggler/TjException.html +630 -0
  198. data/doc/TaskJuggler/TjTime.html +2590 -0
  199. data/doc/TaskJuggler/TjpExample.html +835 -0
  200. data/doc/TaskJuggler/TjpExportRE.html +1581 -0
  201. data/doc/TaskJuggler/TjpSyntaxRules.html +13004 -0
  202. data/doc/TaskJuggler/UserManual.html +1145 -0
  203. data/doc/TaskJuggler/WorkingHours.html +1101 -0
  204. data/doc/TaskJuggler/WorkingHoursAttribute.html +694 -0
  205. data/doc/TaskJuggler/XMLBlob.html +645 -0
  206. data/doc/TaskJuggler/XMLComment.html +640 -0
  207. data/doc/TaskJuggler/XMLDocument.html +732 -0
  208. data/doc/TaskJuggler/XMLElement.html +900 -0
  209. data/doc/TaskJuggler/XMLNamedText.html +601 -0
  210. data/doc/TaskJuggler/XMLText.html +655 -0
  211. data/doc/TaskJuggler.html +2243 -0
  212. data/doc/index.html +3778 -17
  213. data/doc/lib/AccountScenario_rb.html +67 -0
  214. data/doc/lib/Account_rb.html +69 -0
  215. data/doc/lib/Allocation_rb.html +69 -0
  216. data/doc/lib/AppConfig_rb.html +69 -0
  217. data/doc/lib/AttributeBase_rb.html +67 -0
  218. data/doc/lib/AttributeDefinition_rb.html +65 -0
  219. data/doc/lib/Attributes_rb.html +81 -0
  220. data/doc/lib/BatchProcessor_rb.html +69 -0
  221. data/doc/lib/Booking_rb.html +65 -0
  222. data/doc/lib/ChargeSet_rb.html +67 -0
  223. data/doc/lib/Charge_rb.html +67 -0
  224. data/doc/lib/HTMLDocument_rb.html +67 -0
  225. data/doc/lib/Interval_rb.html +67 -0
  226. data/doc/lib/Journal_rb.html +65 -0
  227. data/doc/lib/KeywordArray_rb.html +65 -0
  228. data/doc/lib/KeywordDocumentation_rb.html +75 -0
  229. data/doc/lib/Limits_rb.html +67 -0
  230. data/doc/lib/LogFile_rb.html +67 -0
  231. data/doc/lib/Log_rb.html +69 -0
  232. data/doc/lib/LogicalExpression_rb.html +71 -0
  233. data/doc/lib/LogicalFunction_rb.html +67 -0
  234. data/doc/lib/LogicalOperation_rb.html +67 -0
  235. data/doc/lib/MacroParser_rb.html +69 -0
  236. data/doc/lib/MacroTable_rb.html +73 -0
  237. data/doc/lib/MessageHandler_rb.html +65 -0
  238. data/doc/lib/Message_rb.html +67 -0
  239. data/doc/lib/ProjectFileParser_rb.html +79 -0
  240. data/doc/lib/Project_rb.html +109 -0
  241. data/doc/lib/PropertyList_rb.html +65 -0
  242. data/doc/lib/PropertySet_rb.html +69 -0
  243. data/doc/lib/PropertyTreeNode_rb.html +65 -0
  244. data/doc/lib/Query_rb.html +67 -0
  245. data/doc/lib/RTFNavigator_rb.html +71 -0
  246. data/doc/lib/RTFQuery_rb.html +71 -0
  247. data/doc/lib/RTFReport_rb.html +69 -0
  248. data/doc/lib/RealFormat_rb.html +65 -0
  249. data/doc/lib/ResourceScenario_rb.html +67 -0
  250. data/doc/lib/Resource_rb.html +69 -0
  251. data/doc/lib/RichTextDocument_rb.html +71 -0
  252. data/doc/lib/RichTextElement_rb.html +73 -0
  253. data/doc/lib/RichTextFunctionExample_rb.html +71 -0
  254. data/doc/lib/RichTextFunctionHandler_rb.html +65 -0
  255. data/doc/lib/RichTextParser_rb.html +71 -0
  256. data/doc/lib/RichTextScanner_rb.html +67 -0
  257. data/doc/lib/RichTextSnip_rb.html +69 -0
  258. data/doc/lib/RichTextSyntaxRules_rb.html +65 -0
  259. data/doc/lib/RichText_rb.html +69 -0
  260. data/doc/lib/RuntimeConfig_rb.html +67 -0
  261. data/doc/lib/ScenarioData_rb.html +69 -0
  262. data/doc/lib/Scenario_rb.html +67 -0
  263. data/doc/lib/Scoreboard_rb.html +65 -0
  264. data/doc/lib/SheetHandlerBase_rb.html +69 -0
  265. data/doc/lib/SheetReceiver_rb.html +75 -0
  266. data/doc/lib/SheetSender_rb.html +73 -0
  267. data/doc/lib/ShiftAssignments_rb.html +67 -0
  268. data/doc/lib/ShiftScenario_rb.html +67 -0
  269. data/doc/lib/Shift_rb.html +69 -0
  270. data/doc/lib/SourceFileInfo_rb.html +65 -0
  271. data/doc/lib/StatusSheetReceiver_rb.html +67 -0
  272. data/doc/lib/StatusSheetSender_rb.html +67 -0
  273. data/doc/lib/SyntaxReference_rb.html +73 -0
  274. data/doc/lib/TOCEntry_rb.html +69 -0
  275. data/doc/lib/TableColumnDefinition_rb.html +65 -0
  276. data/doc/lib/TableOfContents_rb.html +69 -0
  277. data/doc/lib/TaskDependency_rb.html +65 -0
  278. data/doc/lib/TaskJuggler_rb.html +73 -0
  279. data/doc/lib/TaskScenario_rb.html +67 -0
  280. data/doc/lib/Task_rb.html +69 -0
  281. data/doc/lib/TextFormatter_rb.html +67 -0
  282. data/doc/lib/TextParser/Pattern_rb.html +67 -0
  283. data/doc/lib/TextParser/Rule_rb.html +65 -0
  284. data/doc/lib/TextParser/StackElement_rb.html +65 -0
  285. data/doc/lib/TextParser/TokenDoc_rb.html +65 -0
  286. data/doc/lib/TextParser_rb.html +75 -0
  287. data/doc/lib/TextScanner_rb.html +79 -0
  288. data/doc/lib/TimeSheetReceiver_rb.html +67 -0
  289. data/doc/lib/TimeSheetSender_rb.html +67 -0
  290. data/doc/lib/TimeSheetSummary_rb.html +67 -0
  291. data/doc/lib/TimeSheets_rb.html +65 -0
  292. data/doc/lib/Tj3AppBase_rb.html +77 -0
  293. data/doc/lib/Tj3Config_rb.html +69 -0
  294. data/doc/lib/Tj3SheetAppBase_rb.html +67 -0
  295. data/doc/lib/TjException_rb.html +65 -0
  296. data/doc/lib/TjTime_rb.html +69 -0
  297. data/doc/lib/TjpExample_rb.html +67 -0
  298. data/doc/lib/TjpSyntaxRules_rb.html +65 -0
  299. data/doc/lib/UTF8String_rb.html +65 -0
  300. data/doc/lib/UserManual_rb.html +77 -0
  301. data/doc/lib/WorkingHours_rb.html +67 -0
  302. data/doc/lib/XMLDocument_rb.html +67 -0
  303. data/doc/lib/XMLElement_rb.html +67 -0
  304. data/doc/lib/daemon/Daemon_rb.html +67 -0
  305. data/doc/lib/daemon/ProcessIntercom_rb.html +67 -0
  306. data/doc/lib/daemon/ProjectBroker_rb.html +79 -0
  307. data/doc/lib/daemon/ProjectServer_rb.html +83 -0
  308. data/doc/lib/daemon/ReportServer_rb.html +73 -0
  309. data/doc/lib/deep_copy_rb.html +65 -0
  310. data/doc/lib/reports/CSVFile_rb.html +67 -0
  311. data/doc/lib/reports/ColumnTable_rb.html +67 -0
  312. data/doc/lib/reports/GanttChart_rb.html +73 -0
  313. data/doc/lib/reports/GanttContainer_rb.html +67 -0
  314. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +65 -0
  315. data/doc/lib/reports/GanttHeader_rb.html +67 -0
  316. data/doc/lib/reports/GanttLine_rb.html +77 -0
  317. data/doc/lib/reports/GanttLoadStack_rb.html +67 -0
  318. data/doc/lib/reports/GanttMilestone_rb.html +67 -0
  319. data/doc/lib/reports/GanttRouter_rb.html +65 -0
  320. data/doc/lib/reports/GanttTaskBar_rb.html +67 -0
  321. data/doc/lib/reports/HTMLGraphics_rb.html +65 -0
  322. data/doc/lib/reports/Navigator_rb.html +67 -0
  323. data/doc/lib/reports/NikuReport_rb.html +69 -0
  324. data/doc/lib/reports/ReportBase_rb.html +65 -0
  325. data/doc/lib/reports/ReportContext_rb.html +65 -0
  326. data/doc/lib/reports/ReportTableCell_rb.html +65 -0
  327. data/doc/lib/reports/ReportTableColumn_rb.html +65 -0
  328. data/doc/lib/reports/ReportTableLegend_rb.html +65 -0
  329. data/doc/lib/reports/ReportTableLine_rb.html +67 -0
  330. data/doc/lib/reports/ReportTable_rb.html +69 -0
  331. data/doc/lib/reports/Report_rb.html +91 -0
  332. data/doc/lib/reports/ResourceListRE_rb.html +73 -0
  333. data/doc/lib/reports/StatusSheetReport_rb.html +67 -0
  334. data/doc/lib/reports/TableReport_rb.html +75 -0
  335. data/doc/lib/reports/TaskListRE_rb.html +73 -0
  336. data/doc/lib/reports/TextReport_rb.html +67 -0
  337. data/doc/lib/reports/TimeSheetReport_rb.html +67 -0
  338. data/doc/lib/reports/TjpExportRE_rb.html +67 -0
  339. data/doc/lib/ruby-signal-bug_rb.html +54 -0
  340. data/doc/lib/taskjuggler3_rb.html +73 -0
  341. data/doc/lib/tj3client_rb.html +73 -0
  342. data/doc/lib/tj3d_rb.html +73 -0
  343. data/doc/lib/tj3man_rb.html +73 -0
  344. data/doc/lib/tj3ss_receiver_rb.html +69 -0
  345. data/doc/lib/tj3ss_sender_rb.html +69 -0
  346. data/doc/lib/tj3ts_receiver_rb.html +69 -0
  347. data/doc/lib/tj3ts_sender_rb.html +69 -0
  348. data/doc/lib/tj3ts_summary_rb.html +69 -0
  349. data/doc/rdoc.css +701 -0
  350. data/examples/tutorial.tjp +25 -6
  351. data/lib/Attributes.rb +6 -2
  352. data/lib/HTMLDocument.rb +18 -2
  353. data/lib/Journal.rb +47 -4
  354. data/lib/KeywordArray.rb +1 -1
  355. data/lib/KeywordDocumentation.rb +17 -77
  356. data/lib/Log.rb +3 -1
  357. data/lib/LogFile.rb +72 -0
  358. data/lib/LogicalExpression.rb +5 -10
  359. data/lib/LogicalFunction.rb +34 -18
  360. data/lib/LogicalOperation.rb +32 -18
  361. data/lib/Project.rb +85 -13
  362. data/lib/ProjectFileParser.rb +19 -6
  363. data/lib/PropertyList.rb +12 -2
  364. data/lib/PropertyTreeNode.rb +23 -9
  365. data/lib/Query.rb +51 -13
  366. data/lib/RTFReport.rb +2 -2
  367. data/lib/Resource.rb +157 -0
  368. data/lib/ResourceScenario.rb +215 -68
  369. data/lib/RichText.rb +15 -3
  370. data/lib/RichTextDocument.rb +2 -4
  371. data/lib/RichTextElement.rb +87 -25
  372. data/lib/RichTextScanner.rb +32 -5
  373. data/lib/RichTextSnip.rb +6 -4
  374. data/lib/RichTextSyntaxRules.rb +44 -8
  375. data/lib/RuntimeConfig.rb +93 -0
  376. data/lib/Scoreboard.rb +6 -6
  377. data/lib/SheetHandlerBase.rb +215 -0
  378. data/lib/SheetReceiver.rb +355 -0
  379. data/lib/SheetSender.rb +264 -0
  380. data/lib/ShiftAssignments.rb +35 -27
  381. data/lib/StatusSheetReceiver.rb +45 -0
  382. data/lib/StatusSheetSender.rb +54 -0
  383. data/lib/SyntaxReference.rb +2 -7
  384. data/lib/Task.rb +70 -0
  385. data/lib/TaskJuggler.rb +114 -12
  386. data/lib/TaskScenario.rb +131 -22
  387. data/lib/TextFormatter.rb +177 -0
  388. data/lib/TextParser.rb +10 -1
  389. data/lib/TextScanner.rb +63 -33
  390. data/lib/TimeSheetReceiver.rb +42 -0
  391. data/lib/TimeSheetSender.rb +55 -0
  392. data/lib/TimeSheetSummary.rb +149 -0
  393. data/lib/TimeSheets.rb +406 -0
  394. data/lib/Tj3AppBase.rb +114 -0
  395. data/lib/Tj3Config.rb +1 -1
  396. data/lib/Tj3SheetAppBase.rb +59 -0
  397. data/lib/TjTime.rb +14 -1
  398. data/lib/TjpSyntaxRules.rb +573 -211
  399. data/lib/UTF8String.rb +4 -0
  400. data/lib/UserManual.rb +8 -7
  401. data/lib/XMLElement.rb +27 -19
  402. data/lib/daemon/Daemon.rb +70 -0
  403. data/lib/daemon/ProcessIntercom.rb +117 -0
  404. data/lib/daemon/ProjectBroker.rb +450 -0
  405. data/lib/daemon/ProjectServer.rb +348 -0
  406. data/lib/daemon/ReportServer.rb +194 -0
  407. data/lib/reports/ColumnTable.rb +2 -0
  408. data/lib/reports/GanttChart.rb +5 -7
  409. data/lib/reports/GanttContainer.rb +5 -8
  410. data/lib/reports/GanttHeader.rb +1 -1
  411. data/lib/reports/GanttLine.rb +89 -53
  412. data/lib/reports/GanttMilestone.rb +7 -4
  413. data/lib/reports/GanttTaskBar.rb +7 -3
  414. data/lib/reports/HTMLGraphics.rb +24 -9
  415. data/lib/reports/NikuReport.rb +414 -0
  416. data/lib/reports/Report.rb +54 -20
  417. data/lib/reports/ReportBase.rb +21 -0
  418. data/lib/reports/ReportTable.rb +29 -11
  419. data/lib/reports/ReportTableCell.rb +154 -86
  420. data/lib/reports/ReportTableLegend.rb +77 -80
  421. data/lib/reports/ResourceListRE.rb +2 -3
  422. data/lib/reports/StatusSheetReport.rb +231 -0
  423. data/lib/reports/TableReport.rb +74 -65
  424. data/lib/reports/TaskListRE.rb +2 -4
  425. data/lib/reports/TextReport.rb +18 -12
  426. data/lib/reports/TimeSheetReport.rb +145 -80
  427. data/lib/reports/TjpExportRE.rb +4 -4
  428. data/lib/ruby-signal-bug.rb +43 -0
  429. data/lib/taskjuggler3.rb +27 -10
  430. data/lib/tj3client.rb +411 -77
  431. data/lib/tj3d.rb +110 -0
  432. data/lib/tj3ss_receiver.rb +56 -0
  433. data/lib/tj3ss_sender.rb +84 -0
  434. data/lib/tj3ts_receiver.rb +59 -0
  435. data/lib/tj3ts_sender.rb +78 -0
  436. data/lib/tj3ts_summary.rb +87 -0
  437. data/manual/Day_To_Day_Juggling +761 -32
  438. data/manual/Getting_Started +12 -12
  439. data/manual/Rich_Text_Attributes +13 -1
  440. data/manual/TaskJuggler_2x_Migration +41 -3
  441. data/manual/TaskJuggler_Internals +87 -0
  442. data/manual/The_TaskJuggler_Syntax +1 -2
  443. data/manual/Tutorial +10 -10
  444. data/test/TestSuite/CSV-Reports/celltext.tjp +1 -1
  445. data/test/TestSuite/HTML-Reports/TimeSheet.html +79 -0
  446. data/test/TestSuite/HTML-Reports/icons/trend-down.png +0 -0
  447. data/test/TestSuite/HTML-Reports/icons/trend-flat.png +0 -0
  448. data/test/TestSuite/HTML-Reports/icons/trend-up.png +0 -0
  449. data/test/TestSuite/HTML-Reports/reference.html +51 -0
  450. data/test/TestSuite/Scheduler/Correct/Booking2.html +603 -0
  451. data/test/TestSuite/Scheduler/Correct/Booking2.tjp +57 -0
  452. data/test/TestSuite/Scheduler/Correct/Duration.tjp +32 -18
  453. data/test/TestSuite/Scheduler/Correct/Manager.tjp +9 -0
  454. data/test/TestSuite/Scheduler/Correct/Shift.html +429 -0
  455. data/test/TestSuite/Scheduler/Correct/Shift2.html +162 -0
  456. data/test/TestSuite/Scheduler/Correct/Shift2.tjp +67 -0
  457. data/test/TestSuite/{Syntax/Correct/TimeSheet.tjp → Scheduler/Correct/TimeSheet2.tjp} +21 -8
  458. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +52 -0
  459. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +195 -0
  460. data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/details.png +0 -0
  461. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  462. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  463. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  464. data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/resource.png +0 -0
  465. data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/resourcegroup.png +0 -0
  466. data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/task.png +0 -0
  467. data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/taskgroup.png +0 -0
  468. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  469. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  470. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  471. data/test/TestSuite/{HTML-Reports/scripts → Scheduler/Correct}/scripts/wz_tooltip.js +0 -0
  472. data/test/TestSuite/Scheduler/Errors/manager_is_group.tjp +15 -0
  473. data/test/TestSuite/Scheduler/Errors/manager_is_self.tjp +11 -0
  474. data/test/TestSuite/Scheduler/Errors/resource_fail_check.tjp +12 -0
  475. data/test/TestSuite/Scheduler/Errors/resource_warn_check.tjp +12 -0
  476. data/test/TestSuite/Scheduler/Errors/task_fail_check.tjp +8 -0
  477. data/test/TestSuite/Scheduler/Errors/task_warn_check.tjp +8 -0
  478. data/test/TestSuite/Scheduler/Errors/ts_alert1_more_details.tjp +20 -0
  479. data/test/TestSuite/Scheduler/Errors/ts_alert2_more_details.tjp +21 -0
  480. data/test/TestSuite/Scheduler/Errors/ts_no_expected_end.tjp +26 -0
  481. data/test/TestSuite/Scheduler/Errors/ts_no_headline1.tjp +27 -0
  482. data/test/TestSuite/Scheduler/Errors/ts_no_rem_or_end.tjp +26 -0
  483. data/test/TestSuite/Scheduler/Errors/ts_no_remaining.tjp +26 -0
  484. data/test/TestSuite/Scheduler/Errors/ts_no_status_work.tjp +18 -0
  485. data/test/TestSuite/Scheduler/Errors/ts_no_work.tjp +26 -0
  486. data/test/TestSuite/Scheduler/Errors/ts_res_new_task.tjp +20 -0
  487. data/test/TestSuite/Scheduler/Errors/ts_work_too_high.tjp +27 -0
  488. data/test/TestSuite/Scheduler/Errors/ts_work_too_low.tjp +27 -0
  489. data/test/TestSuite/StatusSheets/boss.tji +45 -0
  490. data/test/TestSuite/StatusSheets/boss_mail +51 -0
  491. data/test/TestSuite/StatusSheets/dev2_mail +37 -0
  492. data/test/TestSuite/StatusSheets/project.tjp +275 -0
  493. data/test/TestSuite/StatusSheets/run +50 -0
  494. data/test/TestSuite/Syntax/Correct/Include.tjp +4 -0
  495. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +10 -1
  496. data/test/TestSuite/Syntax/Correct/Manager.tjp +30 -0
  497. data/test/TestSuite/Syntax/Correct/Niku.tjp +66 -0
  498. data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +83 -0
  499. data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +1 -0
  500. data/test/TestSuite/Syntax/Correct/include/dir2/file3.tji +2 -0
  501. data/test/TestSuite/Syntax/Correct/include/file1.tji +3 -0
  502. data/test/TestSuite/Syntax/Correct/tutorial.tjp +29 -8
  503. data/test/TestSuite/Syntax/Errors/ts_bad_priority.tjp +19 -0
  504. data/test/TestSuite/Syntax/Errors/ts_default_details.tjp +22 -0
  505. data/test/TestSuite/Syntax/Errors/ts_default_summary.tjp +22 -0
  506. data/test/TestSuite/Syntax/Errors/ts_duplicate_task.tjp +23 -0
  507. data/test/TestSuite/Syntax/Errors/ts_end_too_early.tjp +18 -0
  508. data/test/TestSuite/Syntax/Errors/ts_headline_too_long.tjp +19 -0
  509. data/test/TestSuite/Syntax/Errors/ts_no_headline2.tjp +27 -0
  510. data/test/TestSuite/Syntax/Errors/ts_summary_too_long.tjp +29 -0
  511. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +36 -0
  512. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +48 -0
  513. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +67 -0
  514. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +67 -0
  515. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +48 -0
  516. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +31 -0
  517. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +36 -0
  518. data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +1 -0
  519. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +1 -0
  520. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +54 -0
  521. data/test/TestSuite/TimeSheets/TimeSheets/all.tji +2 -0
  522. data/test/TestSuite/TimeSheets/dev2_mail1 +84 -0
  523. data/test/TestSuite/TimeSheets/dev2_mail2 +87 -0
  524. data/test/TestSuite/TimeSheets/project.tjp +271 -0
  525. data/test/TestSuite/TimeSheets/receiver.log +102 -0
  526. data/test/TestSuite/TimeSheets/run +75 -0
  527. data/test/TestSuite/TimeSheets/sender.log +794 -0
  528. data/test/TestSuite/TimeSheets/summary.log +884 -0
  529. data/test/TestSuite/TimeSheets/timesheets.log +45 -0
  530. data/test/TestSuite/TimeSheets/tj3d.log +292 -0
  531. data/test/test_CSV-Reports.rb +5 -3
  532. data/test/test_RichText.rb +264 -56
  533. data/test/test_Scheduler.rb +1 -0
  534. data/test/test_TextFormatter.rb +142 -0
  535. data/test/test_TjTime.rb +15 -0
  536. metadata +816 -644
  537. data/benchmarks/UTF-8-Strings.rb +0 -58
  538. data/doc/classes/AppConfig.html +0 -880
  539. data/doc/classes/Arguments.html +0 -230
  540. data/doc/classes/Object.html +0 -229
  541. data/doc/classes/String.html +0 -399
  542. data/doc/classes/TaskJuggler/Account.html +0 -257
  543. data/doc/classes/TaskJuggler/AccountAttribute.html +0 -261
  544. data/doc/classes/TaskJuggler/AccountScenario.html +0 -218
  545. data/doc/classes/TaskJuggler/Allocation.html +0 -423
  546. data/doc/classes/TaskJuggler/AllocationAttribute.html +0 -291
  547. data/doc/classes/TaskJuggler/AttributeBase.html +0 -704
  548. data/doc/classes/TaskJuggler/AttributeDefinition.html +0 -276
  549. data/doc/classes/TaskJuggler/BatchProcessor.html +0 -347
  550. data/doc/classes/TaskJuggler/Booking.html +0 -311
  551. data/doc/classes/TaskJuggler/BookingListAttribute.html +0 -263
  552. data/doc/classes/TaskJuggler/BooleanAttribute.html +0 -261
  553. data/doc/classes/TaskJuggler/CSVFile.html +0 -329
  554. data/doc/classes/TaskJuggler/CellSettingPattern.html +0 -201
  555. data/doc/classes/TaskJuggler/CellSettingPatternList.html +0 -253
  556. data/doc/classes/TaskJuggler/Charge.html +0 -283
  557. data/doc/classes/TaskJuggler/ChargeListAttribute.html +0 -229
  558. data/doc/classes/TaskJuggler/ChargeSet.html +0 -444
  559. data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +0 -276
  560. data/doc/classes/TaskJuggler/ColumnListAttribute.html +0 -231
  561. data/doc/classes/TaskJuggler/ColumnTable.html +0 -262
  562. data/doc/classes/TaskJuggler/DateAttribute.html +0 -233
  563. data/doc/classes/TaskJuggler/DefinitionListAttribute.html +0 -162
  564. data/doc/classes/TaskJuggler/DependencyListAttribute.html +0 -267
  565. data/doc/classes/TaskJuggler/DurationAttribute.html +0 -229
  566. data/doc/classes/TaskJuggler/FixnumAttribute.html +0 -194
  567. data/doc/classes/TaskJuggler/FlagListAttribute.html +0 -263
  568. data/doc/classes/TaskJuggler/FloatAttribute.html +0 -229
  569. data/doc/classes/TaskJuggler/FormatListAttribute.html +0 -197
  570. data/doc/classes/TaskJuggler/GanttChart.html +0 -696
  571. data/doc/classes/TaskJuggler/GanttContainer.html +0 -445
  572. data/doc/classes/TaskJuggler/GanttHeader.html +0 -284
  573. data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +0 -249
  574. data/doc/classes/TaskJuggler/GanttLine.html +0 -402
  575. data/doc/classes/TaskJuggler/GanttLoadStack.html +0 -331
  576. data/doc/classes/TaskJuggler/GanttMilestone.html +0 -419
  577. data/doc/classes/TaskJuggler/GanttRouter.html +0 -431
  578. data/doc/classes/TaskJuggler/GanttTaskBar.html +0 -433
  579. data/doc/classes/TaskJuggler/HTMLDocument.html +0 -240
  580. data/doc/classes/TaskJuggler/HTMLGraphics.html +0 -231
  581. data/doc/classes/TaskJuggler/Interval.html +0 -558
  582. data/doc/classes/TaskJuggler/IntervalListAttribute.html +0 -267
  583. data/doc/classes/TaskJuggler/JobInfo.html +0 -340
  584. data/doc/classes/TaskJuggler/Journal.html +0 -443
  585. data/doc/classes/TaskJuggler/JournalEntry.html +0 -274
  586. data/doc/classes/TaskJuggler/JournalEntryList.html +0 -454
  587. data/doc/classes/TaskJuggler/KeywordArray.html +0 -179
  588. data/doc/classes/TaskJuggler/KeywordDocumentation.html +0 -846
  589. data/doc/classes/TaskJuggler/Limits/Limit.html +0 -385
  590. data/doc/classes/TaskJuggler/Limits.html +0 -422
  591. data/doc/classes/TaskJuggler/LimitsAttribute.html +0 -261
  592. data/doc/classes/TaskJuggler/ListAttributeBase.html +0 -207
  593. data/doc/classes/TaskJuggler/Log.html +0 -655
  594. data/doc/classes/TaskJuggler/LogicalAttribute.html +0 -259
  595. data/doc/classes/TaskJuggler/LogicalExpression.html +0 -292
  596. data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +0 -194
  597. data/doc/classes/TaskJuggler/LogicalFlag.html +0 -209
  598. data/doc/classes/TaskJuggler/LogicalFunction.html +0 -339
  599. data/doc/classes/TaskJuggler/LogicalOperation.html +0 -351
  600. data/doc/classes/TaskJuggler/Macro.html +0 -198
  601. data/doc/classes/TaskJuggler/MacroParser.html +0 -360
  602. data/doc/classes/TaskJuggler/MacroTable.html +0 -370
  603. data/doc/classes/TaskJuggler/Message.html +0 -285
  604. data/doc/classes/TaskJuggler/MessageHandler.html +0 -231
  605. data/doc/classes/TaskJuggler/Navigator.html +0 -313
  606. data/doc/classes/TaskJuggler/NavigatorElement.html +0 -449
  607. data/doc/classes/TaskJuggler/OnShiftCache.html +0 -316
  608. data/doc/classes/TaskJuggler/Project.html +0 -2257
  609. data/doc/classes/TaskJuggler/ProjectFileParser.html +0 -420
  610. data/doc/classes/TaskJuggler/PropertyAttribute.html +0 -194
  611. data/doc/classes/TaskJuggler/PropertyList.html +0 -668
  612. data/doc/classes/TaskJuggler/PropertySet.html +0 -1286
  613. data/doc/classes/TaskJuggler/PropertyTreeNode.html +0 -1742
  614. data/doc/classes/TaskJuggler/Query.html +0 -870
  615. data/doc/classes/TaskJuggler/RTFNavigator.html +0 -293
  616. data/doc/classes/TaskJuggler/RTFQuery.html +0 -343
  617. data/doc/classes/TaskJuggler/RTFReport.html +0 -304
  618. data/doc/classes/TaskJuggler/RealFormat.html +0 -309
  619. data/doc/classes/TaskJuggler/RealFormatAttribute.html +0 -162
  620. data/doc/classes/TaskJuggler/ReferenceAttribute.html +0 -328
  621. data/doc/classes/TaskJuggler/RemoteServiceManager.html +0 -335
  622. data/doc/classes/TaskJuggler/Report.html +0 -321
  623. data/doc/classes/TaskJuggler/ReportBase.html +0 -437
  624. data/doc/classes/TaskJuggler/ReportContext.html +0 -248
  625. data/doc/classes/TaskJuggler/ReportServer.html +0 -320
  626. data/doc/classes/TaskJuggler/ReportTable.html +0 -526
  627. data/doc/classes/TaskJuggler/ReportTableCell.html +0 -614
  628. data/doc/classes/TaskJuggler/ReportTableColumn.html +0 -368
  629. data/doc/classes/TaskJuggler/ReportTableLegend.html +0 -347
  630. data/doc/classes/TaskJuggler/ReportTableLine.html +0 -481
  631. data/doc/classes/TaskJuggler/Resource.html +0 -211
  632. data/doc/classes/TaskJuggler/ResourceListAttribute.html +0 -302
  633. data/doc/classes/TaskJuggler/ResourceListRE.html +0 -245
  634. data/doc/classes/TaskJuggler/ResourceScenario.html +0 -1229
  635. data/doc/classes/TaskJuggler/RichText.html +0 -357
  636. data/doc/classes/TaskJuggler/RichTextAttribute.html +0 -293
  637. data/doc/classes/TaskJuggler/RichTextDocument.html +0 -424
  638. data/doc/classes/TaskJuggler/RichTextElement.html +0 -932
  639. data/doc/classes/TaskJuggler/RichTextException.html +0 -212
  640. data/doc/classes/TaskJuggler/RichTextFunctionExample.html +0 -301
  641. data/doc/classes/TaskJuggler/RichTextFunctionHandler.html +0 -245
  642. data/doc/classes/TaskJuggler/RichTextIntermediate.html +0 -563
  643. data/doc/classes/TaskJuggler/RichTextParser.html +0 -321
  644. data/doc/classes/TaskJuggler/RichTextScanner.html +0 -424
  645. data/doc/classes/TaskJuggler/RichTextSnip.html +0 -404
  646. data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +0 -1105
  647. data/doc/classes/TaskJuggler/Scenario.html +0 -163
  648. data/doc/classes/TaskJuggler/ScenarioData.html +0 -358
  649. data/doc/classes/TaskJuggler/ScenarioListAttribute.html +0 -229
  650. data/doc/classes/TaskJuggler/Scoreboard.html +0 -642
  651. data/doc/classes/TaskJuggler/Shift.html +0 -255
  652. data/doc/classes/TaskJuggler/ShiftAssignment.html +0 -492
  653. data/doc/classes/TaskJuggler/ShiftAssignments.html +0 -719
  654. data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +0 -261
  655. data/doc/classes/TaskJuggler/ShiftScenario.html +0 -282
  656. data/doc/classes/TaskJuggler/SortListAttribute.html +0 -196
  657. data/doc/classes/TaskJuggler/SourceFileInfo.html +0 -251
  658. data/doc/classes/TaskJuggler/StringAttribute.html +0 -229
  659. data/doc/classes/TaskJuggler/SymbolAttribute.html +0 -194
  660. data/doc/classes/TaskJuggler/SyntaxReference.html +0 -520
  661. data/doc/classes/TaskJuggler/TOCEntry.html +0 -246
  662. data/doc/classes/TaskJuggler/TSResourceRecord.html +0 -197
  663. data/doc/classes/TaskJuggler/TSTaskRecord.html +0 -215
  664. data/doc/classes/TaskJuggler/TableColumnDefinition.html +0 -309
  665. data/doc/classes/TaskJuggler/TableOfContents.html +0 -260
  666. data/doc/classes/TaskJuggler/TableReport.html +0 -1015
  667. data/doc/classes/TaskJuggler/Task.html +0 -203
  668. data/doc/classes/TaskJuggler/TaskDependency.html +0 -255
  669. data/doc/classes/TaskJuggler/TaskListAttribute.html +0 -267
  670. data/doc/classes/TaskJuggler/TaskListRE.html +0 -245
  671. data/doc/classes/TaskJuggler/TaskScenario.html +0 -2543
  672. data/doc/classes/TaskJuggler/TextParser/Pattern.html +0 -927
  673. data/doc/classes/TaskJuggler/TextParser/Rule.html +0 -783
  674. data/doc/classes/TaskJuggler/TextParser/StackElement.html +0 -272
  675. data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +0 -212
  676. data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +0 -225
  677. data/doc/classes/TaskJuggler/TextParser.html +0 -754
  678. data/doc/classes/TaskJuggler/TextReport.html +0 -367
  679. data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +0 -355
  680. data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +0 -348
  681. data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +0 -264
  682. data/doc/classes/TaskJuggler/TextScanner.html +0 -815
  683. data/doc/classes/TaskJuggler/TimeSheetReport.html +0 -406
  684. data/doc/classes/TaskJuggler/TjException.html +0 -185
  685. data/doc/classes/TaskJuggler/TjTime.html +0 -1904
  686. data/doc/classes/TaskJuggler/TjpExample.html +0 -314
  687. data/doc/classes/TaskJuggler/TjpExportRE.html +0 -306
  688. data/doc/classes/TaskJuggler/TjpSyntaxRules.html +0 -10812
  689. data/doc/classes/TaskJuggler/UserManual.html +0 -605
  690. data/doc/classes/TaskJuggler/WorkingHours.html +0 -586
  691. data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +0 -252
  692. data/doc/classes/TaskJuggler/XMLBlob.html +0 -207
  693. data/doc/classes/TaskJuggler/XMLComment.html +0 -206
  694. data/doc/classes/TaskJuggler/XMLDocument.html +0 -298
  695. data/doc/classes/TaskJuggler/XMLElement.html +0 -389
  696. data/doc/classes/TaskJuggler/XMLNamedText.html +0 -174
  697. data/doc/classes/TaskJuggler/XMLText.html +0 -221
  698. data/doc/classes/TaskJuggler.html +0 -1573
  699. data/doc/files/COPYING.html +0 -448
  700. data/doc/files/README.html +0 -134
  701. data/doc/files/lib/AccountScenario_rb.html +0 -117
  702. data/doc/files/lib/Account_rb.html +0 -119
  703. data/doc/files/lib/Allocation_rb.html +0 -119
  704. data/doc/files/lib/AppConfig_rb.html +0 -119
  705. data/doc/files/lib/AttributeBase_rb.html +0 -117
  706. data/doc/files/lib/AttributeDefinition_rb.html +0 -107
  707. data/doc/files/lib/Attributes_rb.html +0 -131
  708. data/doc/files/lib/BatchProcessor_rb.html +0 -119
  709. data/doc/files/lib/Booking_rb.html +0 -107
  710. data/doc/files/lib/ChargeSet_rb.html +0 -117
  711. data/doc/files/lib/Charge_rb.html +0 -117
  712. data/doc/files/lib/HTMLDocument_rb.html +0 -117
  713. data/doc/files/lib/Interval_rb.html +0 -117
  714. data/doc/files/lib/Journal_rb.html +0 -107
  715. data/doc/files/lib/KeywordArray_rb.html +0 -107
  716. data/doc/files/lib/KeywordDocumentation_rb.html +0 -123
  717. data/doc/files/lib/Limits_rb.html +0 -117
  718. data/doc/files/lib/Log_rb.html +0 -117
  719. data/doc/files/lib/LogicalExpression_rb.html +0 -121
  720. data/doc/files/lib/LogicalFunction_rb.html +0 -117
  721. data/doc/files/lib/LogicalOperation_rb.html +0 -117
  722. data/doc/files/lib/MacroParser_rb.html +0 -119
  723. data/doc/files/lib/MacroTable_rb.html +0 -123
  724. data/doc/files/lib/MessageHandler_rb.html +0 -107
  725. data/doc/files/lib/Message_rb.html +0 -117
  726. data/doc/files/lib/ProjectFileParser_rb.html +0 -129
  727. data/doc/files/lib/Project_rb.html +0 -153
  728. data/doc/files/lib/PropertyList_rb.html +0 -107
  729. data/doc/files/lib/PropertySet_rb.html +0 -119
  730. data/doc/files/lib/PropertyTreeNode_rb.html +0 -107
  731. data/doc/files/lib/Query_rb.html +0 -117
  732. data/doc/files/lib/RTFNavigator_rb.html +0 -121
  733. data/doc/files/lib/RTFQuery_rb.html +0 -121
  734. data/doc/files/lib/RTFReport_rb.html +0 -119
  735. data/doc/files/lib/RealFormat_rb.html +0 -107
  736. data/doc/files/lib/RemoteServiceManager_rb.html +0 -117
  737. data/doc/files/lib/ReportServer_rb.html +0 -107
  738. data/doc/files/lib/ResourceScenario_rb.html +0 -117
  739. data/doc/files/lib/Resource_rb.html +0 -119
  740. data/doc/files/lib/RichTextDocument_rb.html +0 -121
  741. data/doc/files/lib/RichTextElement_rb.html +0 -121
  742. data/doc/files/lib/RichTextFunctionExample_rb.html +0 -121
  743. data/doc/files/lib/RichTextFunctionHandler_rb.html +0 -107
  744. data/doc/files/lib/RichTextParser_rb.html +0 -121
  745. data/doc/files/lib/RichTextScanner_rb.html +0 -117
  746. data/doc/files/lib/RichTextSnip_rb.html +0 -119
  747. data/doc/files/lib/RichTextSyntaxRules_rb.html +0 -107
  748. data/doc/files/lib/RichText_rb.html +0 -119
  749. data/doc/files/lib/ScenarioData_rb.html +0 -119
  750. data/doc/files/lib/Scenario_rb.html +0 -117
  751. data/doc/files/lib/Scoreboard_rb.html +0 -107
  752. data/doc/files/lib/ShiftAssignments_rb.html +0 -117
  753. data/doc/files/lib/ShiftScenario_rb.html +0 -117
  754. data/doc/files/lib/Shift_rb.html +0 -119
  755. data/doc/files/lib/SourceFileInfo_rb.html +0 -107
  756. data/doc/files/lib/SyntaxReference_rb.html +0 -123
  757. data/doc/files/lib/TOCEntry_rb.html +0 -119
  758. data/doc/files/lib/TableColumnDefinition_rb.html +0 -107
  759. data/doc/files/lib/TableOfContents_rb.html +0 -119
  760. data/doc/files/lib/TaskDependency_rb.html +0 -107
  761. data/doc/files/lib/TaskJuggler_rb.html +0 -125
  762. data/doc/files/lib/TaskScenario_rb.html +0 -117
  763. data/doc/files/lib/Task_rb.html +0 -119
  764. data/doc/files/lib/TextParser/Pattern_rb.html +0 -117
  765. data/doc/files/lib/TextParser/Rule_rb.html +0 -107
  766. data/doc/files/lib/TextParser/StackElement_rb.html +0 -107
  767. data/doc/files/lib/TextParser/TokenDoc_rb.html +0 -107
  768. data/doc/files/lib/TextParser_rb.html +0 -125
  769. data/doc/files/lib/TextScanner_rb.html +0 -129
  770. data/doc/files/lib/Tj3Config_rb.html +0 -119
  771. data/doc/files/lib/TjException_rb.html +0 -107
  772. data/doc/files/lib/TjTime_rb.html +0 -119
  773. data/doc/files/lib/TjpExample_rb.html +0 -117
  774. data/doc/files/lib/TjpSyntaxRules_rb.html +0 -107
  775. data/doc/files/lib/UTF8String_rb.html +0 -140
  776. data/doc/files/lib/UserManual_rb.html +0 -127
  777. data/doc/files/lib/WorkingHours_rb.html +0 -117
  778. data/doc/files/lib/XMLDocument_rb.html +0 -117
  779. data/doc/files/lib/XMLElement_rb.html +0 -117
  780. data/doc/files/lib/deep_copy_rb.html +0 -107
  781. data/doc/files/lib/reports/CSVFile_rb.html +0 -117
  782. data/doc/files/lib/reports/ColumnTable_rb.html +0 -117
  783. data/doc/files/lib/reports/GanttChart_rb.html +0 -123
  784. data/doc/files/lib/reports/GanttContainer_rb.html +0 -117
  785. data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +0 -107
  786. data/doc/files/lib/reports/GanttHeader_rb.html +0 -117
  787. data/doc/files/lib/reports/GanttLine_rb.html +0 -127
  788. data/doc/files/lib/reports/GanttLoadStack_rb.html +0 -117
  789. data/doc/files/lib/reports/GanttMilestone_rb.html +0 -117
  790. data/doc/files/lib/reports/GanttRouter_rb.html +0 -107
  791. data/doc/files/lib/reports/GanttTaskBar_rb.html +0 -117
  792. data/doc/files/lib/reports/HTMLGraphics_rb.html +0 -107
  793. data/doc/files/lib/reports/Navigator_rb.html +0 -117
  794. data/doc/files/lib/reports/ReportBase_rb.html +0 -107
  795. data/doc/files/lib/reports/ReportContext_rb.html +0 -107
  796. data/doc/files/lib/reports/ReportTableCell_rb.html +0 -107
  797. data/doc/files/lib/reports/ReportTableColumn_rb.html +0 -107
  798. data/doc/files/lib/reports/ReportTableLegend_rb.html +0 -107
  799. data/doc/files/lib/reports/ReportTableLine_rb.html +0 -117
  800. data/doc/files/lib/reports/ReportTable_rb.html +0 -119
  801. data/doc/files/lib/reports/Report_rb.html +0 -137
  802. data/doc/files/lib/reports/ResourceListRE_rb.html +0 -123
  803. data/doc/files/lib/reports/TableReport_rb.html +0 -125
  804. data/doc/files/lib/reports/TaskListRE_rb.html +0 -123
  805. data/doc/files/lib/reports/TextReport_rb.html +0 -117
  806. data/doc/files/lib/reports/TimeSheetReport_rb.html +0 -117
  807. data/doc/files/lib/reports/TjpExportRE_rb.html +0 -117
  808. data/doc/files/lib/taskjuggler3_rb.html +0 -298
  809. data/doc/files/lib/tj3client_rb.html +0 -280
  810. data/doc/files/lib/tj3man_rb.html +0 -190
  811. data/doc/fr_class_index.html +0 -345
  812. data/doc/fr_file_index.html +0 -247
  813. data/doc/fr_method_index.html +0 -2355
  814. data/doc/rdoc-style.css +0 -299
  815. data/lib/RemoteServiceManager.rb +0 -80
  816. data/lib/ReportServer.rb +0 -66
  817. data/test/TestSuite/HTML-Reports/Alerts.html +0 -172
  818. data/test/TestSuite/HTML-Reports/CellText.html +0 -758
  819. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +0 -156
  820. data/test/TestSuite/HTML-Reports/IsOngoing.html +0 -172
  821. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +0 -80
  822. data/test/TestSuite/HTML-Reports/Query.html +0 -31
  823. data/test/TestSuite/HTML-Reports/depArrows.html +0 -842
  824. data/test/TestSuite/Syntax/Correct/RawHTML.tjp +0 -31
  825. data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
  826. data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
  827. data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
  828. data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +0 -1301
  829. data/test/TestSuite/Syntax/Errors/export_bad_extn.tjp +0 -9
@@ -84,23 +84,30 @@ class TaskJuggler
84
84
  end
85
85
  end
86
86
 
87
- # Convert the operation into a textual representation. This function is used
88
- # for error reporting and debugging.
89
- def to_s
87
+ # Convert the operation into a textual representation.
88
+ def to_s(query)
90
89
  if @operator.nil?
91
- "#{@operand1.to_s}"
90
+ operand_to_s(@operand1, query)
92
91
  elsif @operand2.nil?
93
- "#{@operator}(#{@operand1.is_a?(String) ?
94
- "'" + @operand1 + "'" : @operand1})"
92
+ @operator + operand_to_s(@operand1, query)
95
93
  else
96
- "(#{@operand1.is_a?(String) ? "'" + @operand1 + "'" :
97
- @operand1} #{@operator} #{
98
- @operand2.is_a?(String) ? "'" + @operand2 + "'" : @operand2})"
94
+ "(#{operand_to_s(@operand1, query)} #{@operator} " +
95
+ "#{operand_to_s(@operand2, query)})"
99
96
  end
100
97
  end
101
98
 
102
99
  private
103
100
 
101
+ def operand_to_s(operand, query)
102
+ if operand.is_a?(LogicalOperation)
103
+ operand.to_s(query)
104
+ elsif operand.is_a?(String)
105
+ "'#{operand}'"
106
+ else
107
+ operand.to_s
108
+ end
109
+ end
110
+
104
111
  # We need to do binary operator evaluation with various coerce functions.
105
112
  # This function does the evaluation of _opnd1_ and _opnd2_ with the
106
113
  # operation specified by _operator_. The operands are first coerced into
@@ -129,7 +136,7 @@ class TaskJuggler
129
136
  # First the obvious ones.
130
137
  return val if val.class == TrueClass || val.class == FalseClass
131
138
  # An empty String means false, else true.
132
- return !val.empty if val.is_a?(String)
139
+ return !val.empty? if val.is_a?(String)
133
140
  # In TJP logic 'non 0' means false.
134
141
  return val != 0 if val.is_a?(Fixnum) || val.is_a?(Bignum)
135
142
 
@@ -178,8 +185,6 @@ class TaskJuggler
178
185
  # the value.
179
186
  def eval(expr)
180
187
  query = expr.query
181
- project = query.property.project
182
- report = project.reportContext.report
183
188
  query.scenarioIdx = @scenarioIdx
184
189
  query.attributeId = @operand1
185
190
  query.process
@@ -191,9 +196,15 @@ class TaskJuggler
191
196
  query.result || ''
192
197
  end
193
198
 
194
- # Used for debugging and error reporting.
195
- def to_s # :nodoc
196
- "#{@scenarioIdx}.#{@operand1.to_s}"
199
+ # Dumps the LogicalOperation as String. If _query_ is nil, the variable
200
+ # names are shown, otherwise their values.
201
+ def to_s(query)
202
+ if query
203
+ query.process
204
+ query.to_s
205
+ else
206
+ "#{@scenarioIdx}.#{@operand1}"
207
+ end
197
208
  end
198
209
 
199
210
  end
@@ -211,9 +222,12 @@ class TaskJuggler
211
222
  expr.query.property['flags', 0].include?(@operand1)
212
223
  end
213
224
 
214
- # Used for debugging and error reporting.
215
- def to_s # :nodoc:
216
- @operand1
225
+ def to_s(query)
226
+ if query
227
+ query.property['flags', 0].include(@operand1) ? 'true' : 'false'
228
+ else
229
+ @operand1
230
+ end
217
231
  end
218
232
 
219
233
  end
data/lib/Project.rb CHANGED
@@ -10,6 +10,8 @@
10
10
  # published by the Free Software Foundation.
11
11
  #
12
12
 
13
+ require 'TjException'
14
+ require 'Message'
13
15
  require 'TjTime'
14
16
  require 'Booking'
15
17
  require 'PropertySet'
@@ -25,6 +27,7 @@ require 'Resource'
25
27
  require 'reports/Report'
26
28
  require 'ShiftAssignments'
27
29
  require 'WorkingHours'
30
+ require 'TimeSheets'
28
31
  require 'ProjectFileParser'
29
32
  require 'BatchProcessor'
30
33
  require 'Journal'
@@ -46,8 +49,8 @@ class TaskJuggler
46
49
  class Project
47
50
 
48
51
  attr_reader :accounts, :shifts, :tasks, :resources, :scenarios,
49
- :reports, :messageHandler
50
- attr_accessor :reportContext, :outputDir
52
+ :timeSheets, :reports, :messageHandler
53
+ attr_accessor :reportContext, :outputDir, :warnTsDeltas
51
54
 
52
55
  # Create a project with the specified +id+, +name+ and +version+.
53
56
  # +messageHandler+ is a MessageHandler reference that is used to handle
@@ -166,12 +169,16 @@ class TaskJuggler
166
169
  false, false, true, 0.0 ],
167
170
  [ 'duties', 'Duties', TaskListAttribute,
168
171
  false, false, true, [] ],
172
+ [ 'directreports', 'Direct Reports', ResourceListAttribute,
173
+ false, false, true, [] ],
169
174
  [ 'efficiency','Efficiency', FloatAttribute,
170
175
  true, false, true, 1.0 ],
171
176
  [ 'effort', 'Total Effort', FixnumAttribute,
172
177
  false, false, true, 0 ],
173
178
  [ 'email', 'Email', StringAttribute,
174
- true, false, false, nil ],
179
+ false, false, false, nil ],
180
+ [ 'fail', 'Failure Condition', LogicalExpressionAttribute,
181
+ false, false, true, nil ],
175
182
  [ 'flags', 'Flags', FlagListAttribute,
176
183
  true, false, true, [] ],
177
184
  [ 'fte', 'FTE', FloatAttribute,
@@ -182,8 +189,12 @@ class TaskJuggler
182
189
  false, false, false, -1 ],
183
190
  [ 'limits', 'Limits', LimitsAttribute,
184
191
  true, true, true, nil ],
192
+ [ 'managers', 'Managers', ResourceListAttribute,
193
+ true, false, true, [] ],
185
194
  [ 'rate', 'Rate', FloatAttribute,
186
195
  true, true, true, 0.0 ],
196
+ [ 'reports', 'Reports', ResourceListAttribute,
197
+ false, false, true, [] ],
187
198
  [ 'shifts', 'Shifts', ShiftAssignmentsAttribute,
188
199
  true, false, true, nil ],
189
200
  [ 'timezone', 'Time Zone', StringAttribute,
@@ -192,6 +203,8 @@ class TaskJuggler
192
203
  false, false, false, "" ],
193
204
  [ 'vacations', 'Vacations', IntervalListAttribute,
194
205
  true, true, true, [] ],
206
+ [ 'warn', 'Warning Condition', LogicalExpressionAttribute,
207
+ false, false, true, nil ],
195
208
  [ 'wbs', 'WBS', StringAttribute,
196
209
  false, false, false, "" ],
197
210
  [ 'workinghours', 'Working Hours', WorkingHoursAttribute,
@@ -229,6 +242,8 @@ class TaskJuggler
229
242
  false, false, true, [] ],
230
243
  [ 'endsuccs', 'End Succs.', TaskListAttribute,
231
244
  false, false, true, [] ],
245
+ [ 'fail', 'Failure Condition', LogicalExpressionAttribute,
246
+ false, false, true, nil ],
232
247
  [ 'flags', 'Flags', FlagListAttribute,
233
248
  true, false, true, [] ],
234
249
  [ 'forward', 'Scheduling', BooleanAttribute,
@@ -275,6 +290,8 @@ class TaskJuggler
275
290
  false, false, true, "" ],
276
291
  [ 'tree', 'Tree Index', StringAttribute,
277
292
  false, false, false, "" ],
293
+ [ 'warn', 'Warning Condition', LogicalExpressionAttribute,
294
+ false, false, true, nil ],
278
295
  [ 'wbs', 'WBS', StringAttribute,
279
296
  false, false, false, "" ]
280
297
  ]
@@ -373,9 +390,12 @@ class TaskJuggler
373
390
 
374
391
  Scenario.new(self, 'plan', 'Plan Scenario', nil)
375
392
 
393
+ @timeSheets = TimeSheets.new
394
+
376
395
  # This holds a reference to the ReportContext for each Thread.
377
396
  @reportContext = nil
378
397
  @outputDir = ''
398
+ @warnTsDeltas = false
379
399
  end
380
400
 
381
401
  # Overload the deep_clone function so that references to the project don't
@@ -465,6 +485,11 @@ class TaskJuggler
465
485
  @attributes['yearlyworkingdays'].to_f
466
486
  end
467
487
 
488
+ # Convert timeSlots to working days.
489
+ def slotsToDays(slots)
490
+ slots * @attributes['scheduleGranularity'] / (60 * 60 * dailyWorkingHours)
491
+ end
492
+
468
493
  # call-seq:
469
494
  # scenario(index) -> Scenario
470
495
  # scenario(id) -> Scenario
@@ -573,6 +598,7 @@ class TaskJuggler
573
598
  return false
574
599
  end
575
600
 
601
+ @timeSheets.warnOnDelta if @warnTsDeltas
576
602
  true
577
603
  end
578
604
 
@@ -619,17 +645,39 @@ class TaskJuggler
619
645
  true
620
646
  end
621
647
 
622
- def generateReport(reportId)
623
- unless (report = @reports[reportId])
624
- error('unknown_report_id',
625
- "Request to generate unknown report #{reportId}")
648
+ def generateReport(reportId, regExpMode)
649
+ reportList = regExpMode ? reportList = matchingReports(reportId) :
650
+ [ reportId ]
651
+ reportList.each do |id|
652
+ unless (report = @reports[id])
653
+ error('unknown_report_id',
654
+ "Request to generate unknown report #{id}")
655
+ end
656
+ Log.startProgressMeter("Report #{report.name}")
657
+ @reportContext = ReportContext.new(self, report)
658
+ report.generate
659
+ Log.stopProgressMeter
626
660
  end
627
- Log.startProgressMeter("Report #{report.name}")
628
- @reportContext = ReportContext.new(self, report)
629
- report.generate
630
- Log.stopProgressMeter
631
661
  end
632
662
 
663
+ def listReports(reportId, regExpMode)
664
+ reportList = regExpMode ? reportList = matchingReports(reportId) :
665
+ @reports[reportId] ? [ reportId ] : []
666
+ puts "No match for #{reportId}" if reportList.empty?
667
+ reportList.each do |id|
668
+ report = @reports[id]
669
+ formats = report.get('formats')
670
+ next if formats.empty?
671
+
672
+ puts sprintf("%-20s %-15s %s", id, formats.join(', '), report.name)
673
+ end
674
+ end
675
+
676
+ def checkTimeSheets
677
+ @timeSheets.check
678
+ end
679
+
680
+
633
681
  ####################################################################
634
682
  # The following functions are not intended to be called from outside
635
683
  # the TaskJuggler library. There is no guarantee that these
@@ -784,6 +832,7 @@ class TaskJuggler
784
832
  def error(id, text)
785
833
  message = Message.new(id, 'error', text)
786
834
  @messageHandler.send(message)
835
+ raise TjException
787
836
  end
788
837
 
789
838
  protected
@@ -805,10 +854,14 @@ class TaskJuggler
805
854
  i = 0
806
855
  usedResources.each do |resource|
807
856
  resource.prepareScheduling(scIdx)
857
+ resource.preScheduleCheck(scIdx)
808
858
  i += 1
809
859
  Log.progress((i.to_f / total) * 0.8)
810
860
  end
811
861
 
862
+ resources.each { |resource| resource.setDirectReports(scIdx) }
863
+ resources.each { |resource| resource.setReports(scIdx) }
864
+
812
865
  tasks.each { |task| task.prepareScheduling(scIdx) }
813
866
  tasks.each { |task| task.Xref(scIdx) }
814
867
  tasks.each { |task| task.propagateInitialValues(scIdx) }
@@ -834,16 +887,18 @@ class TaskJuggler
834
887
  tasks.each { |task| task.calcCriticalness(scIdx) }
835
888
  Log.progress(0.95)
836
889
  tasks.each { |task| task.calcPathCriticalness(scIdx) }
890
+ Log.progress(0.99)
891
+ @timeSheets.check
837
892
  Log.progress(1.0)
838
893
 
839
894
  Log.stopProgressMeter
840
895
  # This is used for debugging only
841
896
  if false
842
897
  resources.each do |resource|
843
- puts resource
898
+ puts "#{resource}"
844
899
  end
845
900
  tasks.each do |task|
846
- puts task
901
+ puts "#{task}"
847
902
  end
848
903
  end
849
904
  end
@@ -864,6 +919,12 @@ class TaskJuggler
864
919
  i += 1
865
920
  Log.progress(0.5 + (i.to_f / total) * 0.5)
866
921
  end
922
+
923
+ # This should be really fast so we don't log progess.
924
+ @resources.each do |resource|
925
+ resource.postScheduleCheck(scIdx)
926
+ end
927
+
867
928
  Log.stopProgressMeter
868
929
  end
869
930
 
@@ -949,6 +1010,17 @@ class TaskJuggler
949
1010
  true
950
1011
  end
951
1012
 
1013
+ private
1014
+
1015
+ def matchingReports(reportId)
1016
+ list = []
1017
+ @reports.each do |report|
1018
+ id = report.fullId
1019
+ list << id if Regexp.new(reportId) =~ id
1020
+ end
1021
+ list
1022
+ end
1023
+
952
1024
  end
953
1025
 
954
1026
  end
@@ -165,6 +165,11 @@ class TaskJuggler
165
165
  # attribute. @propertySet determines what property should be extended.
166
166
  # _type_ is the attribute type, _default_ is the default value.
167
167
  def extendPropertySetDefinition(type, default)
168
+ if @propertySet.knownAttribute?(@val[1])
169
+ error('extend_redefinition',
170
+ "The extended attribute #{@val[1]} has already been defined.")
171
+ end
172
+
168
173
  # Determine the values for scenarioSpecific and inheritable.
169
174
  inherit = false
170
175
  scenarioSpecific = false
@@ -230,12 +235,15 @@ class TaskJuggler
230
235
  # inheritance. +name+ is the name of the report, +type+ is the report
231
236
  # type. +sourceFileInfo+ is a SourceFileInfo of the report definition. The
232
237
  # method returns the newly created Report.
233
- def newReport(name, type, sourceFileInfo)
234
- if @project.reportByName(name)
235
- error('report_redefinition',
236
- "A report with the name #{name} has already been defined.")
238
+ def newReport(id, name, type, sourceFileInfo)
239
+ @reportCounter += 1
240
+ if name != '.'
241
+ if @project.reportByName(name)
242
+ error('report_redefinition',
243
+ "A report with the name #{name} has already been defined.")
244
+ end
237
245
  end
238
- @property = Report.new(@project, "report#{@reportCounter += 1}",
246
+ @property = Report.new(@project, id || "report#{@reportCounter}",
239
247
  name, nil)
240
248
  @property.typeSpec = type
241
249
  @property.sourceFileInfo = sourceFileInfo
@@ -281,7 +289,7 @@ class TaskJuggler
281
289
  descr('No items')
282
290
  # Or the list consists of one or more comma separated keywords.
283
291
  pattern([ "!#{name}_AoN_ruleItems" ], lambda {
284
- KeywordArray.new(@val)
292
+ KeywordArray.new(@val[0])
285
293
  })
286
294
  }
287
295
  # Create the rule for the comma separated list.
@@ -303,6 +311,10 @@ class TaskJuggler
303
311
 
304
312
  def listRule(name, listItem)
305
313
  pattern([ "#{listItem}", "!#{name}" ], lambda {
314
+ if @val[1] && @val[1].include?(@val[0])
315
+ error('duplicate_in_list',
316
+ "Duplicate items in list.")
317
+ end
306
318
  [ @val[0] ] + (@val[1].nil? ? [] : @val[1])
307
319
  })
308
320
  newRule(name) {
@@ -366,6 +378,7 @@ class TaskJuggler
366
378
  # Add a reference to another pattern. This information is only used to
367
379
  # generate the documentation for the patterns of this rule.
368
380
  def also(seeAlso)
381
+ seeAlso = [ seeAlso ] unless seeAlso.is_a?(Array)
369
382
  @cr.setSeeAlso(seeAlso)
370
383
  end
371
384
 
data/lib/PropertyList.rb CHANGED
@@ -162,6 +162,11 @@ class TaskJuggler
162
162
  index
163
163
  end
164
164
 
165
+ # Return the Array index of _item_ or nil.
166
+ def itemIndex(item)
167
+ @items.index(item)
168
+ end
169
+
165
170
  # This function sets the index attribute of all the properties in the list.
166
171
  # The index starts with 0 and increases for each property.
167
172
  def index
@@ -225,8 +230,13 @@ class TaskJuggler
225
230
  # If the scenario index is negative we have a non-scenario-specific
226
231
  # attribute.
227
232
  if @scenarioIdx[i] < 0
228
- aVal = a.get(@sortingCriteria[i])
229
- bVal = b.get(@sortingCriteria[i])
233
+ if @sortingCriteria[i] == 'id'
234
+ aVal = a.fullId
235
+ bVal = b.fullId
236
+ else
237
+ aVal = a.get(@sortingCriteria[i])
238
+ bVal = b.get(@sortingCriteria[i])
239
+ end
230
240
  else
231
241
  aVal = a[@sortingCriteria[i], @scenarioIdx[i]]
232
242
  bVal = b[@sortingCriteria[i], @scenarioIdx[i]]
@@ -161,11 +161,25 @@ class TaskJuggler
161
161
  next if scenario.parent.nil?
162
162
  parentScenarioIdx = scenario.parent.sequenceNo - 1
163
163
  # We copy only provided or inherited values from parent scenario when
164
- # we don't have a provided or inherited value in this scenario.
165
- if (provided(attrDef.id, parentScenarioIdx) ||
166
- inherited(attrDef.id, parentScenarioIdx)) &&
167
- !(provided(attrDef.id, scenarioIdx) ||
168
- inherited(attrDef.id, scenarioIdx))
164
+ # we don't have a provided value in this scenario. Inherited values
165
+ # will be overwritten
166
+ parPro = provided(attrDef.id, parentScenarioIdx)
167
+ parInh = inherited(attrDef.id, parentScenarioIdx)
168
+ chiPro = provided(attrDef.id, scenarioIdx)
169
+ chiInh = inherited(attrDef.id, scenarioIdx)
170
+ # Parent/Child inheritance matrix
171
+ # P: Provided p: not provided
172
+ # I: Inherited i: not inherited
173
+ # -: Illegal N: Don't copy Y: Copy
174
+ #
175
+ # parent
176
+ # PI Pi pI pi
177
+ # child PI - - - -
178
+ # Pi - N N N
179
+ # pI - Y N N
180
+ # pi - Y Y N
181
+ if ((parPro || parInh) && !(chiPro || chiInh)) ||
182
+ (parPro && !chiPro && chiInh)
169
183
  @scenarioAttributes[scenarioIdx][attrDef.id] =
170
184
  @scenarioAttributes[parentScenarioIdx][attrDef.id].deep_clone
171
185
  end
@@ -530,10 +544,10 @@ class TaskJuggler
530
544
  rText = ''
531
545
  @project['journal'].currentEntries(query.end, self, 0,
532
546
  query.start).each do |entry|
533
- rText += "== " + entry.headline + " ==\n"
547
+ rText += "=== <nowiki>" + entry.headline + "</nowiki> ===\n"
534
548
  rText += "''Reported on #{entry.date.to_s(query.timeFormat)}'' "
535
549
  if entry.author
536
- rText += "''by #{entry.author.name}''"
550
+ rText += "''by <nowiki>#{entry.author.name}</nowiki>''"
537
551
  end
538
552
  rText += "\n\n"
539
553
  if entry.summary
@@ -553,7 +567,7 @@ class TaskJuggler
553
567
  begin
554
568
  rti = RichText.new(rText, handlers).generateIntermediateFormat
555
569
  rescue RichTextException => msg
556
- $stderr.puts "Error in RichText of rule #{@keyword}\n" +
570
+ $stderr.puts "Error while processing Rich Text\n" +
557
571
  "Line #{msg.lineNo}: #{msg.text}\n" +
558
572
  "#{msg.line}"
559
573
  return nil
@@ -561,7 +575,7 @@ class TaskJuggler
561
575
  # No section numbers, please!
562
576
  rti.sectionNumbers = false
563
577
  # We use a special class to allow CSS formating.
564
- rti.cssClass = 'alertmessage'
578
+ rti.cssClass = 'tj_journal'
565
579
  query.rti = rti
566
580
  end
567
581
 
data/lib/Query.rb CHANGED
@@ -34,12 +34,12 @@ class TaskJuggler
34
34
 
35
35
  attr_accessor :project, :propertyType, :propertyId, :property,
36
36
  :scopePropertyType, :scopePropertyId, :scopeProperty,
37
- :attributeId, :scenarioIdx, :startIdx, :endIdx,
37
+ :attributeId, :scenarioIdx,
38
38
  :timeFormat, :numberFormat, :currencyFormat, :costAccount,
39
39
  :revenueAccount,
40
40
  :loadUnit,
41
41
  :ok, :errorMessage
42
- attr_reader :end, :start
42
+ attr_reader :end, :endIdx, :start, :startIdx
43
43
  attr_writer :sortable, :numerical, :string, :rti
44
44
 
45
45
  # Create a new Query object. The _parameters_ need to be sufficent to
@@ -47,26 +47,66 @@ class TaskJuggler
47
47
  def initialize(parameters = { })
48
48
  ps = %w( project propertyType propertyId property scopePropertyId
49
49
  scopeProperty attributeId scenario scenarioIdx
50
- start end startIdx endIdx
51
50
  loadUnit numberFormat currencyFormat timeFormat
52
51
  costAccount revenueAccount)
53
52
  ps.each do |p|
54
53
  instance_variable_set('@' + p, parameters[p] ? parameters[p] : nil)
55
54
  end
56
55
 
56
+ # instance_variable_set does not call writer functions. So we need to
57
+ # handle @start, @end, @startIdx and @endIdx separately.
58
+ %w( end endIdx start startIdx ).each do |p|
59
+ send(p + '=', parameters[p]) if parameters[p]
60
+ end
61
+
57
62
  reset
58
63
  end
59
64
 
60
- # Reset the @startIdx when a start date is set.
65
+ # We probably need the start and end dates as TjTime and Scoreboard index.
66
+ # We store both, but we need to assure they are always in sync.
67
+
61
68
  def start=(date)
62
- @start = date
63
- @startIdx = nil
69
+ if date.is_a?(TjTime)
70
+ @start = date
71
+ @startIdx = @project.dateToIdx(date, true)
72
+ #elsif date.is_a?(Fixnum)
73
+ # self.startIdx=(date)
74
+ else
75
+ raise "Unsupported type #{date.class}"
76
+ end
77
+ end
78
+
79
+ def startIdx=(idx)
80
+ if idx.is_a?(Fixnum)
81
+ @startIdx = idx
82
+ @start = @project.idxToDate(idx)
83
+ #elsif idx.is_a?(TjTime)
84
+ # self.start=(idx)
85
+ else
86
+ raise "Unsupported type #{idx.class}"
87
+ end
64
88
  end
65
89
 
66
- # Reset the @endIdx when an end date is set.
67
90
  def end=(date)
68
- @end = date
69
- @endIdx = nil
91
+ if date.is_a?(TjTime)
92
+ @end = date
93
+ @endIdx = @project.dateToIdx(date, true)
94
+ #elsif date.is_a?(Fixnum)
95
+ # self.endIdx=(date)
96
+ else
97
+ raise "Unsupported type #{date.class}"
98
+ end
99
+ end
100
+
101
+ def endIdx=(idx)
102
+ if idx.is_a?(Fixnum)
103
+ @endIdx = idx
104
+ @end = @project.idxToDate(idx)
105
+ #elsif idx.is_a?(TjTime)
106
+ # self.end=(idx)
107
+ else
108
+ raise "Unsupported type #{idx.class}"
109
+ end
70
110
  end
71
111
 
72
112
  # This method tries to resolve the query and return a result. In case it
@@ -114,8 +154,6 @@ class TaskJuggler
114
154
  raise "Query cannot resolve scenario '#{@scenario}'"
115
155
  end
116
156
  end
117
- @startIdx = @project.dateToIdx(@start, true) if @startIdx.nil? && @start
118
- @endIdx = @project.dateToIdx(@end, true) - 1 if @endIdx.nil? && @end
119
157
 
120
158
  queryMethodName = 'query_' + @attributeId
121
159
  # First we check for non-scenario-specific query functions.
@@ -128,7 +166,7 @@ class TaskJuggler
128
166
  else
129
167
  # The result is a BaseAttribute
130
168
  unless (@attr = @property.getAttribute(@attributeId, @scenarioIdx))
131
- errorMessage = "Unknown attribute #{@attributeId} queried"
169
+ @errorMessage = "Unknown attribute #{@attributeId} queried"
132
170
  return @ok = false
133
171
  end
134
172
  end
@@ -289,7 +327,7 @@ class TaskJuggler
289
327
  # result data.
290
328
  def reset
291
329
  @attr = @numerical = @sortable = @string = @rti = nil
292
- @ok = nil
330
+ @ok = true
293
331
  @errorMessage = nil
294
332
  end
295
333
 
data/lib/RTFReport.rb CHANGED
@@ -34,11 +34,11 @@ class TaskJuggler
34
34
  if args.nil? || (id = args['id']).nil?
35
35
  error('rtp_report_id',
36
36
  "Argument 'id' missing to specify the report to be used.")
37
- nil
37
+ return nil
38
38
  end
39
39
  unless (report = @project.report(id))
40
40
  error('rtp_report_unknown_id', "Unknown report #{id}")
41
- nil
41
+ return nil
42
42
  end
43
43
 
44
44
  # Save the old report context record