taskjuggler 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (415) hide show
  1. data/CHANGELOG +119 -0
  2. data/benchmarks/allocatedSlots.tjp +1602 -0
  3. data/benchmarks/booking.tjp +40 -30
  4. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/css/tjmanual.css +0 -0
  5. data/{test/TestSuite/Scheduler/Correct → benchmarks}/css/tjreport.css +1 -0
  6. data/benchmarks/gantt.tjp +57 -0
  7. data/benchmarks/htmltaskreport.tjp +26 -1
  8. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/details.png +0 -0
  9. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-green.png +0 -0
  10. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-red.png +0 -0
  11. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-yellow.png +0 -0
  12. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resource.png +0 -0
  13. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resourcegroup.png +0 -0
  14. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/task.png +0 -0
  15. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/taskgroup.png +0 -0
  16. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-down.png +0 -0
  17. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-flat.png +0 -0
  18. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-up.png +0 -0
  19. data/benchmarks/profile.clt +36082 -0
  20. data/benchmarks/profile.html +58182 -0
  21. data/benchmarks/runbench.rb +6 -0
  22. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/scripts/wz_tooltip.js +0 -0
  23. data/doc/AppConfig.html +85 -37
  24. data/doc/Arguments.html +11 -1
  25. data/doc/CHANGELOG.html +131 -2
  26. data/doc/COPYING.html +11 -1
  27. data/doc/Object.html +12 -3
  28. data/doc/README.html +11 -1
  29. data/doc/RuntimeConfig.html +11 -1
  30. data/doc/String.html +11 -1
  31. data/doc/StringIO.html +11 -1
  32. data/doc/TaskJuggler.html +250 -219
  33. data/doc/TaskJuggler/Account.html +11 -1
  34. data/doc/TaskJuggler/AccountAttribute.html +11 -1
  35. data/doc/TaskJuggler/AccountScenario.html +11 -1
  36. data/doc/TaskJuggler/Allocation.html +11 -1
  37. data/doc/TaskJuggler/AllocationAttribute.html +11 -1
  38. data/doc/TaskJuggler/AttributeBase.html +11 -1
  39. data/doc/TaskJuggler/AttributeDefinition.html +11 -1
  40. data/doc/TaskJuggler/BatchProcessor.html +11 -1
  41. data/doc/TaskJuggler/Booking.html +11 -1
  42. data/doc/TaskJuggler/BookingListAttribute.html +11 -1
  43. data/doc/TaskJuggler/BooleanAttribute.html +11 -1
  44. data/doc/TaskJuggler/CSVFile.html +12 -2
  45. data/doc/TaskJuggler/CellSettingPattern.html +11 -1
  46. data/doc/TaskJuggler/CellSettingPatternList.html +11 -1
  47. data/doc/TaskJuggler/Charge.html +11 -1
  48. data/doc/TaskJuggler/ChargeListAttribute.html +11 -1
  49. data/doc/TaskJuggler/ChargeSet.html +11 -1
  50. data/doc/TaskJuggler/ChargeSetListAttribute.html +11 -1
  51. data/doc/TaskJuggler/CollisionDetector.html +1063 -0
  52. data/doc/TaskJuggler/ColumnListAttribute.html +11 -1
  53. data/doc/TaskJuggler/ColumnTable.html +11 -1
  54. data/doc/TaskJuggler/Daemon.html +11 -1
  55. data/doc/TaskJuggler/{OnShiftCache.html → DataCache.html} +127 -139
  56. data/doc/TaskJuggler/DataCacheEntry.html +711 -0
  57. data/doc/TaskJuggler/DateAttribute.html +11 -1
  58. data/doc/TaskJuggler/DefinitionListAttribute.html +11 -1
  59. data/doc/TaskJuggler/DependencyListAttribute.html +11 -1
  60. data/doc/TaskJuggler/DurationAttribute.html +16 -5
  61. data/doc/TaskJuggler/FileList.html +11 -1
  62. data/doc/TaskJuggler/FileRecord.html +11 -1
  63. data/doc/TaskJuggler/FixnumAttribute.html +19 -9
  64. data/doc/TaskJuggler/FlagListAttribute.html +29 -19
  65. data/doc/TaskJuggler/FloatAttribute.html +23 -13
  66. data/doc/TaskJuggler/FormatListAttribute.html +19 -9
  67. data/doc/TaskJuggler/GanttChart.html +94 -133
  68. data/doc/TaskJuggler/GanttContainer.html +11 -1
  69. data/doc/TaskJuggler/GanttHeader.html +11 -1
  70. data/doc/TaskJuggler/GanttHeaderScaleItem.html +11 -1
  71. data/doc/TaskJuggler/GanttLine.html +11 -1
  72. data/doc/TaskJuggler/GanttLoadStack.html +11 -1
  73. data/doc/TaskJuggler/GanttMilestone.html +11 -1
  74. data/doc/TaskJuggler/GanttRouter.html +247 -596
  75. data/doc/TaskJuggler/GanttTaskBar.html +11 -1
  76. data/doc/TaskJuggler/HTMLDocument.html +11 -1
  77. data/doc/TaskJuggler/HTMLGraphics.html +11 -1
  78. data/doc/TaskJuggler/Interval.html +11 -1
  79. data/doc/TaskJuggler/IntervalListAttribute.html +33 -23
  80. data/doc/TaskJuggler/JobInfo.html +11 -1
  81. data/doc/TaskJuggler/Journal.html +11 -1
  82. data/doc/TaskJuggler/JournalEntry.html +11 -1
  83. data/doc/TaskJuggler/JournalEntryList.html +11 -1
  84. data/doc/TaskJuggler/KeywordArray.html +11 -1
  85. data/doc/TaskJuggler/KeywordDocumentation.html +16 -6
  86. data/doc/TaskJuggler/Limits.html +11 -1
  87. data/doc/TaskJuggler/Limits/Limit.html +11 -1
  88. data/doc/TaskJuggler/LimitsAttribute.html +24 -14
  89. data/doc/TaskJuggler/ListAttributeBase.html +11 -1
  90. data/doc/TaskJuggler/Log.html +11 -1
  91. data/doc/TaskJuggler/LogFile.html +11 -1
  92. data/doc/TaskJuggler/LogicalAttribute.html +11 -1
  93. data/doc/TaskJuggler/LogicalExpression.html +11 -1
  94. data/doc/TaskJuggler/LogicalExpressionAttribute.html +19 -9
  95. data/doc/TaskJuggler/LogicalFlag.html +11 -1
  96. data/doc/TaskJuggler/LogicalFunction.html +11 -1
  97. data/doc/TaskJuggler/LogicalOperation.html +11 -1
  98. data/doc/TaskJuggler/Macro.html +11 -1
  99. data/doc/TaskJuggler/MacroTable.html +11 -1
  100. data/doc/TaskJuggler/ManagerResponsibilities.html +11 -1
  101. data/doc/TaskJuggler/ManagerStatusRecord.html +11 -1
  102. data/doc/TaskJuggler/Message.html +11 -1
  103. data/doc/TaskJuggler/MessageHandler.html +11 -1
  104. data/doc/TaskJuggler/Navigator.html +12 -2
  105. data/doc/TaskJuggler/NavigatorElement.html +11 -1
  106. data/doc/TaskJuggler/NikuProject.html +11 -1
  107. data/doc/TaskJuggler/NikuReport.html +11 -1
  108. data/doc/TaskJuggler/NikuResource.html +11 -1
  109. data/doc/TaskJuggler/NodeListAttribute.html +17 -7
  110. data/doc/TaskJuggler/PlaceHolderCell.html +722 -0
  111. data/doc/TaskJuggler/ProcessIntercom.html +11 -1
  112. data/doc/TaskJuggler/ProcessIntercomIface.html +11 -1
  113. data/doc/TaskJuggler/Project.html +587 -500
  114. data/doc/TaskJuggler/ProjectBroker.html +11 -1
  115. data/doc/TaskJuggler/ProjectBrokerIface.html +11 -1
  116. data/doc/TaskJuggler/ProjectFileParser.html +205 -192
  117. data/doc/TaskJuggler/ProjectFileScanner.html +230 -207
  118. data/doc/TaskJuggler/ProjectRecord.html +11 -1
  119. data/doc/TaskJuggler/ProjectServer.html +11 -1
  120. data/doc/TaskJuggler/ProjectServerIface.html +11 -1
  121. data/doc/TaskJuggler/PropertyAttribute.html +19 -9
  122. data/doc/TaskJuggler/PropertyList.html +95 -83
  123. data/doc/TaskJuggler/PropertySet.html +11 -1
  124. data/doc/TaskJuggler/PropertyTreeNode.html +11 -1
  125. data/doc/TaskJuggler/Query.html +234 -232
  126. data/doc/TaskJuggler/RTFHandlers.html +11 -1
  127. data/doc/TaskJuggler/RTFNavigator.html +11 -1
  128. data/doc/TaskJuggler/RTFQuery.html +11 -1
  129. data/doc/TaskJuggler/RTFReport.html +11 -1
  130. data/doc/TaskJuggler/RTFReportLink.html +11 -1
  131. data/doc/TaskJuggler/RTFWithQuerySupport.html +11 -1
  132. data/doc/TaskJuggler/RealFormat.html +12 -2
  133. data/doc/TaskJuggler/RealFormatAttribute.html +15 -5
  134. data/doc/TaskJuggler/ReferenceAttribute.html +38 -28
  135. data/doc/TaskJuggler/Report.html +96 -113
  136. data/doc/TaskJuggler/ReportBase.html +161 -152
  137. data/doc/TaskJuggler/ReportContext.html +11 -1
  138. data/doc/TaskJuggler/ReportServer.html +59 -48
  139. data/doc/TaskJuggler/ReportServerIface.html +51 -41
  140. data/doc/TaskJuggler/ReportServerRecord.html +11 -1
  141. data/doc/TaskJuggler/ReportServlet.html +11 -1
  142. data/doc/TaskJuggler/ReportTable.html +46 -25
  143. data/doc/TaskJuggler/ReportTableCell.html +296 -275
  144. data/doc/TaskJuggler/ReportTableColumn.html +14 -4
  145. data/doc/TaskJuggler/ReportTableLegend.html +11 -1
  146. data/doc/TaskJuggler/ReportTableLine.html +19 -7
  147. data/doc/TaskJuggler/Resource.html +12 -2
  148. data/doc/TaskJuggler/ResourceListAttribute.html +40 -30
  149. data/doc/TaskJuggler/ResourceListRE.html +11 -1
  150. data/doc/TaskJuggler/ResourceScenario.html +708 -565
  151. data/doc/TaskJuggler/RichText.html +54 -36
  152. data/doc/TaskJuggler/RichTextAttribute.html +31 -21
  153. data/doc/TaskJuggler/RichTextDocument.html +11 -1
  154. data/doc/TaskJuggler/RichTextElement.html +11 -1
  155. data/doc/TaskJuggler/RichTextFunctionExample.html +11 -1
  156. data/doc/TaskJuggler/RichTextFunctionHandler.html +11 -1
  157. data/doc/TaskJuggler/RichTextImage.html +11 -1
  158. data/doc/TaskJuggler/RichTextIntermediate.html +81 -71
  159. data/doc/TaskJuggler/RichTextParser.html +88 -33
  160. data/doc/TaskJuggler/RichTextScanner.html +45 -35
  161. data/doc/TaskJuggler/RichTextSnip.html +11 -1
  162. data/doc/TaskJuggler/RichTextSyntaxRules.html +436 -389
  163. data/doc/TaskJuggler/Scenario.html +11 -1
  164. data/doc/TaskJuggler/ScenarioData.html +11 -1
  165. data/doc/TaskJuggler/ScenarioListAttribute.html +23 -13
  166. data/doc/TaskJuggler/Scoreboard.html +92 -73
  167. data/doc/TaskJuggler/SheetHandlerBase.html +11 -1
  168. data/doc/TaskJuggler/SheetReceiver.html +11 -1
  169. data/doc/TaskJuggler/SheetSender.html +11 -1
  170. data/doc/TaskJuggler/Shift.html +11 -1
  171. data/doc/TaskJuggler/ShiftAssignment.html +11 -1
  172. data/doc/TaskJuggler/ShiftAssignments.html +11 -1
  173. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +24 -14
  174. data/doc/TaskJuggler/ShiftScenario.html +11 -1
  175. data/doc/TaskJuggler/SimpleQueryExpander.html +11 -1
  176. data/doc/TaskJuggler/SortListAttribute.html +21 -11
  177. data/doc/TaskJuggler/SourceFileInfo.html +11 -1
  178. data/doc/TaskJuggler/StatusSheetReceiver.html +11 -1
  179. data/doc/TaskJuggler/StatusSheetReport.html +11 -1
  180. data/doc/TaskJuggler/StatusSheetSender.html +112 -11
  181. data/doc/TaskJuggler/StringAttribute.html +23 -13
  182. data/doc/TaskJuggler/SymbolAttribute.html +19 -9
  183. data/doc/TaskJuggler/SyntaxReference.html +80 -71
  184. data/doc/TaskJuggler/TOCEntry.html +11 -1
  185. data/doc/TaskJuggler/TSResourceRecord.html +11 -1
  186. data/doc/TaskJuggler/TSTaskRecord.html +11 -1
  187. data/doc/TaskJuggler/TableColumnDefinition.html +11 -1
  188. data/doc/TaskJuggler/TableOfContents.html +11 -1
  189. data/doc/TaskJuggler/TableReport.html +422 -411
  190. data/doc/TaskJuggler/Task.html +11 -1
  191. data/doc/TaskJuggler/TaskDependency.html +11 -1
  192. data/doc/TaskJuggler/TaskListAttribute.html +33 -23
  193. data/doc/TaskJuggler/TaskListRE.html +11 -1
  194. data/doc/TaskJuggler/TaskScenario.html +2007 -1919
  195. data/doc/TaskJuggler/TextFormatter.html +11 -1
  196. data/doc/TaskJuggler/TextParser.html +421 -612
  197. data/doc/TaskJuggler/TextParser/Pattern.html +410 -211
  198. data/doc/TaskJuggler/TextParser/Rule.html +224 -152
  199. data/doc/TaskJuggler/TextParser/StackElement.html +190 -28
  200. data/doc/TaskJuggler/TextParser/State.html +989 -0
  201. data/doc/TaskJuggler/TextParser/StateTransition.html +782 -0
  202. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +25 -14
  203. data/doc/TaskJuggler/TextParser/TokenDoc.html +11 -1
  204. data/doc/TaskJuggler/TextReport.html +11 -1
  205. data/doc/TaskJuggler/TextScanner.html +285 -273
  206. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +17 -7
  207. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +24 -14
  208. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +11 -1
  209. data/doc/TaskJuggler/TextScanner/StreamHandle.html +64 -52
  210. data/doc/TaskJuggler/TimeSheet.html +11 -1
  211. data/doc/TaskJuggler/TimeSheetReceiver.html +11 -1
  212. data/doc/TaskJuggler/TimeSheetRecord.html +11 -1
  213. data/doc/TaskJuggler/TimeSheetReport.html +11 -1
  214. data/doc/TaskJuggler/TimeSheetSender.html +11 -1
  215. data/doc/TaskJuggler/TimeSheetSummary.html +11 -1
  216. data/doc/TaskJuggler/TimeSheets.html +11 -1
  217. data/doc/TaskJuggler/Tj3AppBase.html +11 -1
  218. data/doc/TaskJuggler/Tj3Client.html +11 -1
  219. data/doc/TaskJuggler/Tj3Daemon.html +11 -1
  220. data/doc/TaskJuggler/Tj3SheetAppBase.html +11 -1
  221. data/doc/TaskJuggler/Tj3SsReceiver.html +11 -1
  222. data/doc/TaskJuggler/Tj3SsSender.html +11 -1
  223. data/doc/TaskJuggler/Tj3TsReceiver.html +11 -1
  224. data/doc/TaskJuggler/Tj3TsSender.html +11 -1
  225. data/doc/TaskJuggler/Tj3TsSummary.html +11 -1
  226. data/doc/TaskJuggler/TjException.html +11 -1
  227. data/doc/TaskJuggler/TjTime.html +474 -324
  228. data/doc/TaskJuggler/TjpExample.html +11 -1
  229. data/doc/TaskJuggler/TjpExportRE.html +11 -1
  230. data/doc/TaskJuggler/TjpSyntaxRules.html +3731 -3662
  231. data/doc/TaskJuggler/URLParameter.html +11 -1
  232. data/doc/TaskJuggler/UserManual.html +11 -1
  233. data/doc/TaskJuggler/VimSyntax.html +11 -1
  234. data/doc/TaskJuggler/WebServer.html +11 -1
  235. data/doc/TaskJuggler/WorkingHours.html +295 -221
  236. data/doc/TaskJuggler/WorkingHoursAttribute.html +11 -1
  237. data/doc/TaskJuggler/XMLBlob.html +11 -1
  238. data/doc/TaskJuggler/XMLComment.html +11 -1
  239. data/doc/TaskJuggler/XMLDocument.html +11 -1
  240. data/doc/TaskJuggler/XMLElement.html +11 -1
  241. data/doc/TaskJuggler/XMLNamedText.html +11 -1
  242. data/doc/TaskJuggler/XMLText.html +11 -1
  243. data/doc/index.html +694 -624
  244. data/doc/lib/AppConfig_rb.html +1 -1
  245. data/doc/lib/Attributes_rb.html +1 -1
  246. data/doc/lib/Booking_rb.html +1 -1
  247. data/doc/lib/DataCache_rb.html +69 -0
  248. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  249. data/doc/lib/ProjectFileParser_rb.html +1 -1
  250. data/doc/lib/ProjectFileScanner_rb.html +1 -1
  251. data/doc/lib/Project_rb.html +1 -1
  252. data/doc/lib/PropertyList_rb.html +1 -1
  253. data/doc/lib/Query_rb.html +1 -1
  254. data/doc/lib/RealFormat_rb.html +1 -1
  255. data/doc/lib/ResourceScenario_rb.html +1 -1
  256. data/doc/lib/Resource_rb.html +1 -1
  257. data/doc/lib/RichTextParser_rb.html +1 -1
  258. data/doc/lib/RichTextScanner_rb.html +1 -1
  259. data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
  260. data/doc/lib/RichText_rb.html +1 -1
  261. data/doc/lib/Scoreboard_rb.html +1 -1
  262. data/doc/lib/StatusSheetSender_rb.html +1 -1
  263. data/doc/lib/SyntaxReference_rb.html +1 -1
  264. data/doc/lib/TaskJuggler_rb.html +1 -1
  265. data/doc/lib/TaskScenario_rb.html +3 -1
  266. data/doc/lib/TextParser/Pattern_rb.html +3 -1
  267. data/doc/lib/TextParser/Rule_rb.html +3 -1
  268. data/doc/lib/TextParser/StackElement_rb.html +3 -1
  269. data/doc/lib/TextParser/State_rb.html +65 -0
  270. data/doc/lib/TextParser_rb.html +1 -1
  271. data/doc/lib/TextScanner_rb.html +1 -1
  272. data/doc/lib/Tj3Config_rb.html +1 -1
  273. data/doc/lib/TjTime_rb.html +1 -1
  274. data/doc/lib/TjpSyntaxRules_rb.html +1 -1
  275. data/doc/lib/WorkingHours_rb.html +3 -1
  276. data/doc/lib/daemon/ReportServer_rb.html +1 -1
  277. data/doc/lib/reports/CSVFile_rb.html +1 -1
  278. data/doc/lib/reports/CollisionDetector_rb.html +67 -0
  279. data/doc/lib/reports/GanttChart_rb.html +1 -1
  280. data/doc/lib/reports/GanttRouter_rb.html +3 -1
  281. data/doc/lib/reports/Navigator_rb.html +1 -1
  282. data/doc/lib/reports/ReportBase_rb.html +1 -1
  283. data/doc/lib/reports/ReportTableCell_rb.html +1 -1
  284. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  285. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  286. data/doc/lib/reports/ReportTable_rb.html +1 -1
  287. data/doc/lib/reports/Report_rb.html +1 -1
  288. data/doc/lib/reports/TableReport_rb.html +1 -1
  289. data/doc/lib/taskjuggler3_rb.html +1 -1
  290. data/examples/tutorial.tjp +1 -2
  291. data/lib/AppConfig.rb +10 -4
  292. data/lib/Attributes.rb +4 -4
  293. data/lib/DataCache.rb +124 -0
  294. data/lib/KeywordDocumentation.rb +5 -5
  295. data/lib/Project.rb +54 -10
  296. data/lib/ProjectFileParser.rb +10 -9
  297. data/lib/ProjectFileScanner.rb +38 -25
  298. data/lib/PropertyList.rb +6 -4
  299. data/lib/Query.rb +0 -8
  300. data/lib/RealFormat.rb +1 -1
  301. data/lib/Resource.rb +1 -1
  302. data/lib/ResourceScenario.rb +96 -31
  303. data/lib/RichText.rb +17 -5
  304. data/lib/RichTextParser.rb +22 -9
  305. data/lib/RichTextScanner.rb +34 -34
  306. data/lib/RichTextSyntaxRules.rb +41 -36
  307. data/lib/Scoreboard.rb +16 -7
  308. data/lib/StatusSheetSender.rb +63 -0
  309. data/lib/SyntaxReference.rb +9 -10
  310. data/lib/TaskJuggler.rb +28 -4
  311. data/lib/TaskScenario.rb +66 -19
  312. data/lib/TextParser.rb +219 -384
  313. data/lib/TextParser/Pattern.rb +168 -49
  314. data/lib/TextParser/Rule.rb +33 -17
  315. data/lib/TextParser/StackElement.rb +42 -2
  316. data/lib/TextParser/State.rb +175 -0
  317. data/lib/TextScanner.rb +19 -15
  318. data/lib/Tj3Config.rb +1 -1
  319. data/lib/TjTime.rb +111 -3
  320. data/lib/TjpSyntaxRules.rb +122 -66
  321. data/lib/WorkingHours.rb +91 -186
  322. data/lib/daemon/ReportServer.rb +3 -2
  323. data/lib/reports/CSVFile.rb +1 -1
  324. data/lib/reports/CollisionDetector.rb +177 -0
  325. data/lib/reports/GanttChart.rb +25 -41
  326. data/lib/reports/GanttRouter.rb +104 -233
  327. data/lib/reports/Navigator.rb +1 -1
  328. data/lib/reports/Report.rb +9 -33
  329. data/lib/reports/ReportBase.rb +0 -1
  330. data/lib/reports/ReportTable.rb +19 -8
  331. data/lib/reports/ReportTableCell.rb +61 -25
  332. data/lib/reports/ReportTableColumn.rb +2 -2
  333. data/lib/reports/ReportTableLine.rb +4 -2
  334. data/lib/reports/TableReport.rb +1 -0
  335. data/lib/taskjuggler3.rb +0 -1
  336. data/manual/Installation +7 -3
  337. data/manual/Intro +12 -10
  338. data/manual/The_TaskJuggler_Syntax +4 -4
  339. data/test/TestSuite/CSV-Reports/celltext-Reference.csv +14 -14
  340. data/test/TestSuite/CSV-Reports/genrefs +1 -1
  341. data/test/TestSuite/CSV-Reports/resourcereport-Reference.csv +4 -4
  342. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks-Reference.csv +22 -22
  343. data/test/TestSuite/CSV-Reports/sortByTree-Reference.csv +14 -14
  344. data/test/TestSuite/CSV-Reports/sortBy_duration.down-Reference.csv +14 -14
  345. data/test/TestSuite/CSV-Reports/sortBy_effort.up-Reference.csv +14 -14
  346. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down-Reference.csv +14 -14
  347. data/test/TestSuite/CSV-Reports/taskreport-Reference.csv +14 -14
  348. data/test/TestSuite/CSV-Reports/taskreport_with_resources-Reference.csv +32 -24
  349. data/test/TestSuite/CSV-Reports/weekly-Reference.csv +13 -0
  350. data/test/TestSuite/CSV-Reports/weekly.tjp +9 -0
  351. data/test/TestSuite/HTML-Reports/css/tjreport.css +7 -2
  352. data/test/TestSuite/HTML-Reports/depArrows.html +839 -830
  353. data/test/TestSuite/HTML-Reports/depArrows.tjp +12 -12
  354. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  355. data/test/TestSuite/ReportGenerator/Errors/no_report_defined.tjp +7 -0
  356. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +1 -1
  357. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/missing-reports +2 -0
  358. data/test/TestSuite/StatusSheets/run +2 -0
  359. data/test/TestSuite/Syntax/Correct/Booking.tjp +13 -5
  360. data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +21 -0
  361. data/test/TestSuite/Syntax/Correct/RollupResource.tjp +21 -0
  362. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +1 -1
  363. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  364. data/test/TestSuite/Syntax/Errors/include_before_project.tjp +2 -0
  365. data/test/TestSuite/Syntax/Errors/no_reduce.tjp +6 -0
  366. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  367. data/test/TestSuite/TimeSheets/run +1 -1
  368. data/test/test_CSV-Reports.rb +2 -4
  369. data/test/test_CollisionDetector.rb +85 -0
  370. data/test/test_Project.rb +2 -2
  371. data/test/test_ProjectFileScanner.rb +73 -31
  372. data/test/test_Query.rb +2 -2
  373. data/test/test_ReportGenerator.rb +1 -1
  374. data/test/test_RichText.rb +4 -4
  375. data/test/test_WorkingHours.rb +150 -11
  376. metadata +75 -67
  377. data/test/TestSuite/ReportGenerator/Errors/css/tjreport.css +0 -407
  378. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +0 -26
  379. data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -3210
  380. data/test/TestSuite/Scheduler/Correct/Container.html +0 -349
  381. data/test/TestSuite/Scheduler/Correct/Limits.html +0 -4964
  382. data/test/TestSuite/Scheduler/Correct/Shift.html +0 -1719
  383. data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
  384. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -66
  385. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  386. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  387. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  388. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  389. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  390. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  391. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  392. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  393. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  394. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  395. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  396. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
  397. data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +0 -66
  398. data/test/TestSuite/Scheduler/Errors/css/tjreport.css +0 -407
  399. data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
  400. data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
  401. data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
  402. data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
  403. data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
  404. data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
  405. data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
  406. data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
  407. data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
  408. data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
  409. data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
  410. data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +0 -1301
  411. data/test/TestSuite/StatusSheets/resrep.tji +0 -7
  412. data/test/TestSuite/StatusSheets/tj3d.log +0 -312
  413. data/test/TestSuite/Syntax/Correct/Managers.html +0 -263
  414. data/test/TestSuite/TimeSheets/acceptable_intervals +0 -1
  415. data/test/TestSuite/TimeSheets/statussheets.log +0 -1
