taskjuggler 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +119 -0
- data/benchmarks/allocatedSlots.tjp +1602 -0
- data/benchmarks/booking.tjp +40 -30
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/css/tjmanual.css +0 -0
- data/{test/TestSuite/Scheduler/Correct → benchmarks}/css/tjreport.css +1 -0
- data/benchmarks/gantt.tjp +57 -0
- data/benchmarks/htmltaskreport.tjp +26 -1
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/details.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-green.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-red.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-yellow.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resource.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resourcegroup.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/task.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/taskgroup.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-down.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-flat.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-up.png +0 -0
- data/benchmarks/profile.clt +36082 -0
- data/benchmarks/profile.html +58182 -0
- data/benchmarks/runbench.rb +6 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/scripts/wz_tooltip.js +0 -0
- data/doc/AppConfig.html +85 -37
- data/doc/Arguments.html +11 -1
- data/doc/CHANGELOG.html +131 -2
- data/doc/COPYING.html +11 -1
- data/doc/Object.html +12 -3
- data/doc/README.html +11 -1
- data/doc/RuntimeConfig.html +11 -1
- data/doc/String.html +11 -1
- data/doc/StringIO.html +11 -1
- data/doc/TaskJuggler.html +250 -219
- data/doc/TaskJuggler/Account.html +11 -1
- data/doc/TaskJuggler/AccountAttribute.html +11 -1
- data/doc/TaskJuggler/AccountScenario.html +11 -1
- data/doc/TaskJuggler/Allocation.html +11 -1
- data/doc/TaskJuggler/AllocationAttribute.html +11 -1
- data/doc/TaskJuggler/AttributeBase.html +11 -1
- data/doc/TaskJuggler/AttributeDefinition.html +11 -1
- data/doc/TaskJuggler/BatchProcessor.html +11 -1
- data/doc/TaskJuggler/Booking.html +11 -1
- data/doc/TaskJuggler/BookingListAttribute.html +11 -1
- data/doc/TaskJuggler/BooleanAttribute.html +11 -1
- data/doc/TaskJuggler/CSVFile.html +12 -2
- data/doc/TaskJuggler/CellSettingPattern.html +11 -1
- data/doc/TaskJuggler/CellSettingPatternList.html +11 -1
- data/doc/TaskJuggler/Charge.html +11 -1
- data/doc/TaskJuggler/ChargeListAttribute.html +11 -1
- data/doc/TaskJuggler/ChargeSet.html +11 -1
- data/doc/TaskJuggler/ChargeSetListAttribute.html +11 -1
- data/doc/TaskJuggler/CollisionDetector.html +1063 -0
- data/doc/TaskJuggler/ColumnListAttribute.html +11 -1
- data/doc/TaskJuggler/ColumnTable.html +11 -1
- data/doc/TaskJuggler/Daemon.html +11 -1
- data/doc/TaskJuggler/{OnShiftCache.html → DataCache.html} +127 -139
- data/doc/TaskJuggler/DataCacheEntry.html +711 -0
- data/doc/TaskJuggler/DateAttribute.html +11 -1
- data/doc/TaskJuggler/DefinitionListAttribute.html +11 -1
- data/doc/TaskJuggler/DependencyListAttribute.html +11 -1
- data/doc/TaskJuggler/DurationAttribute.html +16 -5
- data/doc/TaskJuggler/FileList.html +11 -1
- data/doc/TaskJuggler/FileRecord.html +11 -1
- data/doc/TaskJuggler/FixnumAttribute.html +19 -9
- data/doc/TaskJuggler/FlagListAttribute.html +29 -19
- data/doc/TaskJuggler/FloatAttribute.html +23 -13
- data/doc/TaskJuggler/FormatListAttribute.html +19 -9
- data/doc/TaskJuggler/GanttChart.html +94 -133
- data/doc/TaskJuggler/GanttContainer.html +11 -1
- data/doc/TaskJuggler/GanttHeader.html +11 -1
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +11 -1
- data/doc/TaskJuggler/GanttLine.html +11 -1
- data/doc/TaskJuggler/GanttLoadStack.html +11 -1
- data/doc/TaskJuggler/GanttMilestone.html +11 -1
- data/doc/TaskJuggler/GanttRouter.html +247 -596
- data/doc/TaskJuggler/GanttTaskBar.html +11 -1
- data/doc/TaskJuggler/HTMLDocument.html +11 -1
- data/doc/TaskJuggler/HTMLGraphics.html +11 -1
- data/doc/TaskJuggler/Interval.html +11 -1
- data/doc/TaskJuggler/IntervalListAttribute.html +33 -23
- data/doc/TaskJuggler/JobInfo.html +11 -1
- data/doc/TaskJuggler/Journal.html +11 -1
- data/doc/TaskJuggler/JournalEntry.html +11 -1
- data/doc/TaskJuggler/JournalEntryList.html +11 -1
- data/doc/TaskJuggler/KeywordArray.html +11 -1
- data/doc/TaskJuggler/KeywordDocumentation.html +16 -6
- data/doc/TaskJuggler/Limits.html +11 -1
- data/doc/TaskJuggler/Limits/Limit.html +11 -1
- data/doc/TaskJuggler/LimitsAttribute.html +24 -14
- data/doc/TaskJuggler/ListAttributeBase.html +11 -1
- data/doc/TaskJuggler/Log.html +11 -1
- data/doc/TaskJuggler/LogFile.html +11 -1
- data/doc/TaskJuggler/LogicalAttribute.html +11 -1
- data/doc/TaskJuggler/LogicalExpression.html +11 -1
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +19 -9
- data/doc/TaskJuggler/LogicalFlag.html +11 -1
- data/doc/TaskJuggler/LogicalFunction.html +11 -1
- data/doc/TaskJuggler/LogicalOperation.html +11 -1
- data/doc/TaskJuggler/Macro.html +11 -1
- data/doc/TaskJuggler/MacroTable.html +11 -1
- data/doc/TaskJuggler/ManagerResponsibilities.html +11 -1
- data/doc/TaskJuggler/ManagerStatusRecord.html +11 -1
- data/doc/TaskJuggler/Message.html +11 -1
- data/doc/TaskJuggler/MessageHandler.html +11 -1
- data/doc/TaskJuggler/Navigator.html +12 -2
- data/doc/TaskJuggler/NavigatorElement.html +11 -1
- data/doc/TaskJuggler/NikuProject.html +11 -1
- data/doc/TaskJuggler/NikuReport.html +11 -1
- data/doc/TaskJuggler/NikuResource.html +11 -1
- data/doc/TaskJuggler/NodeListAttribute.html +17 -7
- data/doc/TaskJuggler/PlaceHolderCell.html +722 -0
- data/doc/TaskJuggler/ProcessIntercom.html +11 -1
- data/doc/TaskJuggler/ProcessIntercomIface.html +11 -1
- data/doc/TaskJuggler/Project.html +587 -500
- data/doc/TaskJuggler/ProjectBroker.html +11 -1
- data/doc/TaskJuggler/ProjectBrokerIface.html +11 -1
- data/doc/TaskJuggler/ProjectFileParser.html +205 -192
- data/doc/TaskJuggler/ProjectFileScanner.html +230 -207
- data/doc/TaskJuggler/ProjectRecord.html +11 -1
- data/doc/TaskJuggler/ProjectServer.html +11 -1
- data/doc/TaskJuggler/ProjectServerIface.html +11 -1
- data/doc/TaskJuggler/PropertyAttribute.html +19 -9
- data/doc/TaskJuggler/PropertyList.html +95 -83
- data/doc/TaskJuggler/PropertySet.html +11 -1
- data/doc/TaskJuggler/PropertyTreeNode.html +11 -1
- data/doc/TaskJuggler/Query.html +234 -232
- data/doc/TaskJuggler/RTFHandlers.html +11 -1
- data/doc/TaskJuggler/RTFNavigator.html +11 -1
- data/doc/TaskJuggler/RTFQuery.html +11 -1
- data/doc/TaskJuggler/RTFReport.html +11 -1
- data/doc/TaskJuggler/RTFReportLink.html +11 -1
- data/doc/TaskJuggler/RTFWithQuerySupport.html +11 -1
- data/doc/TaskJuggler/RealFormat.html +12 -2
- data/doc/TaskJuggler/RealFormatAttribute.html +15 -5
- data/doc/TaskJuggler/ReferenceAttribute.html +38 -28
- data/doc/TaskJuggler/Report.html +96 -113
- data/doc/TaskJuggler/ReportBase.html +161 -152
- data/doc/TaskJuggler/ReportContext.html +11 -1
- data/doc/TaskJuggler/ReportServer.html +59 -48
- data/doc/TaskJuggler/ReportServerIface.html +51 -41
- data/doc/TaskJuggler/ReportServerRecord.html +11 -1
- data/doc/TaskJuggler/ReportServlet.html +11 -1
- data/doc/TaskJuggler/ReportTable.html +46 -25
- data/doc/TaskJuggler/ReportTableCell.html +296 -275
- data/doc/TaskJuggler/ReportTableColumn.html +14 -4
- data/doc/TaskJuggler/ReportTableLegend.html +11 -1
- data/doc/TaskJuggler/ReportTableLine.html +19 -7
- data/doc/TaskJuggler/Resource.html +12 -2
- data/doc/TaskJuggler/ResourceListAttribute.html +40 -30
- data/doc/TaskJuggler/ResourceListRE.html +11 -1
- data/doc/TaskJuggler/ResourceScenario.html +708 -565
- data/doc/TaskJuggler/RichText.html +54 -36
- data/doc/TaskJuggler/RichTextAttribute.html +31 -21
- data/doc/TaskJuggler/RichTextDocument.html +11 -1
- data/doc/TaskJuggler/RichTextElement.html +11 -1
- data/doc/TaskJuggler/RichTextFunctionExample.html +11 -1
- data/doc/TaskJuggler/RichTextFunctionHandler.html +11 -1
- data/doc/TaskJuggler/RichTextImage.html +11 -1
- data/doc/TaskJuggler/RichTextIntermediate.html +81 -71
- data/doc/TaskJuggler/RichTextParser.html +88 -33
- data/doc/TaskJuggler/RichTextScanner.html +45 -35
- data/doc/TaskJuggler/RichTextSnip.html +11 -1
- data/doc/TaskJuggler/RichTextSyntaxRules.html +436 -389
- data/doc/TaskJuggler/Scenario.html +11 -1
- data/doc/TaskJuggler/ScenarioData.html +11 -1
- data/doc/TaskJuggler/ScenarioListAttribute.html +23 -13
- data/doc/TaskJuggler/Scoreboard.html +92 -73
- data/doc/TaskJuggler/SheetHandlerBase.html +11 -1
- data/doc/TaskJuggler/SheetReceiver.html +11 -1
- data/doc/TaskJuggler/SheetSender.html +11 -1
- data/doc/TaskJuggler/Shift.html +11 -1
- data/doc/TaskJuggler/ShiftAssignment.html +11 -1
- data/doc/TaskJuggler/ShiftAssignments.html +11 -1
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +24 -14
- data/doc/TaskJuggler/ShiftScenario.html +11 -1
- data/doc/TaskJuggler/SimpleQueryExpander.html +11 -1
- data/doc/TaskJuggler/SortListAttribute.html +21 -11
- data/doc/TaskJuggler/SourceFileInfo.html +11 -1
- data/doc/TaskJuggler/StatusSheetReceiver.html +11 -1
- data/doc/TaskJuggler/StatusSheetReport.html +11 -1
- data/doc/TaskJuggler/StatusSheetSender.html +112 -11
- data/doc/TaskJuggler/StringAttribute.html +23 -13
- data/doc/TaskJuggler/SymbolAttribute.html +19 -9
- data/doc/TaskJuggler/SyntaxReference.html +80 -71
- data/doc/TaskJuggler/TOCEntry.html +11 -1
- data/doc/TaskJuggler/TSResourceRecord.html +11 -1
- data/doc/TaskJuggler/TSTaskRecord.html +11 -1
- data/doc/TaskJuggler/TableColumnDefinition.html +11 -1
- data/doc/TaskJuggler/TableOfContents.html +11 -1
- data/doc/TaskJuggler/TableReport.html +422 -411
- data/doc/TaskJuggler/Task.html +11 -1
- data/doc/TaskJuggler/TaskDependency.html +11 -1
- data/doc/TaskJuggler/TaskListAttribute.html +33 -23
- data/doc/TaskJuggler/TaskListRE.html +11 -1
- data/doc/TaskJuggler/TaskScenario.html +2007 -1919
- data/doc/TaskJuggler/TextFormatter.html +11 -1
- data/doc/TaskJuggler/TextParser.html +421 -612
- data/doc/TaskJuggler/TextParser/Pattern.html +410 -211
- data/doc/TaskJuggler/TextParser/Rule.html +224 -152
- data/doc/TaskJuggler/TextParser/StackElement.html +190 -28
- data/doc/TaskJuggler/TextParser/State.html +989 -0
- data/doc/TaskJuggler/TextParser/StateTransition.html +782 -0
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +25 -14
- data/doc/TaskJuggler/TextParser/TokenDoc.html +11 -1
- data/doc/TaskJuggler/TextReport.html +11 -1
- data/doc/TaskJuggler/TextScanner.html +285 -273
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +17 -7
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +24 -14
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +11 -1
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +64 -52
- data/doc/TaskJuggler/TimeSheet.html +11 -1
- data/doc/TaskJuggler/TimeSheetReceiver.html +11 -1
- data/doc/TaskJuggler/TimeSheetRecord.html +11 -1
- data/doc/TaskJuggler/TimeSheetReport.html +11 -1
- data/doc/TaskJuggler/TimeSheetSender.html +11 -1
- data/doc/TaskJuggler/TimeSheetSummary.html +11 -1
- data/doc/TaskJuggler/TimeSheets.html +11 -1
- data/doc/TaskJuggler/Tj3AppBase.html +11 -1
- data/doc/TaskJuggler/Tj3Client.html +11 -1
- data/doc/TaskJuggler/Tj3Daemon.html +11 -1
- data/doc/TaskJuggler/Tj3SheetAppBase.html +11 -1
- data/doc/TaskJuggler/Tj3SsReceiver.html +11 -1
- data/doc/TaskJuggler/Tj3SsSender.html +11 -1
- data/doc/TaskJuggler/Tj3TsReceiver.html +11 -1
- data/doc/TaskJuggler/Tj3TsSender.html +11 -1
- data/doc/TaskJuggler/Tj3TsSummary.html +11 -1
- data/doc/TaskJuggler/TjException.html +11 -1
- data/doc/TaskJuggler/TjTime.html +474 -324
- data/doc/TaskJuggler/TjpExample.html +11 -1
- data/doc/TaskJuggler/TjpExportRE.html +11 -1
- data/doc/TaskJuggler/TjpSyntaxRules.html +3731 -3662
- data/doc/TaskJuggler/URLParameter.html +11 -1
- data/doc/TaskJuggler/UserManual.html +11 -1
- data/doc/TaskJuggler/VimSyntax.html +11 -1
- data/doc/TaskJuggler/WebServer.html +11 -1
- data/doc/TaskJuggler/WorkingHours.html +295 -221
- data/doc/TaskJuggler/WorkingHoursAttribute.html +11 -1
- data/doc/TaskJuggler/XMLBlob.html +11 -1
- data/doc/TaskJuggler/XMLComment.html +11 -1
- data/doc/TaskJuggler/XMLDocument.html +11 -1
- data/doc/TaskJuggler/XMLElement.html +11 -1
- data/doc/TaskJuggler/XMLNamedText.html +11 -1
- data/doc/TaskJuggler/XMLText.html +11 -1
- data/doc/index.html +694 -624
- data/doc/lib/AppConfig_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/DataCache_rb.html +69 -0
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +1 -1
- data/doc/lib/ProjectFileScanner_rb.html +1 -1
- data/doc/lib/Project_rb.html +1 -1
- data/doc/lib/PropertyList_rb.html +1 -1
- data/doc/lib/Query_rb.html +1 -1
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +1 -1
- data/doc/lib/Resource_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +1 -1
- data/doc/lib/RichTextScanner_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
- data/doc/lib/RichText_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/StatusSheetSender_rb.html +1 -1
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +1 -1
- data/doc/lib/TaskScenario_rb.html +3 -1
- data/doc/lib/TextParser/Pattern_rb.html +3 -1
- data/doc/lib/TextParser/Rule_rb.html +3 -1
- data/doc/lib/TextParser/StackElement_rb.html +3 -1
- data/doc/lib/TextParser/State_rb.html +65 -0
- data/doc/lib/TextParser_rb.html +1 -1
- data/doc/lib/TextScanner_rb.html +1 -1
- data/doc/lib/Tj3Config_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +1 -1
- data/doc/lib/WorkingHours_rb.html +3 -1
- data/doc/lib/daemon/ReportServer_rb.html +1 -1
- data/doc/lib/reports/CSVFile_rb.html +1 -1
- data/doc/lib/reports/CollisionDetector_rb.html +67 -0
- data/doc/lib/reports/GanttChart_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +3 -1
- data/doc/lib/reports/Navigator_rb.html +1 -1
- data/doc/lib/reports/ReportBase_rb.html +1 -1
- data/doc/lib/reports/ReportTableCell_rb.html +1 -1
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +1 -1
- data/doc/lib/reports/Report_rb.html +1 -1
- data/doc/lib/reports/TableReport_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +1 -1
- data/examples/tutorial.tjp +1 -2
- data/lib/AppConfig.rb +10 -4
- data/lib/Attributes.rb +4 -4
- data/lib/DataCache.rb +124 -0
- data/lib/KeywordDocumentation.rb +5 -5
- data/lib/Project.rb +54 -10
- data/lib/ProjectFileParser.rb +10 -9
- data/lib/ProjectFileScanner.rb +38 -25
- data/lib/PropertyList.rb +6 -4
- data/lib/Query.rb +0 -8
- data/lib/RealFormat.rb +1 -1
- data/lib/Resource.rb +1 -1
- data/lib/ResourceScenario.rb +96 -31
- data/lib/RichText.rb +17 -5
- data/lib/RichTextParser.rb +22 -9
- data/lib/RichTextScanner.rb +34 -34
- data/lib/RichTextSyntaxRules.rb +41 -36
- data/lib/Scoreboard.rb +16 -7
- data/lib/StatusSheetSender.rb +63 -0
- data/lib/SyntaxReference.rb +9 -10
- data/lib/TaskJuggler.rb +28 -4
- data/lib/TaskScenario.rb +66 -19
- data/lib/TextParser.rb +219 -384
- data/lib/TextParser/Pattern.rb +168 -49
- data/lib/TextParser/Rule.rb +33 -17
- data/lib/TextParser/StackElement.rb +42 -2
- data/lib/TextParser/State.rb +175 -0
- data/lib/TextScanner.rb +19 -15
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +111 -3
- data/lib/TjpSyntaxRules.rb +122 -66
- data/lib/WorkingHours.rb +91 -186
- data/lib/daemon/ReportServer.rb +3 -2
- data/lib/reports/CSVFile.rb +1 -1
- data/lib/reports/CollisionDetector.rb +177 -0
- data/lib/reports/GanttChart.rb +25 -41
- data/lib/reports/GanttRouter.rb +104 -233
- data/lib/reports/Navigator.rb +1 -1
- data/lib/reports/Report.rb +9 -33
- data/lib/reports/ReportBase.rb +0 -1
- data/lib/reports/ReportTable.rb +19 -8
- data/lib/reports/ReportTableCell.rb +61 -25
- data/lib/reports/ReportTableColumn.rb +2 -2
- data/lib/reports/ReportTableLine.rb +4 -2
- data/lib/reports/TableReport.rb +1 -0
- data/lib/taskjuggler3.rb +0 -1
- data/manual/Installation +7 -3
- data/manual/Intro +12 -10
- data/manual/The_TaskJuggler_Syntax +4 -4
- data/test/TestSuite/CSV-Reports/celltext-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/genrefs +1 -1
- data/test/TestSuite/CSV-Reports/resourcereport-Reference.csv +4 -4
- data/test/TestSuite/CSV-Reports/resourcereport_with_tasks-Reference.csv +22 -22
- data/test/TestSuite/CSV-Reports/sortByTree-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/sortBy_duration.down-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/sortBy_effort.up-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/sortBy_plan.start.down-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/taskreport-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/taskreport_with_resources-Reference.csv +32 -24
- data/test/TestSuite/CSV-Reports/weekly-Reference.csv +13 -0
- data/test/TestSuite/CSV-Reports/weekly.tjp +9 -0
- data/test/TestSuite/HTML-Reports/css/tjreport.css +7 -2
- data/test/TestSuite/HTML-Reports/depArrows.html +839 -830
- data/test/TestSuite/HTML-Reports/depArrows.tjp +12 -12
- data/test/TestSuite/HTML-Reports/profile.html +37581 -0
- data/test/TestSuite/ReportGenerator/Errors/no_report_defined.tjp +7 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +1 -1
- data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/missing-reports +2 -0
- data/test/TestSuite/StatusSheets/run +2 -0
- data/test/TestSuite/Syntax/Correct/Booking.tjp +13 -5
- data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +21 -0
- data/test/TestSuite/Syntax/Correct/RollupResource.tjp +21 -0
- data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/include_before_project.tjp +2 -0
- data/test/TestSuite/Syntax/Errors/no_reduce.tjp +6 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
- data/test/TestSuite/TimeSheets/run +1 -1
- data/test/test_CSV-Reports.rb +2 -4
- data/test/test_CollisionDetector.rb +85 -0
- data/test/test_Project.rb +2 -2
- data/test/test_ProjectFileScanner.rb +73 -31
- data/test/test_Query.rb +2 -2
- data/test/test_ReportGenerator.rb +1 -1
- data/test/test_RichText.rb +4 -4
- data/test/test_WorkingHours.rb +150 -11
- metadata +75 -67
- data/test/TestSuite/ReportGenerator/Errors/css/tjreport.css +0 -407
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +0 -26
- data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -3210
- data/test/TestSuite/Scheduler/Correct/Container.html +0 -349
- data/test/TestSuite/Scheduler/Correct/Limits.html +0 -4964
- data/test/TestSuite/Scheduler/Correct/Shift.html +0 -1719
- data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -66
- data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
- data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +0 -66
- data/test/TestSuite/Scheduler/Errors/css/tjreport.css +0 -407
- data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
- data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +0 -1301
- data/test/TestSuite/StatusSheets/resrep.tji +0 -7
- data/test/TestSuite/StatusSheets/tj3d.log +0 -312
- data/test/TestSuite/Syntax/Correct/Managers.html +0 -263
- data/test/TestSuite/TimeSheets/acceptable_intervals +0 -1
- data/test/TestSuite/TimeSheets/statussheets.log +0 -1
data/lib/reports/Navigator.rb
CHANGED
data/lib/reports/Report.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/reports/ReportBase.rb
CHANGED
data/lib/reports/ReportTable.rb
CHANGED
@@ -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 =
|
135
|
-
|
136
|
-
|
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
|
-
@
|
139
|
-
|
140
|
-
|
141
|
-
|
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
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
str.
|
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
|
-
|
166
|
-
|
167
|
-
|
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
|
-
|
170
|
-
|
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
|
-
!@
|
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
|
data/lib/reports/TableReport.rb
CHANGED
@@ -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
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
|
-
|
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://
|
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.
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
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
|
-
*
|
100
|
-
*
|
101
|
-
* Support for
|
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
|
-
|
115
|
-
|
116
|
-
|
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.
|
12
|
-
2.
|
13
|
-
2.
|
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)"
|
@@ -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
|
2
|
-
|
3
|
-
|
4
|
-
|
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
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
2;
|
12
|
-
|
13
|
-
|
14
|
-
2;
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
2.2.
|
22
|
-
|
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;"";""
|