@@ -198,7 +198,7 @@ class TaskJuggler
198
198
  # _url2_.
199
199
  def normalizeURL(url1, url2)
200
200
  cut = 0
201
- 0.upto(url1.length - 1) do |i|
201
+ url1.length.times do |i|
202
202
  return url1[cut, url1.length - cut] if url1[i] != url2[i]
203
203
  cut = i + 1 if url1[i] == ?/
204
204
  end
@@ -141,7 +141,7 @@ class TaskJuggler
141
141
  cssFileName = (auxSrcDir ? auxSrcDir + '/tjreport.css' : '')
142
142
  # Raise an error if we haven't found the data directory
143
143
  if auxSrcDir.nil? || !File.exists?(cssFileName)
144
- dataDirError(cssFileName)
144
+ dataDirError(cssFileName, AppConfig.dataSearchDirs('data/css'))
145
145
  end
146
146
  cssFile = IO.read(cssFileName)
147
147
  if cssFile.empty?
@@ -214,35 +214,6 @@ EOT
214
214
  # CSV format can only handle the first element.
215
215
  return nil unless (csv = @content.to_csv)
216
216
 
217
- # Expand nested tables into the outer table.
218
- columnIdx = 0
219
- while columnIdx < csv[0].length do
220
- if csv[0][columnIdx].is_a?(Array)
221
- # We've found a nested table.
222
- nestedTable = csv[0][columnIdx]
223
- # The nested table must have exactly as many lines as the outer table.
224
- if csv.length != nestedTable.length
225
- raise "Table size mismatch"
226
- end
227
- # Insert the nested table into the lines of the outer table.
228
- csv.each do |line|
229
- lineIdx = csv.index(line)
230
- if lineIdx == 0
231
- # The header cell can be reused.
232
- line[columnIdx] = nestedTable[lineIdx]
233
- else
234
- # For normal lines we have no cells for the table. Just inject
235
- # them.
236
- line.insert(columnIdx, nestedTable[lineIdx])
237
- end
238
- # Make sure there are no more Arrays nested into the line.
239
- line.flatten!
240
- end
241
- else
242
- columnIdx += 1
243
- end
244
- end
245
-
246
217
  # Use the CSVFile class to write the Array of Arrays to a colon
247
218
  # separated file. Write to $stdout if the filename was set to '.'.
248
219
  begin
@@ -300,7 +271,9 @@ EOT
300
271
  # Find the data directory that came with the TaskJuggler installation.
301
272
  auxSrcDir = AppConfig.dataDirs("data/#{dirName}")[0].untaint
302
273
  # Raise an error if we haven't found the data directory
303
- dataDirError(dirName) if auxSrcDir.nil? || !File.exists?(auxSrcDir)
274
+ if auxSrcDir.nil? || !File.exists?(auxSrcDir)
275
+ dataDirError(dirName, AppConfig.dataSearchDirs("data/#{dirName}"))
276
+ end
304
277
  # Don't copy directory if all files are up-to-date.
305
278
  return if directoryUpToDate?(auxSrcDir, auxDstDir + dirName)
306
279
 
@@ -322,13 +295,16 @@ EOT
322
295
  true
323
296
  end
324
297
 
325
- def dataDirError(dirName)
298
+ def dataDirError(dirName, dirs)
326
299
  error('data_dir_error', <<"EOT"
327
300
  Cannot find the #{dirName} directory. This is usually the result of an
328
301
  improper TaskJuggler installation. If you know the directory, you can use the
329
302
  TASKJUGGLER_DATA_PATH environment variable to specify the location. The
330
303
  variable should be set to the path without the /data at the end. Multiple
331
- directories must be separated by colons.
304
+ directories must be separated by colons. The following directories have been
305
+ tried:
306
+
307
+ #{dirs.join("\n")}
332
308
  EOT
333
309
  )
334
310
  end
@@ -96,7 +96,6 @@ class TaskJuggler
96
96
  delete = true
97
97
  a('scenarios').each do |scenarioIdx|
98
98
  if task.hasResourceAllocated?(scenarioIdx, iv, resource)
99
- #if resource.allocated?(scenarioIdx, iv, task)
100
99
  delete = false
101
100
  break;
102
101
  end
@@ -131,16 +131,27 @@ class TaskJuggler
131
131
 
132
132
  # Convert the intermediate representation into an Array of Arrays. _csv_ is
133
133
  # the destination Array of Arrays. It may contain columns already.
134
- def to_csv(csv = nil)
135
- csv = [ [ ] ] unless csv
136
- @columns.each { |col| col.to_csv(csv) }
134
+ def to_csv(csv = [[ ]], startColumn = 0)
135
+ # Generate the header line.
136
+ columnIdx = startColumn
137
+ @columns.each do |col|
138
+ columnIdx += col.to_csv(csv, columnIdx)
139
+ end
137
140
 
138
- @lines.each do |line|
139
- # Insert a new Array for each line.
140
- csv << []
141
- line.to_csv(csv)
141
+ if @embedded
142
+ columnIdx - startColumn
143
+ else
144
+ # Content of embedded tables is inserted when generating the
145
+ # respective Line.
146
+ lineIdx = 1
147
+ @lines.each do |line|
148
+ # Insert a new Array for each line.
149
+ csv[lineIdx] = []
150
+ line.to_csv(csv, startColumn, lineIdx)
151
+ lineIdx += 1
152
+ end
153
+ csv
142
154
  end
143
- csv
144
155
  end
145
156
 
146
157
  private
@@ -35,6 +35,7 @@ class TaskJuggler
35
35
  @line = line
36
36
  @line.addCell(self) if line
37
37
 
38
+ # Specifies whether this is a header cell or not.
38
39
  @headerCell = headerCell
39
40
  # A copy of a Query object that is needed to access project data via the
40
41
  # query function.
@@ -49,6 +50,7 @@ class TaskJuggler
49
50
  @showTooltipHint = true
50
51
  # The original data of the cell content (optional, nil if not provided)
51
52
  @data = nil
53
+ # Determines the background color of the cell.
52
54
  @category = nil
53
55
  @hidden = false
54
56
  # How to horizontally align the cell
@@ -139,35 +141,43 @@ class TaskJuggler
139
141
  end
140
142
 
141
143
  # Add the text content of the cell to an Array of Arrays form of the table.
142
- def to_csv(csv)
144
+ def to_csv(csv, columnIdx, lineIdx)
143
145
  # We only support left indentation in CSV files as the spaces for right
144
146
  # indentation will be disregarded by most applications.
145
147
  indent = @indent && @alignment == :left ? ' ' * @indent : ''
146
- cell =
147
- if @special
148
- @special.to_csv
149
- indent = nil
150
- elsif @data && @data.is_a?(String)
151
- @data
152
- elsif @text
153
- if @text.respond_to?('functionHandler')
154
- @text.setQuery(@query)
155
- end
156
- str = @text.to_s
157
- # Remove any trailing line breaks. These don't really make much
158
- # sense in CSV files.
159
- while str[-1] == ?\n
160
- str.chomp!
148
+ columns = 1
149
+ if @special
150
+ # This is for nested tables. They will be inserted as whole columns
151
+ # in the existing table.
152
+ csv[lineIdx][columnIdx] = nil
153
+ columns = @special.to_csv(csv, columnIdx)
154
+ else
155
+ cell =
156
+ if @data && @data.is_a?(String)
157
+ @data
158
+ elsif @text
159
+ if @text.respond_to?('functionHandler')
160
+ @text.setQuery(@query)
161
+ end
162
+ str = @text.to_s
163
+ # Remove any trailing line breaks. These don't really make much
164
+ # sense in CSV files.
165
+ while str[-1] == ?\n
166
+ str.chomp!
167
+ end
168
+ str
161
169
  end
162
- str
163
- end
164
170
 
165
- # Try to convert numbers and other types to their native Ruby type if
166
- # they are supported by CSVFile.
167
- native = CSVFile.strToNative(cell)
171
+ # Try to convert numbers and other types to their native Ruby type if
172
+ # they are supported by CSVFile.
173
+ native = CSVFile.strToNative(cell)
168
174
 
169
- # Only for String objects, we add the indentation.
170
- csv[-1] << (native.is_a?(String) ? indent + native : native)
175
+ # Only for String objects, we add the indentation.
176
+ csv[lineIdx][columnIdx] = (native.is_a?(String) ? indent + native :
177
+ native)
178
+ end
179
+
180
+ return columns
171
181
  end
172
182
 
173
183
  private
@@ -260,10 +270,11 @@ class TaskJuggler
260
270
 
261
271
  shortText, singleLine = shortVersion(textAsString)
262
272
 
263
- if (@line && @line.table.equiLines && (!singleLine || @width )) ||
264
- !@category
273
+ if (@line && @line.table.equiLines && (!singleLine || @width )) &&
274
+ !@headerCell
265
275
  # The cell is size-limited. We only put a shortened plain-text version
266
276
  # in the cell and provide the full content via a tooltip.
277
+ # Header cells are never shortened.
267
278
  tooltip = @text if shortText != textAsString
268
279
  td << XMLText.new(shortText)
269
280
  else
@@ -322,5 +333,30 @@ class TaskJuggler
322
333
 
323
334
  end
324
335
 
336
+ # This class is used to model cells that are just placeholders for a line of
337
+ # an embedded ReportTable.
338
+ class PlaceHolderCell
339
+
340
+ # Create a new placeholder cell. _line_ is the line that this cell belongs
341
+ # to. _embeddedLine_ is the ReportTableLine that is embedded in this cell.
342
+ def initialize(line, embeddedLine)
343
+ @line = line
344
+ @line.addCell(self) if line
345
+ @embeddedLine = embeddedLine
346
+ end
347
+
348
+ # Add the current cell to the _csv_ CSV Arrays. _columnIdx_ is the start
349
+ # column in the _csv_. _lineIdx_ is the index of the current line. The
350
+ # return value is the number of added cells.
351
+ def to_csv(csv, columnIdx, lineIdx)
352
+ @embeddedLine.to_csv(csv, columnIdx, lineIdx)
353
+ end
354
+
355
+ def to_html
356
+ nil
357
+ end
358
+
359
+ end
360
+
325
361
  end
326
362
 
@@ -71,9 +71,9 @@ class TaskJuggler
71
71
  # Put the abstract representation into an Array. _csv_ is an Array of Arrays
72
72
  # of Strings. We have an Array with Strings for every cell. The outer Array
73
73
  # holds the Arrays representing the lines.
74
- def to_csv(csv)
74
+ def to_csv(csv, startColumn)
75
75
  # For CSV reports we can only include the first header line.
76
- @cell1.to_csv(csv)
76
+ @cell1.to_csv(csv, startColumn, 0)
77
77
  end
78
78
 
79
79
  end
@@ -83,10 +83,12 @@ class TaskJuggler
83
83
 
84
84
  # Convert the intermediate format into an Array of values. One entry for
85
85
  # every column cell of this line.
86
- def to_csv(csv)
86
+ def to_csv(csv, startColumn, lineIdx)
87
+ columnIdx = startColumn
87
88
  @cells.each do |cell|
88
- cell.to_csv(csv)
89
+ columnIdx += cell.to_csv(csv, columnIdx, lineIdx)
89
90
  end
91
+ columnIdx - startColumn
90
92
  end
91
93
 
92
94
  end
@@ -581,6 +581,7 @@ class TaskJuggler
581
581
  tcLine = ReportTableLine.new(columnDef.column.cell1.special,
582
582
  line.property, line.scopeLine)
583
583
 
584
+ PlaceHolderCell.new(line, tcLine)
584
585
  # Depending on the property type we use different generator functions.
585
586
  if property.is_a?(Task)
586
587
  genCalChartTaskCell(query, tcLine, columnDef, start, sameTimeNextFunc)
data/lib/taskjuggler3.rb CHANGED
@@ -151,7 +151,6 @@ def main
151
151
  exit 0 if @noReports
152
152
 
153
153
  exit 1 if !tj.generateReports(@outputDir) || tj.errors > 0
154
-
155
154
  end
156
155
 
157
156
  main()
data/manual/Installation CHANGED
@@ -21,8 +21,12 @@ have the minimum required version installed.
21
21
  runtime environment to run it. This can be downloaded from
22
22
  [http://www.ruby-lang.org/en/downloads/ here]. Most Linux
23
23
  distributions usually have Ruby already included. So does MacOS X
24
- Leopard. For Windows, there is a one-click installer available.
25
- TaskJuggler currently needs at least Ruby version 1.8.6.
24
+ Leopard. For Windows, there is a one-click installer available. The
25
+ recommended Ruby version to make full use of TaskJuggler is 1.9.2.
26
+ Ruby 1.9.1 contains some bugs that prevent the multi-core support to
27
+ work. For users that are not interested in multi-core support, the web
28
+ server, the time sheet infrastructure and daemon Ruby 1.8.7 is still
29
+ ok to use.
26
30
 
27
31
  * '''RubyGems:''' If it did not come with your OS or the Ruby
28
32
  installation, see [http://docs.rubygems.org here] how to get and
@@ -45,7 +49,7 @@ or command window:
45
49
  gem install taskjuggler
46
50
 
47
51
  This will download and install the latest version from the
48
- [http://gemcutter.org/ Gemcutter] site.
52
+ [http://rubygems.org/gems/taskjuggler RubyGems.org] site.
49
53
 
50
54
  ==== The manual way ====
51
55
 
data/manual/Intro CHANGED
@@ -34,11 +34,11 @@ will become a companion you don't want to miss anymore.
34
34
  === About TaskJuggler III ===
35
35
 
36
36
  TaskJuggler III is the completely re-implemented version of the TaskJuggler
37
- 2.x series. It is currently still in the development stage. It
38
- already is mostly stable and feature complete, but not yet recommended
39
- for any serious work. The code base is still in active development
40
- and the quality and reliability may change daily. You are welcome to try
41
- it and play with it, but expect it to fail.
37
+ 2.x series. We have not yet released a stable version. It already is
38
+ mostly stable and each official release is installed by more than a
39
+ 1000 users. The code base is still in active development and the
40
+ quality and reliability may change daily. You are welcome to try it
41
+ and play with it, but be sure to independently check all results.
42
42
 
43
43
  TaskJuggler is a commandline tool that you use from a
44
44
  [http://en.wikipedia.org/wiki/Shell_(computing) shell]. This does not
@@ -84,22 +84,24 @@ License].
84
84
 
85
85
  === Features and Highlights ===
86
86
 
87
- * Manages tasks, resources and costs in one package
87
+ * Manages tasks, resources, costs and revenue in one package
88
88
  * Automatic resource leveling and tasks conflict resolution
89
89
  * Flexible working hours and vacation handling
90
90
  * Multiple timezone support
91
91
  * Support for shift working
92
92
  * Project tracking and status reporting
93
+ * Server based time sheet system for status and actual collection
93
94
  * Unlimited number of scenarios (baselines) of same project for what-if
94
95
  analysis
95
96
  * CSV data export for exchange with popular office software
97
+ * Support for profit/loss analysis
98
+ * Built-in web server for dynamically generated reports
96
99
  * Project breakdown and management team support
97
100
  * Powerful and flexible filtering functions to provide the right
98
101
  amount of detail to the right audience
99
- * Tasks may have initial costs, finishing costs and run rates
100
- * Resources may have running costs
101
- * Support for profit/loss analysis
102
- * Powerful project description syntax with macro support
102
+ * Project description syntax with macro support
103
+ * Detailed reference manual
104
+ * Support for project management teams and revision control
103
105
 
104
106
  === TaskJuggler on the Web ===
105
107
 
@@ -110,8 +110,8 @@ provided in the project header.
110
110
  * ''''now'''' The current date. If the user does not provide a date
111
111
  with the [[now]] keyword, the moment of the processing of the file
112
112
  will be inserted. Keep in mind that this will change every time you
113
- process your project.
114
- * ''''today'''' Similar to ''''now'''' but formatted according to
115
- the [[timeformat]] when the [[now]] attribute was used. The current
116
- setting of [[timeformat]] has no impact on the expansion of the macro.
113
+ process your project. The current setting of [[timeformat]] has no
114
+ impact on the expansion of the macro.
115
+ * ''''today'''' Identical to ''''now'''' but formatted according to
116
+ the [[timeformat]] setting of the current context.
117
117
 
@@ -1,14 +1,14 @@
1
- WBS;Name
2
- 1;Plan Work (plan)
3
- 1.1; Plan A (plan.plan_a)
4
- 1.2; Plan B (plan.plan_b)
5
- 1.3; Plan C (plan.plan_c)
6
- 2;Execute Work (execute)
7
- 2.1; Step 1 (execute.ex1)
8
- 2.2; Step 2 (execute.ex2)
9
- 2.2.1; Step 2.1 (execute.ex2.ex2_1)
10
- 2.2.2; Step 2.2 (execute.ex2.ex2_2)
11
- 2.3; Milestone 1 (execute.ms1)
12
- 2.4; Step 3 (execute.ex3)
13
- 2.5; Step 4 (execute.ex4)
14
- 3;Check Work (check)
1
+ "WBS";"Name"
2
+ 1;"Plan Work (plan)"
3
+ 1.1;" Plan A (plan.plan_a)"
4
+ 1.2;" Plan B (plan.plan_b)"
5
+ 1.3;" Plan C (plan.plan_c)"
6
+ 2;"Execute Work (execute)"
7
+ 2.1;" Step 1 (execute.ex1)"
8
+ 2.2;" Step 2 (execute.ex2)"
9
+ "2.2.1";" Step 2.1 (execute.ex2.ex2_1)"
10
+ "2.2.2";" Step 2.2 (execute.ex2.ex2_2)"
11
+ 2.4;" Step 3 (execute.ex3)"
12
+ 2.5;" Step 4 (execute.ex4)"
13
+ 2.3;" Milestone 1 (execute.ms1)"
14
+ 3;"Check Work (check)"
@@ -2,5 +2,5 @@
2
2
 
3
3
  for f in *.tjp ; do
4
4
  basename=`echo $f | sed 's/.tjp//g'`
5
- tj3 $f > $basename-Reference.csv
5
+ tj3 --silent $f > $basename-Reference.csv
6
6
  done
@@ -1,4 +1,4 @@
1
- WBS;Name;Effort;2007-12-10-00:00:00;2007-12-17-00:00:00;2007-12-24-00:00:00;2007-12-31-00:00:00;2008-01-07-00:00:00;2008-01-14-00:00:00;2008-01-21-00:00:00;2008-01-28-00:00:00;2008-02-04-00:00:00;2008-02-11-00:00:00;2008-02-18-00:00:00;2008-02-25-00:00:00;2008-03-03-00:00:00;2008-03-10-00:00:00
2
- 1;Jill;42.5;"";5.0;2.5;5.0;5.0;5.0;5.0;5.0;5.0;5.0;"";"";"";""
3
- 2;Joe;14.0;"";5.0;5.0;"";2.0;"";"";"";2.0;"";"";"";"";""
4
- 3;Jack;17.0;"";"";"";"";3.0;5.0;4.0;"";5.0;"";"";"";"";""
1
+ "WBS";"Name";"Effort";"2007-12-03-00:00:00";"2007-12-10-00:00:00";"2007-12-17-00:00:00";"2007-12-24-00:00:00";"2007-12-31-00:00:00";"2008-01-07-00:00:00";"2008-01-14-00:00:00";"2008-01-21-00:00:00";"2008-01-28-00:00:00";"2008-02-04-00:00:00";"2008-02-11-00:00:00";"2008-02-18-00:00:00"
2
+ 3;"Jack";17.0;"";"";"";"";"";3.0;5.0;4.0;"";5.0;"";""
3
+ 1;"Jill";42.5;"";"";5.0;2.5;5.0;5.0;5.0;5.0;5.0;5.0;5.0;""
4
+ 2;"Joe";14.0;"";"";5.0;5.0;"";2.0;"";"";"";2.0;"";""
@@ -1,22 +1,22 @@
1
- WBS;Name;Effort;2007-12-10-00:00:00;2007-12-17-00:00:00;2007-12-24-00:00:00;2007-12-31-00:00:00;2008-01-07-00:00:00;2008-01-14-00:00:00;2008-01-21-00:00:00;2008-01-28-00:00:00;2008-02-04-00:00:00;2008-02-11-00:00:00;2008-02-18-00:00:00;2008-02-25-00:00:00;2008-03-03-00:00:00;2008-03-10-00:00:00
2
- 1;Jill;42.5;"";5.0;2.5;5.0;5.0;5.0;5.0;5.0;5.0;5.0;"";"";"";""
3
- 1; Plan Work;12.5;"";5.0;2.5;5.0;"";"";"";"";"";"";"";"";"";""
4
- 1.2; Plan B;7.5;"";5.0;2.5;"";"";"";"";"";"";"";"";"";"";""
5
- 1.3; Plan C;5.0;"";"";"";5.0;"";"";"";"";"";"";"";"";"";""
6
- 2; Execute Work;25.0;"";"";"";"";5.0;5.0;5.0;5.0;5.0;"";"";"";"";""
7
- 2.1; Step 1;20.0;"";"";"";"";5.0;5.0;5.0;5.0;"";"";"";"";"";""
8
- 2.2; Step 2;5.0;"";"";"";"";"";"";"";"";5.0;"";"";"";"";""
9
- 2.2.2; Step 2.2;5.0;"";"";"";"";"";"";"";"";5.0;"";"";"";"";""
10
- 3; Check Work;5.0;"";"";"";"";"";"";"";"";"";5.0;"";"";"";""
11
- 2;Joe;14.0;"";5.0;5.0;"";2.0;"";"";"";2.0;"";"";"";"";""
12
- 1; Plan Work;10.0;"";5.0;5.0;"";"";"";"";"";"";"";"";"";"";""
13
- 1.1; Plan A;10.0;"";5.0;5.0;"";"";"";"";"";"";"";"";"";"";""
14
- 2; Execute Work;4.0;"";"";"";"";2.0;"";"";"";2.0;"";"";"";"";""
15
- 2.2; Step 2;2.0;"";"";"";"";2.0;"";"";"";"";"";"";"";"";""
16
- 2.2.1; Step 2.1;2.0;"";"";"";"";2.0;"";"";"";"";"";"";"";"";""
17
- 2.5; Step 4;2.0;"";"";"";"";"";"";"";"";2.0;"";"";"";"";""
18
- 3;Jack;17.0;"";"";"";"";3.0;5.0;4.0;"";5.0;"";"";"";"";""
19
- 2; Execute Work;17.0;"";"";"";"";3.0;5.0;4.0;"";5.0;"";"";"";"";""
20
- 2.2; Step 2;5.0;"";"";"";"";"";"";"";"";5.0;"";"";"";"";""
21
- 2.2.2; Step 2.2;5.0;"";"";"";"";"";"";"";"";5.0;"";"";"";"";""
22
- 2.4; Step 3;12.0;"";"";"";"";3.0;5.0;4.0;"";"";"";"";"";"";""
1
+ "WBS";"Name";"Effort";"2007-12-03-00:00:00";"2007-12-10-00:00:00";"2007-12-17-00:00:00";"2007-12-24-00:00:00";"2007-12-31-00:00:00";"2008-01-07-00:00:00";"2008-01-14-00:00:00";"2008-01-21-00:00:00";"2008-01-28-00:00:00";"2008-02-04-00:00:00";"2008-02-11-00:00:00";"2008-02-18-00:00:00"
2
+ 3;"Jack";17.0;"";"";"";"";"";3.0;5.0;4.0;"";5.0;"";""
3
+ 2;" Execute Work";17.0;"";"";"";"";"";3.0;5.0;4.0;"";5.0;"";""
4
+ 2.2;" Step 2";5.0;"";"";"";"";"";"";"";"";"";5.0;"";""
5
+ " 2.2.2";" Step 2.2";5.0;"";"";"";"";"";"";"";"";"";5.0;"";""
6
+ 2.4;" Step 3";12.0;"";"";"";"";"";3.0;5.0;4.0;"";"";"";""
7
+ 1;"Jill";42.5;"";"";5.0;2.5;5.0;5.0;5.0;5.0;5.0;5.0;5.0;""
8
+ 1;" Plan Work";12.5;"";"";5.0;2.5;5.0;"";"";"";"";"";"";""
9
+ 1.2;" Plan B";7.5;"";"";5.0;2.5;"";"";"";"";"";"";"";""
10
+ 1.3;" Plan C";5.0;"";"";"";"";5.0;"";"";"";"";"";"";""
11
+ 2;" Execute Work";25.0;"";"";"";"";"";5.0;5.0;5.0;5.0;5.0;"";""
12
+ 2.1;" Step 1";20.0;"";"";"";"";"";5.0;5.0;5.0;5.0;"";"";""
13
+ 2.2;" Step 2";5.0;"";"";"";"";"";"";"";"";"";5.0;"";""
14
+ " 2.2.2";" Step 2.2";5.0;"";"";"";"";"";"";"";"";"";5.0;"";""
15
+ 3;" Check Work";5.0;"";"";"";"";"";"";"";"";"";"";5.0;""
16
+ 2;"Joe";14.0;"";"";5.0;5.0;"";2.0;"";"";"";2.0;"";""
17
+ 1;" Plan Work";10.0;"";"";5.0;5.0;"";"";"";"";"";"";"";""
18
+ 1.1;" Plan A";10.0;"";"";5.0;5.0;"";"";"";"";"";"";"";""
19
+ 2;" Execute Work";4.0;"";"";"";"";"";2.0;"";"";"";2.0;"";""
20
+ 2.2;" Step 2";2.0;"";"";"";"";"";2.0;"";"";"";"";"";""
21
+ " 2.2.1";" Step 2.1";2.0;"";"";"";"";"";2.0;"";"";"";"";"";""
22
+ 2.5;" Step 4";2.0;"";"";"";"";"";"";"";"";"";2.0;"";""