taskjuggler 0.0.10 → 0.0.11
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.
- data/CHANGELOG +115 -0
- data/README.rdoc +105 -0
- data/examples/tutorial.tjp +21 -16
- data/gem_spec.rb +1 -1
- data/lib/{Account.rb → taskjuggler/Account.rb} +2 -3
- data/lib/{AccountScenario.rb → taskjuggler/AccountScenario.rb} +1 -1
- data/lib/taskjuggler/AlgorithmDiff.rb +311 -0
- data/lib/{Allocation.rb → taskjuggler/Allocation.rb} +3 -3
- data/lib/{AppConfig.rb → taskjuggler/AppConfig.rb} +0 -1
- data/lib/{AttributeBase.rb → taskjuggler/AttributeBase.rb} +1 -1
- data/lib/{AttributeDefinition.rb → taskjuggler/AttributeDefinition.rb} +0 -0
- data/lib/{Attributes.rb → taskjuggler/Attributes.rb} +19 -9
- data/lib/{BatchProcessor.rb → taskjuggler/BatchProcessor.rb} +0 -0
- data/lib/{Booking.rb → taskjuggler/Booking.rb} +0 -0
- data/lib/{Charge.rb → taskjuggler/Charge.rb} +1 -1
- data/lib/{ChargeSet.rb → taskjuggler/ChargeSet.rb} +1 -1
- data/lib/{DataCache.rb → taskjuggler/DataCache.rb} +0 -0
- data/lib/{FileList.rb → taskjuggler/FileList.rb} +0 -0
- data/lib/{HTMLDocument.rb → taskjuggler/HTMLDocument.rb} +1 -1
- data/lib/{Interval.rb → taskjuggler/Interval.rb} +1 -1
- data/lib/{IntervalList.rb → taskjuggler/IntervalList.rb} +1 -1
- data/lib/{Journal.rb → taskjuggler/Journal.rb} +2 -2
- data/lib/{KeywordArray.rb → taskjuggler/KeywordArray.rb} +0 -0
- data/lib/{KeywordDocumentation.rb → taskjuggler/KeywordDocumentation.rb} +5 -5
- data/lib/{Limits.rb → taskjuggler/Limits.rb} +1 -1
- data/lib/{Log.rb → taskjuggler/Log.rb} +0 -0
- data/lib/{LogFile.rb → taskjuggler/LogFile.rb} +0 -0
- data/lib/{LogicalExpression.rb → taskjuggler/LogicalExpression.rb} +3 -3
- data/lib/{LogicalFunction.rb → taskjuggler/LogicalFunction.rb} +1 -1
- data/lib/{LogicalOperation.rb → taskjuggler/LogicalOperation.rb} +1 -1
- data/lib/{MessageHandler.rb → taskjuggler/MessageHandler.rb} +3 -1
- data/lib/{Project.rb → taskjuggler/Project.rb} +51 -48
- data/lib/{ProjectFileParser.rb → taskjuggler/ProjectFileParser.rb} +25 -9
- data/lib/{ProjectFileScanner.rb → taskjuggler/ProjectFileScanner.rb} +5 -5
- data/lib/{PropertyList.rb → taskjuggler/PropertyList.rb} +0 -0
- data/lib/{PropertySet.rb → taskjuggler/PropertySet.rb} +3 -4
- data/lib/{PropertyTreeNode.rb → taskjuggler/PropertyTreeNode.rb} +157 -11
- data/lib/{Query.rb → taskjuggler/Query.rb} +17 -7
- data/lib/{RealFormat.rb → taskjuggler/RealFormat.rb} +0 -0
- data/lib/{Resource.rb → taskjuggler/Resource.rb} +8 -6
- data/lib/{ResourceScenario.rb → taskjuggler/ResourceScenario.rb} +26 -65
- data/lib/{RichText.rb → taskjuggler/RichText.rb} +3 -3
- data/lib/{RichTextDocument.rb → taskjuggler/RichText/Document.rb} +3 -3
- data/lib/{RichTextElement.rb → taskjuggler/RichText/Element.rb} +10 -4
- data/lib/{RichTextFunctionExample.rb → taskjuggler/RichText/FunctionExample.rb} +3 -3
- data/lib/{RichTextFunctionHandler.rb → taskjuggler/RichText/FunctionHandler.rb} +0 -0
- data/lib/{RichTextParser.rb → taskjuggler/RichText/Parser.rb} +6 -4
- data/lib/{RTFHandlers.rb → taskjuggler/RichText/RTFHandlers.rb} +4 -4
- data/lib/{RTFNavigator.rb → taskjuggler/RichText/RTFNavigator.rb} +3 -3
- data/lib/{RTFQuery.rb → taskjuggler/RichText/RTFQuery.rb} +62 -39
- data/lib/{RTFReport.rb → taskjuggler/RichText/RTFReport.rb} +2 -2
- data/lib/{RTFReportLink.rb → taskjuggler/RichText/RTFReportLink.rb} +4 -4
- data/lib/{RTFWithQuerySupport.rb → taskjuggler/RichText/RTFWithQuerySupport.rb} +1 -1
- data/lib/{RichTextScanner.rb → taskjuggler/RichText/Scanner.rb} +18 -5
- data/lib/{RichTextSnip.rb → taskjuggler/RichText/Snip.rb} +2 -2
- data/lib/{RichTextSyntaxRules.rb → taskjuggler/RichText/SyntaxRules.rb} +14 -0
- data/lib/{TOCEntry.rb → taskjuggler/RichText/TOCEntry.rb} +2 -2
- data/lib/{TableOfContents.rb → taskjuggler/RichText/TableOfContents.rb} +2 -2
- data/lib/{RuntimeConfig.rb → taskjuggler/RuntimeConfig.rb} +18 -18
- data/lib/{Scenario.rb → taskjuggler/Scenario.rb} +1 -1
- data/lib/{ScenarioData.rb → taskjuggler/ScenarioData.rb} +2 -3
- data/lib/{Scoreboard.rb → taskjuggler/Scoreboard.rb} +4 -4
- data/lib/{SheetHandlerBase.rb → taskjuggler/SheetHandlerBase.rb} +3 -3
- data/lib/{SheetReceiver.rb → taskjuggler/SheetReceiver.rb} +2 -2
- data/lib/{SheetSender.rb → taskjuggler/SheetSender.rb} +5 -5
- data/lib/{Shift.rb → taskjuggler/Shift.rb} +2 -3
- data/lib/{ShiftAssignments.rb → taskjuggler/ShiftAssignments.rb} +1 -1
- data/lib/{ShiftScenario.rb → taskjuggler/ShiftScenario.rb} +1 -1
- data/lib/{SimpleQueryExpander.rb → taskjuggler/SimpleQueryExpander.rb} +0 -0
- data/lib/{StatusSheetReceiver.rb → taskjuggler/StatusSheetReceiver.rb} +1 -1
- data/lib/{StatusSheetSender.rb → taskjuggler/StatusSheetSender.rb} +1 -1
- data/lib/{SyntaxReference.rb → taskjuggler/SyntaxReference.rb} +4 -4
- data/lib/{TableColumnDefinition.rb → taskjuggler/TableColumnDefinition.rb} +0 -0
- data/lib/{Task.rb → taskjuggler/Task.rb} +2 -2
- data/lib/{TaskDependency.rb → taskjuggler/TaskDependency.rb} +8 -0
- data/lib/{TaskJuggler.rb → taskjuggler/TaskJuggler.rb} +6 -4
- data/lib/{TaskScenario.rb → taskjuggler/TaskScenario.rb} +211 -150
- data/lib/taskjuggler/TernarySearchTree.rb +203 -0
- data/lib/{TextFormatter.rb → taskjuggler/TextFormatter.rb} +1 -1
- data/lib/{TextParser.rb → taskjuggler/TextParser.rb} +6 -6
- data/lib/{MacroTable.rb → taskjuggler/TextParser/MacroTable.rb} +2 -12
- data/lib/{TextParser → taskjuggler/TextParser}/Pattern.rb +5 -2
- data/lib/{TextParser → taskjuggler/TextParser}/Rule.rb +1 -1
- data/lib/{TextScanner.rb → taskjuggler/TextParser/Scanner.rb} +34 -32
- data/lib/{SourceFileInfo.rb → taskjuggler/TextParser/SourceFileInfo.rb} +1 -1
- data/lib/{TextParser → taskjuggler/TextParser}/StackElement.rb +0 -2
- data/lib/{TextParser → taskjuggler/TextParser}/State.rb +0 -0
- data/lib/{TextParser → taskjuggler/TextParser}/TokenDoc.rb +0 -0
- data/lib/{TimeSheetReceiver.rb → taskjuggler/TimeSheetReceiver.rb} +1 -1
- data/lib/{TimeSheetSender.rb → taskjuggler/TimeSheetSender.rb} +1 -1
- data/lib/{TimeSheetSummary.rb → taskjuggler/TimeSheetSummary.rb} +1 -1
- data/lib/{TimeSheets.rb → taskjuggler/TimeSheets.rb} +23 -16
- data/lib/{Tj3AppBase.rb → taskjuggler/Tj3AppBase.rb} +19 -12
- data/lib/{Tj3Config.rb → taskjuggler/Tj3Config.rb} +3 -3
- data/lib/taskjuggler/Tj3Man.rb +78 -0
- data/lib/{Tj3SheetAppBase.rb → taskjuggler/Tj3SheetAppBase.rb} +2 -2
- data/lib/{TjException.rb → taskjuggler/TjException.rb} +0 -0
- data/lib/{TjTime.rb → taskjuggler/TjTime.rb} +279 -234
- data/lib/{TjpExample.rb → taskjuggler/TjpExample.rb} +0 -0
- data/lib/{TjpSyntaxRules.rb → taskjuggler/TjpSyntaxRules.rb} +253 -95
- data/lib/{URLParameter.rb → taskjuggler/URLParameter.rb} +0 -0
- data/lib/{UTF8String.rb → taskjuggler/UTF8String.rb} +0 -0
- data/lib/{UserManual.rb → taskjuggler/UserManual.rb} +6 -6
- data/lib/{VimSyntax.rb → taskjuggler/VimSyntax.rb} +6 -2
- data/lib/{WorkingHours.rb → taskjuggler/WorkingHours.rb} +14 -22
- data/lib/{XMLDocument.rb → taskjuggler/XMLDocument.rb} +1 -1
- data/lib/{XMLElement.rb → taskjuggler/XMLElement.rb} +1 -1
- data/lib/taskjuggler/apps/Tj3.rb +134 -0
- data/lib/taskjuggler/apps/Tj3Client.rb +467 -0
- data/lib/taskjuggler/apps/Tj3Daemon.rb +142 -0
- data/lib/taskjuggler/apps/Tj3SsReceiver.rb +56 -0
- data/lib/taskjuggler/apps/Tj3SsSender.rb +90 -0
- data/lib/taskjuggler/apps/Tj3TsReceiver.rb +59 -0
- data/lib/taskjuggler/apps/Tj3TsSender.rb +77 -0
- data/lib/taskjuggler/apps/Tj3TsSummary.rb +86 -0
- data/lib/{daemon → taskjuggler/daemon}/Daemon.rb +4 -3
- data/lib/{daemon → taskjuggler/daemon}/ProcessIntercom.rb +2 -2
- data/lib/{daemon → taskjuggler/daemon}/ProjectBroker.rb +5 -5
- data/lib/{daemon → taskjuggler/daemon}/ProjectServer.rb +16 -16
- data/lib/{daemon → taskjuggler/daemon}/ReportServer.rb +6 -6
- data/lib/{daemon → taskjuggler/daemon}/ReportServlet.rb +2 -2
- data/lib/{daemon → taskjuggler/daemon}/WebServer.rb +4 -4
- data/lib/{daemon → taskjuggler/daemon}/WelcomePage.rb +2 -1
- data/lib/{deep_copy.rb → taskjuggler/deep_copy.rb} +0 -0
- data/lib/{reports → taskjuggler/reports}/CSVFile.rb +2 -2
- data/lib/{reports → taskjuggler/reports}/CollisionDetector.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/ColumnTable.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/GanttChart.rb +4 -4
- data/lib/{reports → taskjuggler/reports}/GanttContainer.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/GanttHeader.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/GanttHeaderScaleItem.rb +0 -0
- data/lib/{reports → taskjuggler/reports}/GanttLine.rb +6 -6
- data/lib/{reports → taskjuggler/reports}/GanttLoadStack.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/GanttMilestone.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/GanttRouter.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/GanttTaskBar.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/HTMLGraphics.rb +0 -0
- data/lib/{reports → taskjuggler/reports}/Navigator.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/NikuReport.rb +3 -6
- data/lib/{reports → taskjuggler/reports}/Report.rb +19 -14
- data/lib/{reports → taskjuggler/reports}/ReportBase.rb +0 -0
- data/lib/{reports → taskjuggler/reports}/ReportContext.rb +0 -0
- data/lib/{reports → taskjuggler/reports}/ReportTable.rb +2 -2
- data/lib/{reports → taskjuggler/reports}/ReportTableCell.rb +0 -0
- data/lib/{reports → taskjuggler/reports}/ReportTableColumn.rb +0 -0
- data/lib/{reports → taskjuggler/reports}/ReportTableLegend.rb +0 -0
- data/lib/{reports → taskjuggler/reports}/ReportTableLine.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/ResourceListRE.rb +4 -4
- data/lib/{reports → taskjuggler/reports}/StatusSheetReport.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/TableReport.rb +8 -7
- data/lib/{reports → taskjuggler/reports}/TaskListRE.rb +4 -4
- data/lib/{reports → taskjuggler/reports}/TextReport.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/TimeSheetReport.rb +1 -1
- data/lib/{reports → taskjuggler/reports}/TjpExportRE.rb +87 -29
- data/lib/tj3.rb +2 -144
- data/lib/tj3client.rb +2 -442
- data/lib/tj3d.rb +1 -133
- data/lib/tj3man.rb +2 -75
- data/lib/tj3ss_receiver.rb +2 -42
- data/lib/tj3ss_sender.rb +1 -76
- data/lib/tj3ts_receiver.rb +1 -45
- data/lib/tj3ts_sender.rb +1 -63
- data/lib/tj3ts_summary.rb +1 -72
- data/manual/How_To_Contribute +19 -49
- data/manual/Installation +65 -6
- data/manual/Reporting_Bugs +6 -20
- data/manual/TaskJuggler_Internals +8 -1
- data/manual/Tutorial +16 -0
- data/prj_cfg.rb +2 -3
- data/spec/IntervalList_spec.rb +2 -1
- data/spec/ProjectBroker_spec.rb +1 -1
- data/spec/TernarySearchTree_spec.rb +131 -0
- data/spec/TimeSheets_spec.rb +129 -0
- data/spec/Tj3Daemon_spec.rb +51 -0
- data/spec/Tj3_spec.rb +36 -0
- data/spec/support/DaemonControl.rb +78 -0
- data/spec/support/StdIoWrapper.rb +43 -0
- data/spec/tj3client.log +23 -0
- data/tasks/changelog.rake +17 -2
- data/tasks/csts.rake +2 -2
- data/tasks/manual.rake +9 -5
- data/tasks/missing.rake +0 -4
- data/tasks/rdoc.rake +2 -2
- data/tasks/vim.rake +9 -0
- data/test/TestSuite/CSV-Reports/alert.tjp +9 -0
- data/test/TestSuite/CSV-Reports/celltext.tjp +1 -0
- data/test/TestSuite/CSV-Reports/inputs.tjp +19 -0
- data/test/TestSuite/CSV-Reports/project-1.tji +9 -0
- data/test/TestSuite/CSV-Reports/refs/alert.csv +15 -0
- data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -0
- data/test/TestSuite/CSV-Reports/refs/inputs.csv +6 -0
- data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +4 -4
- data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +22 -22
- data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -0
- data/test/TestSuite/CSV-Reports/refs/sortBy_duration.down.csv +1 -0
- data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -0
- data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +14 -13
- data/test/TestSuite/CSV-Reports/refs/targets.csv +5 -0
- data/test/TestSuite/CSV-Reports/refs/taskreport.csv +15 -14
- data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +33 -32
- data/test/TestSuite/CSV-Reports/resourcereport.tjp +1 -0
- data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +1 -0
- data/test/TestSuite/CSV-Reports/sortByTree.tjp +1 -0
- data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +1 -0
- data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -0
- data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +2 -1
- data/test/TestSuite/CSV-Reports/targets.tjp +20 -0
- data/test/TestSuite/CSV-Reports/taskreport.tjp +2 -1
- data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +2 -1
- data/test/TestSuite/CSV-Reports/weekly.tjp +5 -2
- data/test/TestSuite/Export-Reports/export.tji +6 -0
- data/test/TestSuite/Export-Reports/refs/Account.tjp +92 -0
- data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +38 -0
- data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +124 -0
- data/test/TestSuite/Export-Reports/refs/Alternative.tjp +50 -0
- data/test/TestSuite/Export-Reports/refs/AutoID.tjp +45 -0
- data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +18 -0
- data/test/TestSuite/Export-Reports/refs/Booking.tjp +48 -0
- data/test/TestSuite/Export-Reports/refs/Caption.tjp +65 -0
- data/test/TestSuite/Export-Reports/refs/Celltext.tjp +45 -0
- data/test/TestSuite/Export-Reports/refs/Comments.tjp +67 -0
- data/test/TestSuite/Export-Reports/refs/Complete.tjp +50 -0
- data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +41 -0
- data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +18 -0
- data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +24 -0
- data/test/TestSuite/Export-Reports/refs/DST.tjp +89 -0
- data/test/TestSuite/Export-Reports/refs/Depends1.tjp +57 -0
- data/test/TestSuite/Export-Reports/refs/Durations.tjp +84 -0
- data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +58 -0
- data/test/TestSuite/Export-Reports/refs/Flags.tjp +51 -0
- data/test/TestSuite/Export-Reports/refs/Gap.tjp +38 -0
- data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +67 -0
- data/test/TestSuite/Export-Reports/refs/Include.tjp +58 -0
- data/test/TestSuite/Export-Reports/refs/Journal.tjp +28 -0
- data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +283 -0
- data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +617 -0
- data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +18 -0
- data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +57 -0
- data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +91 -0
- data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +18 -0
- data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +18 -0
- data/test/TestSuite/Export-Reports/refs/Manager.tjp +121 -0
- data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +59 -0
- data/test/TestSuite/Export-Reports/refs/Milestone.tjp +27 -0
- data/test/TestSuite/Export-Reports/refs/MinMax.tjp +30 -0
- data/test/TestSuite/Export-Reports/refs/Niku.tjp +218 -0
- data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +18 -0
- data/test/TestSuite/Export-Reports/refs/Period.tjp +25 -0
- data/test/TestSuite/Export-Reports/refs/Persistent.tjp +49 -0
- data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +46 -0
- data/test/TestSuite/Export-Reports/refs/Priority.tjp +141 -0
- data/test/TestSuite/Export-Reports/refs/Project.tjp +18 -0
- data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +36 -0
- data/test/TestSuite/Export-Reports/refs/Query.tjp +49 -0
- data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +79 -0
- data/test/TestSuite/Export-Reports/refs/Reports.tjp +130 -0
- data/test/TestSuite/Export-Reports/refs/Resource.tjp +59 -0
- data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +67 -0
- data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +90 -0
- data/test/TestSuite/Export-Reports/refs/Responsible.tjp +50 -0
- data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +90 -0
- data/test/TestSuite/Export-Reports/refs/Scenario.tjp +25 -0
- data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +55 -0
- data/test/TestSuite/Export-Reports/refs/Select.tjp +89 -0
- data/test/TestSuite/Export-Reports/refs/Shift.tjp +39 -0
- data/test/TestSuite/Export-Reports/refs/Simple.tjp +67 -0
- data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +95 -0
- data/test/TestSuite/Export-Reports/refs/String.tjp +33 -0
- data/test/TestSuite/Export-Reports/refs/Supplement.tjp +41 -0
- data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +49 -0
- data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +75 -0
- data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +51 -0
- data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +81 -0
- data/test/TestSuite/Export-Reports/refs/Timezone.tjp +18 -0
- data/test/TestSuite/Export-Reports/refs/Vacation.tjp +69 -0
- data/test/TestSuite/Export-Reports/refs/tutorial.tjp +1061 -0
- data/test/TestSuite/Scheduler/Correct/Container-2.tjp +3 -1
- data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +5 -3
- data/test/TestSuite/Scheduler/Correct/Precedes.tjp +19 -19
- data/test/TestSuite/Scheduler/Correct/PriorityInversion.tjp +32 -0
- data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +19 -0
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +11 -0
- data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +14 -14
- data/test/TestSuite/Scheduler/Correct/checks.tji +5 -0
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +20 -0
- data/test/TestSuite/StatusSheets/boss_mail +1 -1
- data/test/TestSuite/StatusSheets/dev2_mail +1 -1
- data/test/TestSuite/StatusSheets/run +2 -3
- data/test/TestSuite/Syntax/Correct/Account.tjp +1 -0
- data/test/TestSuite/Syntax/Correct/AdoptedTasks.tjp +9 -0
- data/test/TestSuite/Syntax/Correct/Allocate-1.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Alternative.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/AutoID.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -0
- data/test/TestSuite/Syntax/Correct/Caption.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Celltext.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Comments.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Complete.tjp +1 -0
- data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/CustomAttributes.tjp +3 -2
- data/test/TestSuite/Syntax/Correct/DST.tjp +11 -0
- data/test/TestSuite/Syntax/Correct/Depends1.tjp +6 -4
- data/test/TestSuite/Syntax/Correct/Durations.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Efficiency.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/Export.tjp +6 -4
- data/test/TestSuite/Syntax/Correct/Flags.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Freeze.tjp +2 -2
- data/test/TestSuite/Syntax/Correct/Gap.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/HtmlTaskReport.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/Include.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +13 -9
- data/test/TestSuite/Syntax/Correct/LoadUnits.tjp +1 -0
- data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Macro-1.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Macro-2.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Macro-3.tjp +1 -0
- data/test/TestSuite/Syntax/Correct/Manager.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/Mandatory.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Milestone.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/MinMax.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Niku.tjp +1 -0
- data/test/TestSuite/Syntax/Correct/Numberformat.tjp +3 -2
- data/test/TestSuite/Syntax/Correct/Period.tjp +1 -0
- data/test/TestSuite/Syntax/Correct/Persistent.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Precedes1.tjp +6 -4
- data/test/TestSuite/Syntax/Correct/Priority.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/Project.tjp +5 -4
- data/test/TestSuite/Syntax/Correct/ProjectIDs.tjp +3 -2
- data/test/TestSuite/Syntax/Correct/Query.tjp +1 -0
- data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Reports.tjp +7 -5
- data/test/TestSuite/Syntax/Correct/Resource.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Responsible.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/RollupResource.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Scenario.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/Scheduling.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Select.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Shift.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/Simple.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/String.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Supplement.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +3 -2
- data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/TimeFrame.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/Vacation.tjp +5 -3
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +23 -16
- data/test/TestSuite/Syntax/Errors/adopt_common_root.tjp +10 -0
- data/test/TestSuite/Syntax/Errors/adopt_duplicate_child.tjp +10 -0
- data/test/TestSuite/Syntax/Errors/adopt_duplicate_parent.tjp +10 -0
- data/test/TestSuite/{Scheduler/Errors/milestone_duration.tjp → Syntax/Errors/multiple_durations.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/operand_unkn_scen.tjp +6 -4
- data/test/TestSuite/Syntax/Errors/sorting_crit_exptd1.tjp +5 -3
- data/test/TestSuite/TimeSheets/dev2_mail1 +1 -1
- data/test/TestSuite/TimeSheets/dev2_mail2 +1 -1
- data/test/TestSuite/TimeSheets/run +2 -2
- data/test/TestSuite/TimeSheets/uu.txt +29 -0
- data/test/test_AlgorithmDiff.rb +139 -0
- data/test/test_BatchProcessor.rb +2 -1
- data/test/test_CSV-Reports.rb +30 -19
- data/test/test_CSVFile.rb +2 -1
- data/test/test_CollisionDetector.rb +2 -1
- data/test/test_Export-Reports.rb +128 -0
- data/test/test_Journal.rb +2 -1
- data/test/test_Limits.rb +4 -3
- data/test/test_LogicalExpression.rb +2 -1
- data/test/test_MacroTable.rb +8 -6
- data/test/test_Project.rb +2 -1
- data/test/test_ProjectFileScanner.rb +4 -3
- data/test/test_PropertySet.rb +2 -1
- data/test/test_Query.rb +3 -2
- data/test/test_RealFormat.rb +2 -1
- data/test/test_ReportGenerator.rb +3 -2
- data/test/test_RichText.rb +14 -3
- data/test/test_Scheduler.rb +2 -1
- data/test/test_ShiftAssignments.rb +3 -1
- data/test/test_SimpleQueryExpander.rb +3 -2
- data/test/test_Syntax.rb +2 -1
- data/test/test_TextFormatter.rb +2 -1
- data/test/test_TjTime.rb +15 -14
- data/test/test_TjpExample.rb +2 -1
- data/test/test_URLParameter.rb +2 -1
- data/test/test_UTF8String.rb +2 -1
- data/test/test_WorkingHours.rb +3 -2
- data/test/test_deep_copy.rb +2 -1
- metadata +250 -541
- data/README +0 -31
- data/benchmarks/allocatedSlots.csv +0 -334
- data/benchmarks/profile.clt +0 -42974
- data/benchmarks/profile.html +0 -61128
- data/doc/AppConfig.html +0 -1471
- data/doc/Arguments.html +0 -720
- data/doc/CHANGELOG.html +0 -1987
- data/doc/COPYING.html +0 -879
- data/doc/Object.html +0 -1056
- data/doc/README.html +0 -565
- data/doc/RuntimeConfig.html +0 -804
- data/doc/String.html +0 -913
- data/doc/TaskJuggler.html +0 -2512
- data/doc/TaskJuggler/Account.html +0 -733
- data/doc/TaskJuggler/AccountAttribute.html +0 -749
- data/doc/TaskJuggler/AccountScenario.html +0 -692
- data/doc/TaskJuggler/Allocation.html +0 -943
- data/doc/TaskJuggler/AllocationAttribute.html +0 -779
- data/doc/TaskJuggler/AttributeBase.html +0 -1308
- data/doc/TaskJuggler/AttributeDefinition.html +0 -795
- data/doc/TaskJuggler/AttributeOverwrite.html +0 -586
- data/doc/TaskJuggler/BatchProcessor.html +0 -1158
- data/doc/TaskJuggler/Booking.html +0 -839
- data/doc/TaskJuggler/BookingListAttribute.html +0 -749
- data/doc/TaskJuggler/BooleanAttribute.html +0 -749
- data/doc/TaskJuggler/CSVFile.html +0 -1108
- data/doc/TaskJuggler/CellSettingPattern.html +0 -680
- data/doc/TaskJuggler/CellSettingPatternList.html +0 -729
- data/doc/TaskJuggler/Charge.html +0 -757
- data/doc/TaskJuggler/ChargeListAttribute.html +0 -713
- data/doc/TaskJuggler/ChargeSet.html +0 -929
- data/doc/TaskJuggler/ChargeSetListAttribute.html +0 -758
- data/doc/TaskJuggler/CollisionDetector.html +0 -1069
- data/doc/TaskJuggler/ColumnListAttribute.html +0 -713
- data/doc/TaskJuggler/ColumnTable.html +0 -743
- data/doc/TaskJuggler/Daemon.html +0 -798
- data/doc/TaskJuggler/DataCache.html +0 -930
- data/doc/TaskJuggler/DataCacheEntry.html +0 -717
- data/doc/TaskJuggler/DateAttribute.html +0 -717
- data/doc/TaskJuggler/DefinitionListAttribute.html +0 -635
- data/doc/TaskJuggler/DependencyListAttribute.html +0 -753
- data/doc/TaskJuggler/DurationAttribute.html +0 -750
- data/doc/TaskJuggler/FileList.html +0 -731
- data/doc/TaskJuggler/FileRecord.html +0 -682
- data/doc/TaskJuggler/FixnumAttribute.html +0 -671
- data/doc/TaskJuggler/FlagListAttribute.html +0 -749
- data/doc/TaskJuggler/FloatAttribute.html +0 -713
- data/doc/TaskJuggler/FormatListAttribute.html +0 -677
- data/doc/TaskJuggler/GanttChart.html +0 -1467
- data/doc/TaskJuggler/GanttContainer.html +0 -925
- data/doc/TaskJuggler/GanttHeader.html +0 -928
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +0 -742
- data/doc/TaskJuggler/GanttLine.html +0 -1305
- data/doc/TaskJuggler/GanttLoadStack.html +0 -808
- data/doc/TaskJuggler/GanttMilestone.html +0 -906
- data/doc/TaskJuggler/GanttRouter.html +0 -1118
- data/doc/TaskJuggler/GanttTaskBar.html +0 -927
- data/doc/TaskJuggler/HTMLDocument.html +0 -761
- data/doc/TaskJuggler/HTMLGraphics.html +0 -817
- data/doc/TaskJuggler/Interval.html +0 -1056
- data/doc/TaskJuggler/IntervalList.html +0 -777
- data/doc/TaskJuggler/IntervalListAttribute.html +0 -753
- data/doc/TaskJuggler/JobInfo.html +0 -923
- data/doc/TaskJuggler/Journal.html +0 -1158
- data/doc/TaskJuggler/JournalEntry.html +0 -821
- data/doc/TaskJuggler/JournalEntryList.html +0 -1071
- data/doc/TaskJuggler/KeywordArray.html +0 -676
- data/doc/TaskJuggler/KeywordDocumentation.html +0 -1838
- data/doc/TaskJuggler/Limits.html +0 -1016
- data/doc/TaskJuggler/Limits/Limit.html +0 -927
- data/doc/TaskJuggler/LimitsAttribute.html +0 -714
- data/doc/TaskJuggler/ListAttributeBase.html +0 -683
- data/doc/TaskJuggler/Log.html +0 -1143
- data/doc/TaskJuggler/LogFile.html +0 -960
- data/doc/TaskJuggler/LogicalAttribute.html +0 -740
- data/doc/TaskJuggler/LogicalExpression.html +0 -781
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +0 -671
- data/doc/TaskJuggler/LogicalExpressionListAttribute.html +0 -671
- data/doc/TaskJuggler/LogicalFlag.html +0 -723
- data/doc/TaskJuggler/LogicalFunction.html +0 -1306
- data/doc/TaskJuggler/LogicalOperation.html +0 -1124
- data/doc/TaskJuggler/Macro.html +0 -688
- data/doc/TaskJuggler/MacroTable.html +0 -852
- data/doc/TaskJuggler/ManagerResponsibilities.html +0 -716
- data/doc/TaskJuggler/ManagerStatusRecord.html +0 -720
- data/doc/TaskJuggler/Message.html +0 -817
- data/doc/TaskJuggler/MessageHandler.html +0 -1036
- data/doc/TaskJuggler/Navigator.html +0 -922
- data/doc/TaskJuggler/NavigatorElement.html +0 -974
- data/doc/TaskJuggler/NikuProject.html +0 -704
- data/doc/TaskJuggler/NikuReport.html +0 -1449
- data/doc/TaskJuggler/NikuResource.html +0 -674
- data/doc/TaskJuggler/NodeListAttribute.html +0 -635
- data/doc/TaskJuggler/PlaceHolderCell.html +0 -728
- data/doc/TaskJuggler/ProcessIntercom.html +0 -997
- data/doc/TaskJuggler/ProcessIntercomIface.html +0 -753
- data/doc/TaskJuggler/Project.html +0 -3333
- data/doc/TaskJuggler/ProjectBroker.html +0 -1656
- data/doc/TaskJuggler/ProjectBrokerIface.html +0 -831
- data/doc/TaskJuggler/ProjectFileParser.html +0 -2033
- data/doc/TaskJuggler/ProjectFileScanner.html +0 -1816
- data/doc/TaskJuggler/ProjectRecord.html +0 -958
- data/doc/TaskJuggler/ProjectServer.html +0 -1229
- data/doc/TaskJuggler/ProjectServerIface.html +0 -848
- data/doc/TaskJuggler/PropertyAttribute.html +0 -671
- data/doc/TaskJuggler/PropertyList.html +0 -1379
- data/doc/TaskJuggler/PropertySet.html +0 -1799
- data/doc/TaskJuggler/PropertyTreeNode.html +0 -2579
- data/doc/TaskJuggler/Query.html +0 -1663
- data/doc/TaskJuggler/RTFHandlers.html +0 -644
- data/doc/TaskJuggler/RTFNavigator.html +0 -772
- data/doc/TaskJuggler/RTFQuery.html +0 -1040
- data/doc/TaskJuggler/RTFReport.html +0 -800
- data/doc/TaskJuggler/RTFReportLink.html +0 -792
- data/doc/TaskJuggler/RTFWithQuerySupport.html +0 -682
- data/doc/TaskJuggler/RealFormat.html +0 -785
- data/doc/TaskJuggler/RealFormatAttribute.html +0 -635
- data/doc/TaskJuggler/ReferenceAttribute.html +0 -824
- data/doc/TaskJuggler/Report.html +0 -1477
- data/doc/TaskJuggler/ReportBase.html +0 -1246
- data/doc/TaskJuggler/ReportContext.html +0 -816
- data/doc/TaskJuggler/ReportServer.html +0 -1048
- data/doc/TaskJuggler/ReportServerIface.html +0 -882
- data/doc/TaskJuggler/ReportServerRecord.html +0 -761
- data/doc/TaskJuggler/ReportServlet.html +0 -1024
- data/doc/TaskJuggler/ReportTable.html +0 -1159
- data/doc/TaskJuggler/ReportTableCell.html +0 -1646
- data/doc/TaskJuggler/ReportTableColumn.html +0 -870
- data/doc/TaskJuggler/ReportTableLegend.html +0 -1040
- data/doc/TaskJuggler/ReportTableLine.html +0 -1047
- data/doc/TaskJuggler/Resource.html +0 -972
- data/doc/TaskJuggler/ResourceListAttribute.html +0 -810
- data/doc/TaskJuggler/ResourceListRE.html +0 -717
- data/doc/TaskJuggler/ResourceScenario.html +0 -2599
- data/doc/TaskJuggler/RichText.html +0 -859
- data/doc/TaskJuggler/RichTextAttribute.html +0 -785
- data/doc/TaskJuggler/RichTextDocument.html +0 -1018
- data/doc/TaskJuggler/RichTextElement.html +0 -1754
- data/doc/TaskJuggler/RichTextFunctionExample.html +0 -779
- data/doc/TaskJuggler/RichTextFunctionHandler.html +0 -730
- data/doc/TaskJuggler/RichTextImage.html +0 -692
- data/doc/TaskJuggler/RichTextIntermediate.html +0 -1265
- data/doc/TaskJuggler/RichTextParser.html +0 -847
- data/doc/TaskJuggler/RichTextScanner.html +0 -1469
- data/doc/TaskJuggler/RichTextSnip.html +0 -980
- data/doc/TaskJuggler/RichTextSyntaxRules.html +0 -2018
- data/doc/TaskJuggler/Scenario.html +0 -636
- data/doc/TaskJuggler/ScenarioData.html +0 -818
- data/doc/TaskJuggler/ScenarioListAttribute.html +0 -713
- data/doc/TaskJuggler/Scoreboard.html +0 -1181
- data/doc/TaskJuggler/SheetHandlerBase.html +0 -1275
- data/doc/TaskJuggler/SheetReceiver.html +0 -1368
- data/doc/TaskJuggler/SheetSender.html +0 -1134
- data/doc/TaskJuggler/Shift.html +0 -731
- data/doc/TaskJuggler/ShiftAssignment.html +0 -988
- data/doc/TaskJuggler/ShiftAssignments.html +0 -1393
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +0 -714
- data/doc/TaskJuggler/ShiftScenario.html +0 -762
- data/doc/TaskJuggler/SimpleQueryExpander.html +0 -713
- data/doc/TaskJuggler/SortListAttribute.html +0 -671
- data/doc/TaskJuggler/SourceFileInfo.html +0 -740
- data/doc/TaskJuggler/StatusSheetReceiver.html +0 -658
- data/doc/TaskJuggler/StatusSheetReport.html +0 -910
- data/doc/TaskJuggler/StatusSheetSender.html +0 -788
- data/doc/TaskJuggler/StringAttribute.html +0 -713
- data/doc/TaskJuggler/SymbolAttribute.html +0 -671
- data/doc/TaskJuggler/SyntaxReference.html +0 -1220
- data/doc/TaskJuggler/TOCEntry.html +0 -816
- data/doc/TaskJuggler/TSResourceRecord.html +0 -712
- data/doc/TaskJuggler/TSTaskRecord.html +0 -724
- data/doc/TaskJuggler/TableColumnDefinition.html +0 -928
- data/doc/TaskJuggler/TableOfContents.html +0 -770
- data/doc/TaskJuggler/TableReport.html +0 -2533
- data/doc/TaskJuggler/Task.html +0 -865
- data/doc/TaskJuggler/TaskDependency.html +0 -772
- data/doc/TaskJuggler/TaskListAttribute.html +0 -753
- data/doc/TaskJuggler/TaskListRE.html +0 -716
- data/doc/TaskJuggler/TaskScenario.html +0 -4959
- data/doc/TaskJuggler/TextFormatter.html +0 -953
- data/doc/TaskJuggler/TextParser.html +0 -1773
- data/doc/TaskJuggler/TextParser/Pattern.html +0 -1717
- data/doc/TaskJuggler/TextParser/Rule.html +0 -1399
- data/doc/TaskJuggler/TextParser/StackElement.html +0 -922
- data/doc/TaskJuggler/TextParser/State.html +0 -995
- data/doc/TaskJuggler/TextParser/StateTransition.html +0 -788
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +0 -691
- data/doc/TaskJuggler/TextParser/TokenDoc.html +0 -722
- data/doc/TaskJuggler/TextReport.html +0 -901
- data/doc/TaskJuggler/TextScanner.html +0 -1482
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +0 -641
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +0 -707
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +0 -704
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +0 -1036
- data/doc/TaskJuggler/TimeSheet.html +0 -1232
- data/doc/TaskJuggler/TimeSheetReceiver.html +0 -655
- data/doc/TaskJuggler/TimeSheetRecord.html +0 -1395
- data/doc/TaskJuggler/TimeSheetReport.html +0 -991
- data/doc/TaskJuggler/TimeSheetSender.html +0 -680
- data/doc/TaskJuggler/TimeSheetSummary.html +0 -935
- data/doc/TaskJuggler/TimeSheets.html +0 -716
- data/doc/TaskJuggler/Tj3AppBase.html +0 -831
- data/doc/TaskJuggler/Tj3Client.html +0 -1477
- data/doc/TaskJuggler/Tj3Daemon.html +0 -884
- data/doc/TaskJuggler/Tj3SheetAppBase.html +0 -738
- data/doc/TaskJuggler/Tj3SsReceiver.html +0 -724
- data/doc/TaskJuggler/Tj3SsSender.html +0 -757
- data/doc/TaskJuggler/Tj3TsReceiver.html +0 -724
- data/doc/TaskJuggler/Tj3TsSender.html +0 -744
- data/doc/TaskJuggler/Tj3TsSummary.html +0 -752
- data/doc/TaskJuggler/TjException.html +0 -672
- data/doc/TaskJuggler/TjTime.html +0 -2807
- data/doc/TaskJuggler/TjpExample.html +0 -877
- data/doc/TaskJuggler/TjpExportRE.html +0 -1598
- data/doc/TaskJuggler/TjpSyntaxRules.html +0 -13611
- data/doc/TaskJuggler/URLParameter.html +0 -671
- data/doc/TaskJuggler/UserManual.html +0 -1188
- data/doc/TaskJuggler/VimSyntax.html +0 -1044
- data/doc/TaskJuggler/WebServer.html +0 -737
- data/doc/TaskJuggler/WelcomePage.html +0 -769
- data/doc/TaskJuggler/WorkingHours.html +0 -1207
- data/doc/TaskJuggler/WorkingHoursAttribute.html +0 -736
- data/doc/TaskJuggler/XMLBlob.html +0 -687
- data/doc/TaskJuggler/XMLComment.html +0 -682
- data/doc/TaskJuggler/XMLDocument.html +0 -774
- data/doc/TaskJuggler/XMLElement.html +0 -942
- data/doc/TaskJuggler/XMLNamedText.html +0 -643
- data/doc/TaskJuggler/XMLText.html +0 -697
- data/doc/index.html +0 -4127
- data/doc/lib/AccountScenario_rb.html +0 -69
- data/doc/lib/Account_rb.html +0 -71
- data/doc/lib/Allocation_rb.html +0 -71
- data/doc/lib/AppConfig_rb.html +0 -71
- data/doc/lib/AttributeBase_rb.html +0 -69
- data/doc/lib/AttributeDefinition_rb.html +0 -67
- data/doc/lib/Attributes_rb.html +0 -83
- data/doc/lib/BatchProcessor_rb.html +0 -71
- data/doc/lib/Booking_rb.html +0 -67
- data/doc/lib/ChargeSet_rb.html +0 -69
- data/doc/lib/Charge_rb.html +0 -69
- data/doc/lib/DataCache_rb.html +0 -71
- data/doc/lib/FileList_rb.html +0 -67
- data/doc/lib/HTMLDocument_rb.html +0 -69
- data/doc/lib/IntervalList_rb.html +0 -69
- data/doc/lib/Interval_rb.html +0 -69
- data/doc/lib/Journal_rb.html +0 -67
- data/doc/lib/KeywordArray_rb.html +0 -67
- data/doc/lib/KeywordDocumentation_rb.html +0 -77
- data/doc/lib/Limits_rb.html +0 -69
- data/doc/lib/LogFile_rb.html +0 -69
- data/doc/lib/Log_rb.html +0 -71
- data/doc/lib/LogicalExpression_rb.html +0 -73
- data/doc/lib/LogicalFunction_rb.html +0 -69
- data/doc/lib/LogicalOperation_rb.html +0 -69
- data/doc/lib/MacroTable_rb.html +0 -73
- data/doc/lib/MessageHandler_rb.html +0 -67
- data/doc/lib/ProjectFileParser_rb.html +0 -77
- data/doc/lib/ProjectFileScanner_rb.html +0 -69
- data/doc/lib/Project_rb.html +0 -113
- data/doc/lib/PropertyList_rb.html +0 -67
- data/doc/lib/PropertySet_rb.html +0 -71
- data/doc/lib/PropertyTreeNode_rb.html +0 -67
- data/doc/lib/Query_rb.html +0 -69
- data/doc/lib/RTFHandlers_rb.html +0 -75
- data/doc/lib/RTFNavigator_rb.html +0 -73
- data/doc/lib/RTFQuery_rb.html +0 -73
- data/doc/lib/RTFReportLink_rb.html +0 -75
- data/doc/lib/RTFReport_rb.html +0 -71
- data/doc/lib/RTFWithQuerySupport_rb.html +0 -69
- data/doc/lib/RealFormat_rb.html +0 -67
- data/doc/lib/ResourceScenario_rb.html +0 -69
- data/doc/lib/Resource_rb.html +0 -71
- data/doc/lib/RichTextDocument_rb.html +0 -73
- data/doc/lib/RichTextElement_rb.html +0 -75
- data/doc/lib/RichTextFunctionExample_rb.html +0 -73
- data/doc/lib/RichTextFunctionHandler_rb.html +0 -67
- data/doc/lib/RichTextParser_rb.html +0 -73
- data/doc/lib/RichTextScanner_rb.html +0 -71
- data/doc/lib/RichTextSnip_rb.html +0 -71
- data/doc/lib/RichTextSyntaxRules_rb.html +0 -67
- data/doc/lib/RichText_rb.html +0 -73
- data/doc/lib/RuntimeConfig_rb.html +0 -69
- data/doc/lib/ScenarioData_rb.html +0 -71
- data/doc/lib/Scenario_rb.html +0 -69
- data/doc/lib/Scoreboard_rb.html +0 -69
- data/doc/lib/SheetHandlerBase_rb.html +0 -75
- data/doc/lib/SheetReceiver_rb.html +0 -79
- data/doc/lib/SheetSender_rb.html +0 -77
- data/doc/lib/ShiftAssignments_rb.html +0 -71
- data/doc/lib/ShiftScenario_rb.html +0 -69
- data/doc/lib/Shift_rb.html +0 -71
- data/doc/lib/SimpleQueryExpander_rb.html +0 -69
- data/doc/lib/SourceFileInfo_rb.html +0 -67
- data/doc/lib/StatusSheetReceiver_rb.html +0 -69
- data/doc/lib/StatusSheetSender_rb.html +0 -69
- data/doc/lib/SyntaxReference_rb.html +0 -75
- data/doc/lib/TOCEntry_rb.html +0 -71
- data/doc/lib/TableColumnDefinition_rb.html +0 -67
- data/doc/lib/TableOfContents_rb.html +0 -71
- data/doc/lib/TaskDependency_rb.html +0 -67
- data/doc/lib/TaskJuggler_rb.html +0 -75
- data/doc/lib/TaskScenario_rb.html +0 -71
- data/doc/lib/Task_rb.html +0 -71
- data/doc/lib/TextFormatter_rb.html +0 -69
- data/doc/lib/TextParser/Pattern_rb.html +0 -71
- data/doc/lib/TextParser/Rule_rb.html +0 -69
- data/doc/lib/TextParser/StackElement_rb.html +0 -69
- data/doc/lib/TextParser/State_rb.html +0 -67
- data/doc/lib/TextParser/TokenDoc_rb.html +0 -67
- data/doc/lib/TextParser_rb.html +0 -79
- data/doc/lib/TextScanner_rb.html +0 -83
- data/doc/lib/TimeSheetReceiver_rb.html +0 -69
- data/doc/lib/TimeSheetSender_rb.html +0 -69
- data/doc/lib/TimeSheetSummary_rb.html +0 -69
- data/doc/lib/TimeSheets_rb.html +0 -67
- data/doc/lib/Tj3AppBase_rb.html +0 -79
- data/doc/lib/Tj3Config_rb.html +0 -71
- data/doc/lib/Tj3SheetAppBase_rb.html +0 -69
- data/doc/lib/TjException_rb.html +0 -67
- data/doc/lib/TjTime_rb.html +0 -71
- data/doc/lib/TjpExample_rb.html +0 -69
- data/doc/lib/TjpSyntaxRules_rb.html +0 -67
- data/doc/lib/URLParameter_rb.html +0 -69
- data/doc/lib/UTF8String_rb.html +0 -67
- data/doc/lib/UserManual_rb.html +0 -79
- data/doc/lib/VimSyntax_rb.html +0 -69
- data/doc/lib/WorkingHours_rb.html +0 -71
- data/doc/lib/XMLDocument_rb.html +0 -69
- data/doc/lib/XMLElement_rb.html +0 -69
- data/doc/lib/daemon/Daemon_rb.html +0 -69
- data/doc/lib/daemon/ProcessIntercom_rb.html +0 -71
- data/doc/lib/daemon/ProjectBroker_rb.html +0 -83
- data/doc/lib/daemon/ProjectServer_rb.html +0 -85
- data/doc/lib/daemon/ReportServer_rb.html +0 -73
- data/doc/lib/daemon/ReportServlet_rb.html +0 -69
- data/doc/lib/daemon/WebServer_rb.html +0 -81
- data/doc/lib/daemon/WelcomePage_rb.html +0 -71
- data/doc/lib/deep_copy_rb.html +0 -67
- data/doc/lib/exchangebug_rb.html +0 -69
- data/doc/lib/reports/CSVFile_rb.html +0 -69
- data/doc/lib/reports/CollisionDetector_rb.html +0 -69
- data/doc/lib/reports/ColumnTable_rb.html +0 -69
- data/doc/lib/reports/GanttChart_rb.html +0 -75
- data/doc/lib/reports/GanttContainer_rb.html +0 -69
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +0 -67
- data/doc/lib/reports/GanttHeader_rb.html +0 -69
- data/doc/lib/reports/GanttLine_rb.html +0 -79
- data/doc/lib/reports/GanttLoadStack_rb.html +0 -69
- data/doc/lib/reports/GanttMilestone_rb.html +0 -69
- data/doc/lib/reports/GanttRouter_rb.html +0 -69
- data/doc/lib/reports/GanttTaskBar_rb.html +0 -69
- data/doc/lib/reports/HTMLGraphics_rb.html +0 -67
- data/doc/lib/reports/Navigator_rb.html +0 -69
- data/doc/lib/reports/NikuReport_rb.html +0 -71
- data/doc/lib/reports/ReportBase_rb.html +0 -67
- data/doc/lib/reports/ReportContext_rb.html +0 -67
- data/doc/lib/reports/ReportTableCell_rb.html +0 -67
- data/doc/lib/reports/ReportTableColumn_rb.html +0 -67
- data/doc/lib/reports/ReportTableLegend_rb.html +0 -67
- data/doc/lib/reports/ReportTableLine_rb.html +0 -69
- data/doc/lib/reports/ReportTable_rb.html +0 -71
- data/doc/lib/reports/Report_rb.html +0 -93
- data/doc/lib/reports/ResourceListRE_rb.html +0 -75
- data/doc/lib/reports/StatusSheetReport_rb.html +0 -69
- data/doc/lib/reports/TableReport_rb.html +0 -77
- data/doc/lib/reports/TaskListRE_rb.html +0 -75
- data/doc/lib/reports/TextReport_rb.html +0 -69
- data/doc/lib/reports/TimeSheetReport_rb.html +0 -69
- data/doc/lib/reports/TjpExportRE_rb.html +0 -69
- data/doc/lib/ruby-signal-bug_rb.html +0 -69
- data/doc/lib/test_rb.html +0 -73
- data/doc/lib/tj3_rb.html +0 -75
- data/doc/lib/tj3client_rb.html +0 -75
- data/doc/lib/tj3d_rb.html +0 -75
- data/doc/lib/tj3man_rb.html +0 -75
- data/doc/lib/tj3ss_receiver_rb.html +0 -71
- data/doc/lib/tj3ss_sender_rb.html +0 -71
- data/doc/lib/tj3ts_receiver_rb.html +0 -71
- data/doc/lib/tj3ts_sender_rb.html +0 -71
- data/doc/lib/tj3ts_summary_rb.html +0 -71
- data/doc/rdoc.css +0 -706
- data/lib/test.rb +0 -19
- data/setup.rb +0 -1585
- data/test/TestSuite/CSV-Reports/genrefs +0 -6
- data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -2922
- data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
- data/test/TestSuite/Scheduler/Correct/Container.html +0 -513
- data/test/TestSuite/Scheduler/Correct/Precedes.html +0 -834
- data/test/TestSuite/Scheduler/Correct/Shift.html +0 -429
- data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
- data/test/TestSuite/Scheduler/Errors/task_underspecified_2.tjp +0 -8
- data/test/TestSuite/Syntax/Correct/ReleasePlan.html +0 -160
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
- data/test/TestSuite/Syntax/Correct/ResourceRoot.html +0 -108
- data/test/TestSuite/Syntax/Correct/niku.html +0 -67
data/CHANGELOG
CHANGED
|
@@ -1,3 +1,118 @@
|
|
|
1
|
+
= Release 0.0.10 (2011-01-31)
|
|
2
|
+
|
|
3
|
+
* Bumping version to 0.0.10
|
|
4
|
+
|
|
5
|
+
0.0.9 was a no-go version.
|
|
6
|
+
* Bumping version to 0.0.9
|
|
7
|
+
* Fix entry scripts.
|
|
8
|
+
|
|
9
|
+
= Release 0.0.9 (2011-01-30)
|
|
10
|
+
|
|
11
|
+
* Bumping version to 0.0.9
|
|
12
|
+
* Executable name and primary Ruby file name should always match.
|
|
13
|
+
* Adding a .gitignore file.
|
|
14
|
+
* Add development dependencies to gem spec file.
|
|
15
|
+
* Fix alertmessages. Don't show overriden old alerts again.
|
|
16
|
+
|
|
17
|
+
If a child had an alert, the parent reset it and another child added
|
|
18
|
+
another green message after that, the old alert was showing up again.
|
|
19
|
+
* Fixing dependency symbols in precursor and follower lists.
|
|
20
|
+
* Supporting listmode option for precursor and follower columns as well.
|
|
21
|
+
* Properly handle part-time workers in Clarity reports.
|
|
22
|
+
* Fixing some layout issues in the manual.
|
|
23
|
+
* Some code consolidation.
|
|
24
|
+
* Include all Clarity projects in Niku reports.
|
|
25
|
+
|
|
26
|
+
Also add projects with 0 effort so they show up in the actual
|
|
27
|
+
reporting page of Clarity.
|
|
28
|
+
* Make 'listmode' options a power of 2.
|
|
29
|
+
* Make 'celltext' also work for calendar column cells.
|
|
30
|
+
* Improving the cell content shortener.
|
|
31
|
+
* Adding new attributes 'listtype' and 'listmode'.
|
|
32
|
+
|
|
33
|
+
These new attributes can be used to customize the lists in report
|
|
34
|
+
table cells.
|
|
35
|
+
* Use accurate width even with icons and tooltips in the table.
|
|
36
|
+
* Column width is now a fixed measure, not a minimum measure.
|
|
37
|
+
* Adding a default landing page for built-in web server.
|
|
38
|
+
* Clarify usage of bookings and scenarios in the manual.
|
|
39
|
+
* Update copyright to 2011.
|
|
40
|
+
* Make web server work again.
|
|
41
|
+
|
|
42
|
+
Reported-by: Bernhard Wiedemann <bwiedemann@gmx.de>
|
|
43
|
+
* Fix crash for "<-query scenario='actual' attribute=...->" queries.
|
|
44
|
+
|
|
45
|
+
Reported-by: Patrick Berry <postgradpat@gmail.com>
|
|
46
|
+
* Fix time-off highlighting at report boundaries.
|
|
47
|
+
|
|
48
|
+
Reported-by: Tom Schutter <t.schutter@comcast.net>
|
|
49
|
+
* vacation is a cumulative attribute. Don't issue a warning for multiple use.
|
|
50
|
+
* Fixing "Overwriting a previously provided value" crashes.
|
|
51
|
+
|
|
52
|
+
Reported-by: Bernhard Wiedemann <bwiedemann@gmx.de>
|
|
53
|
+
* Fixing progress meter off-by-one bug.
|
|
54
|
+
|
|
55
|
+
For long labels the progress meter started one char too far right.
|
|
56
|
+
|
|
57
|
+
Reported-by: Tom Schutter <tschutter@corelogic.com>
|
|
58
|
+
* Fix handling of container tasks with dependencies.
|
|
59
|
+
|
|
60
|
+
This bug was introduced by the recent onstart/onend changes.
|
|
61
|
+
|
|
62
|
+
Reported-by: Sam Elstob <samelstob@gmail.com>
|
|
63
|
+
* Prevent crashes in report generator when using -f option with tj3.
|
|
64
|
+
* Add error message for reports without a file name.
|
|
65
|
+
* Second part of onstart/onend fixes.
|
|
66
|
+
* Fix serious problem with 'onstart' and 'onend' dependencies.
|
|
67
|
+
|
|
68
|
+
The parser was too permissive and some illegal cases slipped through.
|
|
69
|
+
Tasks with start-start deps must be ASAP and end-end tasks must be
|
|
70
|
+
ALAP.
|
|
71
|
+
|
|
72
|
+
Reported-by: Bernd Wiedemann <bwiedemann@gmx.de>
|
|
73
|
+
* Add warning if an attribute is used twice in the same context.
|
|
74
|
+
|
|
75
|
+
This is to prevent accidental overwrites of attributes in bigger
|
|
76
|
+
scopes. This will also alert users that first assign a value to a
|
|
77
|
+
derived scenario and then to the parent scenario.
|
|
78
|
+
* Fixing a serious flaw in the handling of inherited scenario specific attributes.
|
|
79
|
+
|
|
80
|
+
This fix will potentially change the result of existing projects that
|
|
81
|
+
use inheritable attributes in combination with derived scenarios. The
|
|
82
|
+
handling of these attributes was broken and derived scenarios used
|
|
83
|
+
wrong attribute values.
|
|
84
|
+
* Refactored the ProjectBroker API to make it cleaner.
|
|
85
|
+
* caption, epilog, headline, prolog and title are now inheritable report attributes
|
|
86
|
+
* tj3client now supports a --format option to request a certain output format.
|
|
87
|
+
* Properly limit bookings in export report to report period.
|
|
88
|
+
|
|
89
|
+
Reported-by: Magnus Wiklund (wiklund.magnus@comcast.net)
|
|
90
|
+
* Adding spec for ProjectBrowser.
|
|
91
|
+
|
|
92
|
+
Just a first draft.
|
|
93
|
+
* Added a rake task to run the RSpec tests.
|
|
94
|
+
* Fixing completion bars in Gantt charts.
|
|
95
|
+
|
|
96
|
+
The bars were showing random values instead of the correct completion
|
|
97
|
+
degree.
|
|
98
|
+
* Show off-duty periods for task lines in Gantt charts.
|
|
99
|
+
* Don't show global working hour zones for group resources in Gantt
|
|
100
|
+
charts.
|
|
101
|
+
* Adding more examples for limits to the manual.
|
|
102
|
+
* Fix a typo in the manual.
|
|
103
|
+
|
|
104
|
+
Added some comments to the code.
|
|
105
|
+
* Explaining use of tool tips in the tutorial.
|
|
106
|
+
* Fixing 'taskprefix' attribute for include files.
|
|
107
|
+
|
|
108
|
+
Reported-by: Sam Elstob <samelstob@gmail.com>
|
|
109
|
+
* Ensure deterministic order of projects and resources in Niku reports.
|
|
110
|
+
* Adding test case for niku reports.
|
|
111
|
+
* Move CSV reference reports into refs directory.
|
|
112
|
+
* Include vacation time for each resource in Niku reports.
|
|
113
|
+
* Generate warnings if a non-supported format is requested for a report.
|
|
114
|
+
* Show releases for last to first in CHANGELOG
|
|
115
|
+
|
|
1
116
|
= Release 0.0.8 (2010-11-24)
|
|
2
117
|
|
|
3
118
|
* Bumping version to 0.0.8
|
data/README.rdoc
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
= About {TaskJuggler III}[http://www.taskjuggler.org]
|
|
2
|
+
|
|
3
|
+
TaskJuggler is a modern and powerful, Free and Open Source Software project
|
|
4
|
+
management tool. Its new approach to project planing and tracking is more
|
|
5
|
+
flexible and superior to the commonly used Gantt chart editing tools.
|
|
6
|
+
|
|
7
|
+
TaskJuggler is project management software for serious project managers. It
|
|
8
|
+
covers the complete spectrum of project management tasks from the first idea
|
|
9
|
+
to the completion of the project. It assists you during project scoping,
|
|
10
|
+
resource assignment, cost and revenue planing, risk and communication
|
|
11
|
+
management.
|
|
12
|
+
|
|
13
|
+
TaskJuggler provides an optimizing scheduler that computes your project time
|
|
14
|
+
lines and resource assignments based on the project outline and the
|
|
15
|
+
constraints that you have provided. The built-in resource balancer and
|
|
16
|
+
consistency checker offload you from having to worry about irrelevant details
|
|
17
|
+
and ring the alarm if the project gets out of hand. The flexible
|
|
18
|
+
as-many-details-as-necessary approach allows you to plan your project as you
|
|
19
|
+
go, making it also ideal for new management strategies such as Extreme
|
|
20
|
+
Programming and Agile Project Management.
|
|
21
|
+
|
|
22
|
+
If you are about to build a skyscraper or just want to put together the
|
|
23
|
+
release schedule of your open source project, TaskJuggler is the right
|
|
24
|
+
tool for you. If you just want to draw nice looking Gantt charts to impress
|
|
25
|
+
your boss or your investors, TaskJuggler might not be right for you. You
|
|
26
|
+
can of course create nice looking Gantt charts. But it takes a little more
|
|
27
|
+
effort to master its power. If you are up for this, TaskJuggler will
|
|
28
|
+
become a companion that you don't want to miss anymore.
|
|
29
|
+
|
|
30
|
+
TaskJuggler is written in {Ruby}[http://www.ruby-lang.org/en/] and should
|
|
31
|
+
be easily installable and usable on all popular operating systems. It may
|
|
32
|
+
sound surprising at first, but this software does not need a graphical user
|
|
33
|
+
interface. A command shell, a plain text editor (no word processor!) and a web
|
|
34
|
+
browser is all you need for your work.
|
|
35
|
+
|
|
36
|
+
TaskJuggler has not yet been released as a stable version. The primary
|
|
37
|
+
reason is that we don't want to freeze the syntax before it has been used by a
|
|
38
|
+
larger audience. By now, changes should be small, but we cannot yet rule out
|
|
39
|
+
minor compatibility issues when upgrading to a newer version. We also have a
|
|
40
|
+
fairly small test suite. It's quite possible, that you will run into a bug or
|
|
41
|
+
two. Please report it into our {issue
|
|
42
|
+
tracker}[https://github.com/taskjuggler/TaskJuggler/issues].
|
|
43
|
+
|
|
44
|
+
= Features and Highlights
|
|
45
|
+
|
|
46
|
+
* Manages tasks, resources and accounts of your project
|
|
47
|
+
* Automatic resource leveling and tasks conflict resolution
|
|
48
|
+
* Comprehensive and flexible reports so you can find the information you need when you need it
|
|
49
|
+
* Project tracking and status reporting with dashboard support
|
|
50
|
+
* Time and status sheet reporting infrastructure
|
|
51
|
+
* Unlimited number of scenarios (baselines) of the same project for what-if analysis
|
|
52
|
+
* CSV data export for exchange with Office Suites
|
|
53
|
+
* Projects can be combined to larger projects
|
|
54
|
+
* Multiple project managers can work on the same project
|
|
55
|
+
* Flexible working hours and vacation handling
|
|
56
|
+
* Support for shift working
|
|
57
|
+
* Multiple time zone support
|
|
58
|
+
* Tasks may have initial costs, finishing costs
|
|
59
|
+
* Resources may have running costs
|
|
60
|
+
* Support for profit/loss analysis
|
|
61
|
+
* HTML reports for Web based communication
|
|
62
|
+
* Built-in web server for dynamic and interactive reports
|
|
63
|
+
* Powerful project description syntax with macro support
|
|
64
|
+
* Support for central resource allocation database
|
|
65
|
+
* Scales well on multi-core or multi-CPU systems
|
|
66
|
+
* Runs on all Linux, Unix, Windows, MacOS and several other operating systems
|
|
67
|
+
* Simple installation
|
|
68
|
+
|
|
69
|
+
= Installation
|
|
70
|
+
|
|
71
|
+
Installation instructions can be found {here}[http://www.taskjuggler.org/tj3/manual/Installation.html#Installation].
|
|
72
|
+
|
|
73
|
+
= Introduction and Tutorial
|
|
74
|
+
|
|
75
|
+
To learn more about how to use TaskJuggler please see the {user
|
|
76
|
+
manual}[http://www.taskjuggler.org/tj3/manual/index.html]. It also contains a
|
|
77
|
+
{tutorial}[http://www.taskjuggler.org/tj3/manual/Tutorial.html#The_Tutorial_Your_first_Project]
|
|
78
|
+
to get you started. It will tell you how to generate HTML reports
|
|
79
|
+
like {these}[http://www.taskjuggler.org/tj3/examples/Overview.html]
|
|
80
|
+
from such a {project
|
|
81
|
+
description}[http://www.taskjuggler.org/tj3/examples/tutorial.tjp].
|
|
82
|
+
|
|
83
|
+
= Getting Help and reporting Bugs
|
|
84
|
+
|
|
85
|
+
There are several mailing list for TaskJuggler users and developers.
|
|
86
|
+
Please see {this page}[http://www.taskjuggler.org/forum.php] for
|
|
87
|
+
details. If you have a question about TaskJuggler usage, the user
|
|
88
|
+
list is the best place to go. Please remain subscribed and help other
|
|
89
|
+
users when you get more proficient in TaskJuggler.
|
|
90
|
+
|
|
91
|
+
If you think that you have found a bug in the software, please the
|
|
92
|
+
the {bug reporting
|
|
93
|
+
guidelines}[http://www.taskjuggler.org/tj3/manual/Reporting_Bugs.html#Reporting_Bugs_and_Sending_Feedback].
|
|
94
|
+
|
|
95
|
+
= Copyright and License
|
|
96
|
+
|
|
97
|
+
TaskJuggler is (c) 2006, 2007, 2008, 2009, 2010, 2011 by Chris Schlaeger <chris@linux.com>
|
|
98
|
+
|
|
99
|
+
This program is free software; you can redistribute it and/or modify
|
|
100
|
+
it under the terms of {version 2 of the GNU General Public
|
|
101
|
+
License}[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html] as
|
|
102
|
+
published by the Free Software Foundation. You accept the terms of
|
|
103
|
+
this license by distributing or using this software.
|
|
104
|
+
|
|
105
|
+
TaskJuggler[http://www.taskjuggler.org] is a trademark of Chris Schlaeger.
|
data/examples/tutorial.tjp
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
* description of the various syntax elements.
|
|
7
7
|
*/
|
|
8
8
|
project acso "Accounting Software" 2002-01-16 +4m {
|
|
9
|
+
# Set the default time zone for the project. If not specified, UTC
|
|
10
|
+
# is used.
|
|
11
|
+
timezone "Europe/Paris"
|
|
9
12
|
# Hide the clock time. Only show the date.
|
|
10
13
|
timeformat "%Y-%m-%d"
|
|
11
14
|
# Use US format for numbers
|
|
@@ -92,10 +95,10 @@ resource misc "The Others" {
|
|
|
92
95
|
limits { dailymax 6.4h }
|
|
93
96
|
rate 310.0
|
|
94
97
|
}
|
|
95
|
-
resource doc "Dim Sung" {
|
|
98
|
+
resource doc "Dim Sung" {
|
|
96
99
|
email "sung@crappysoftware.com"
|
|
97
100
|
Phone "x482"
|
|
98
|
-
rate 300.0
|
|
101
|
+
rate 300.0
|
|
99
102
|
vacation 2002-03-11 - 2002-03-16
|
|
100
103
|
}
|
|
101
104
|
|
|
@@ -159,7 +162,7 @@ task AcSo "Accounting Software" {
|
|
|
159
162
|
details -8<-
|
|
160
163
|
We have already contacted the vendor and are now waiting for
|
|
161
164
|
their advise.
|
|
162
|
-
->8-
|
|
165
|
+
->8-
|
|
163
166
|
}
|
|
164
167
|
}
|
|
165
168
|
|
|
@@ -242,7 +245,9 @@ task AcSo "Accounting Software" {
|
|
|
242
245
|
task start "Project start" {
|
|
243
246
|
# A task that has no duration is a milestone. It only needs a
|
|
244
247
|
# start or end criterion. All other tasks depend on this task.
|
|
245
|
-
|
|
248
|
+
# Here we use the built-in macro ${projectstart} to align the
|
|
249
|
+
# start of the task with the above specified project time frame.
|
|
250
|
+
start ${projectstart}
|
|
246
251
|
# For some reason the actual start of the project got delayed.
|
|
247
252
|
# We record this, so that we can compare the planned run to the
|
|
248
253
|
# delayed run of the project.
|
|
@@ -294,15 +299,15 @@ macro TaskTip [
|
|
|
294
299
|
'''End: ''' <-query attribute='end'->
|
|
295
300
|
----
|
|
296
301
|
'''Resources:'''
|
|
297
|
-
|
|
302
|
+
|
|
298
303
|
<-query attribute='resources'->
|
|
299
304
|
----
|
|
300
305
|
'''Precursors: '''
|
|
301
|
-
|
|
306
|
+
|
|
302
307
|
<-query attribute='precursors'->
|
|
303
308
|
----
|
|
304
309
|
'''Followers: '''
|
|
305
|
-
|
|
310
|
+
|
|
306
311
|
<-query attribute='followers'->
|
|
307
312
|
->8-
|
|
308
313
|
]
|
|
@@ -330,7 +335,7 @@ textreport frame "" {
|
|
|
330
335
|
<[report id="status.ongoing"]>
|
|
331
336
|
----
|
|
332
337
|
<[report id="status.future"]>
|
|
333
|
-
->8-
|
|
338
|
+
->8-
|
|
334
339
|
}
|
|
335
340
|
|
|
336
341
|
textreport development "Development" {
|
|
@@ -359,13 +364,13 @@ textreport frame "" {
|
|
|
359
364
|
taskreport overview "" {
|
|
360
365
|
header -8<-
|
|
361
366
|
=== Project Overview ===
|
|
362
|
-
|
|
367
|
+
|
|
363
368
|
The project is structured into 3 phases.
|
|
364
|
-
|
|
369
|
+
|
|
365
370
|
# Specification
|
|
366
371
|
# <-reportlink id='frame.development'->
|
|
367
372
|
# Testing
|
|
368
|
-
|
|
373
|
+
|
|
369
374
|
=== Original Project Plan ===
|
|
370
375
|
->8-
|
|
371
376
|
columns hierarchindex,
|
|
@@ -384,9 +389,9 @@ taskreport overview "" {
|
|
|
384
389
|
|
|
385
390
|
All project phases are properly staffed. See [[ResourceGraph]] for
|
|
386
391
|
detailed resource allocations.
|
|
387
|
-
|
|
392
|
+
|
|
388
393
|
=== Current Status ===
|
|
389
|
-
|
|
394
|
+
|
|
390
395
|
The project started off with a delay of 4 days. This slightly affected
|
|
391
396
|
the original schedule. See [[Deliveries]] for the impact on the
|
|
392
397
|
delivery dates.
|
|
@@ -408,12 +413,12 @@ taskreport status "" {
|
|
|
408
413
|
alert { tooltip plan.journal
|
|
409
414
|
!= '' "<-query attribute='journal'->" width 150 },
|
|
410
415
|
status { width 150 }
|
|
411
|
-
scenarios delayed
|
|
416
|
+
scenarios delayed
|
|
412
417
|
|
|
413
418
|
taskreport dashboard "" {
|
|
414
419
|
headline "Project Dashboard (<-query attribute='now'->)"
|
|
415
420
|
columns name { title "Task" ${AlertColor} width 200},
|
|
416
|
-
resources { width 200 ${AlertColor}
|
|
421
|
+
resources { width 200 ${AlertColor}
|
|
417
422
|
listtype bullets listmode 2
|
|
418
423
|
start ${projectstart} end ${projectend} },
|
|
419
424
|
alerttrend { title "Trend" ${AlertColor} width 50 },
|
|
@@ -451,7 +456,7 @@ taskreport development "" {
|
|
|
451
456
|
taskreport deliveries "" {
|
|
452
457
|
headline "Project Deliverables"
|
|
453
458
|
columns hierarchindex, name, start, end, note { width 150 }, complete,
|
|
454
|
-
chart { ${TaskTip} }
|
|
459
|
+
chart { ${TaskTip} }
|
|
455
460
|
taskroot AcSo.deliveries
|
|
456
461
|
hideresource 1
|
|
457
462
|
scenarios plan, delayed
|
data/gem_spec.rb
CHANGED
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
#!/usr/bin/env ruby -w
|
|
2
|
+
# encoding: UTF-8
|
|
3
|
+
#
|
|
4
|
+
# = AccountScenario.rb -- The TaskJuggler III Project Management Software
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
|
8
|
+
#
|
|
9
|
+
# This program is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of version 2 of the GNU General Public License as
|
|
11
|
+
# published by the Free Software Foundation.
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
# This class is an implementation of the classic UNIX diff functionality. It's
|
|
15
|
+
# based on an original implementation by Lars Christensen, which based his
|
|
16
|
+
# version on the Perl Algorithm::Diff implementation. This is largly a
|
|
17
|
+
# from-scratch implementation that tries to have a less intrusive and more
|
|
18
|
+
# user-friendly interface. But some code fragments are very similar to the
|
|
19
|
+
# origninal and are copyright (C) 2001 Lars Christensen.
|
|
20
|
+
class Diff
|
|
21
|
+
|
|
22
|
+
# A Hunk stores all information about a contiguous change of the destination
|
|
23
|
+
# list. It stores the inserted and deleted values as well as their positions
|
|
24
|
+
# in the A and B list.
|
|
25
|
+
class Hunk
|
|
26
|
+
|
|
27
|
+
attr_reader :insertValues, :deleteValues
|
|
28
|
+
attr_accessor :aIdx, :bIdx
|
|
29
|
+
|
|
30
|
+
# Create a new Hunk. _aIdx_ is the index in the A list. _bIdx_ is the
|
|
31
|
+
# index in the B list.
|
|
32
|
+
def initialize(aIdx, bIdx)
|
|
33
|
+
@aIdx = aIdx
|
|
34
|
+
# A list of values to be deleted from the A list starting at aIdx.
|
|
35
|
+
@deleteValues = []
|
|
36
|
+
|
|
37
|
+
@bIdx = bIdx
|
|
38
|
+
# A list of values to be inserted into the B list at bIdx.
|
|
39
|
+
@insertValues = []
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Has the Hunk any values to insert?
|
|
43
|
+
def insert?
|
|
44
|
+
!@insertValues.empty?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Has the Hunk any values to be deleted?
|
|
48
|
+
def delete?
|
|
49
|
+
!@deleteValues.empty?
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def to_s
|
|
53
|
+
str = ''
|
|
54
|
+
showSeparator = false
|
|
55
|
+
if insert? && delete?
|
|
56
|
+
str << "#{aRange}c#{bRange}\n"
|
|
57
|
+
showSeparator = true
|
|
58
|
+
elsif insert?
|
|
59
|
+
str << "#{aIdx}a#{bRange}\n"
|
|
60
|
+
else
|
|
61
|
+
str << "#{aRange}d#{bIdx}\n"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
@deleteValues.each { |value| str << "< #{value}\n" }
|
|
65
|
+
str << "---\n" if showSeparator
|
|
66
|
+
@insertValues.each { |value| str << "> #{value}\n" }
|
|
67
|
+
|
|
68
|
+
str
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def inspect
|
|
72
|
+
puts to_s
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
private
|
|
76
|
+
|
|
77
|
+
def aRange
|
|
78
|
+
range(@aIdx + 1, @aIdx + @deleteValues.length)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def bRange
|
|
82
|
+
range(@bIdx + 1, @bIdx + @insertValues.length)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def range(startIdx, endIdx)
|
|
86
|
+
if (startIdx == endIdx)
|
|
87
|
+
"#{startIdx}"
|
|
88
|
+
else
|
|
89
|
+
"#{startIdx},#{endIdx}"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Create a new Diff between the _a_ list and _b_ list.
|
|
96
|
+
def initialize(a, b)
|
|
97
|
+
@hunks = []
|
|
98
|
+
diff(a, b)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Modify the _values_ list according to the stored diff information.
|
|
102
|
+
def patch(values)
|
|
103
|
+
res = values.dup
|
|
104
|
+
@hunks.each do |hunk|
|
|
105
|
+
if hunk.delete?
|
|
106
|
+
res.slice!(hunk.bIdx, hunk.deleteValues.length)
|
|
107
|
+
end
|
|
108
|
+
if hunk.insert?
|
|
109
|
+
res.insert(hunk.bIdx, *hunk.insertValues)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
res
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def editScript
|
|
116
|
+
script = []
|
|
117
|
+
@hunks.each do |hunk|
|
|
118
|
+
if hunk.delete?
|
|
119
|
+
script << "#{hunk.aIdx + 1}d#{hunk.deleteValues.length}"
|
|
120
|
+
end
|
|
121
|
+
if hunk.insert?
|
|
122
|
+
script << "#{hunk.bIdx + 1}i#{hunk.insertValues.join(',')}"
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
script
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Return the diff list as standard UNIX diff output.
|
|
130
|
+
def to_s
|
|
131
|
+
str = ''
|
|
132
|
+
@hunks.each { |hunk| str << hunk.to_s }
|
|
133
|
+
str
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def inspect
|
|
137
|
+
puts to_s
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
private
|
|
141
|
+
|
|
142
|
+
def diff(a, b)
|
|
143
|
+
indexTranslationTable = computeIndexTranslations(a, b)
|
|
144
|
+
|
|
145
|
+
ai = bi = 0
|
|
146
|
+
tableLength = indexTranslationTable.length
|
|
147
|
+
while ai < tableLength do
|
|
148
|
+
# Check if value from index ai should be included in B.
|
|
149
|
+
destIndex = indexTranslationTable[ai]
|
|
150
|
+
if destIndex
|
|
151
|
+
# Yes, it needs to go to position destIndex. All values from bi to
|
|
152
|
+
# newIndex - 1 are new values in B, not in A.
|
|
153
|
+
while bi < destIndex
|
|
154
|
+
insertElement(ai, bi, b[bi])
|
|
155
|
+
bi += 1
|
|
156
|
+
end
|
|
157
|
+
bi += 1
|
|
158
|
+
else
|
|
159
|
+
# No, it's not in B. Put it onto the deletion list.
|
|
160
|
+
deleteElement(ai, bi, a[ai])
|
|
161
|
+
end
|
|
162
|
+
ai += 1
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# The remainder of the A list has to be deleted.
|
|
166
|
+
while ai < a.length
|
|
167
|
+
deleteElement(ai, bi, a[ai])
|
|
168
|
+
ai += 1
|
|
169
|
+
end
|
|
170
|
+
# The remainder of the B list are new values.
|
|
171
|
+
while bi < b.length
|
|
172
|
+
insertElement(ai, bi, b[bi])
|
|
173
|
+
bi += 1
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def computeIndexTranslations(a, b)
|
|
178
|
+
aEndIdx = a.length - 1
|
|
179
|
+
bEndIdx = b.length - 1
|
|
180
|
+
startIdx = 0
|
|
181
|
+
indexTranslationTable = []
|
|
182
|
+
|
|
183
|
+
while (startIdx < aEndIdx && startIdx < bEndIdx &&
|
|
184
|
+
a[startIdx] == b[startIdx])
|
|
185
|
+
indexTranslationTable[startIdx] = startIdx
|
|
186
|
+
startIdx += 1
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
while (aEndIdx >= startIdx && bEndIdx >= startIdx &&
|
|
190
|
+
a[aEndIdx] == b[bEndIdx])
|
|
191
|
+
indexTranslationTable[aEndIdx] = bEndIdx
|
|
192
|
+
aEndIdx -= 1
|
|
193
|
+
bEndIdx -= 1
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
return indexTranslationTable if startIdx >= aEndIdx && startIdx >= bEndIdx
|
|
197
|
+
|
|
198
|
+
links = []
|
|
199
|
+
thresholds = []
|
|
200
|
+
bHashesToIndicies = reverseHash(b, startIdx, bEndIdx)
|
|
201
|
+
|
|
202
|
+
startIdx.upto(aEndIdx) do |ai|
|
|
203
|
+
aValue = a[ai]
|
|
204
|
+
next unless bHashesToIndicies.has_key? aValue
|
|
205
|
+
|
|
206
|
+
k = nil
|
|
207
|
+
bHashesToIndicies[aValue].each do |bi|
|
|
208
|
+
if k && (thresholds[k] > bi) && (thresholds[k - 1] < bi)
|
|
209
|
+
thresholds[k] = bi
|
|
210
|
+
else
|
|
211
|
+
k = replaceNextLarger(thresholds, bi, k)
|
|
212
|
+
end
|
|
213
|
+
links[k] = [ k == 0 ? nil : links[k - 1], ai, bi ] if k
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
if !thresholds.empty?
|
|
218
|
+
link = links[thresholds.length - 1]
|
|
219
|
+
while link
|
|
220
|
+
indexTranslationTable[link[1]] = link[2]
|
|
221
|
+
link = link[0]
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
return indexTranslationTable
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def reverseHash(values, startIdx, endIdx)
|
|
229
|
+
hash = {}
|
|
230
|
+
startIdx.upto(endIdx) do |i|
|
|
231
|
+
element = values[i]
|
|
232
|
+
if hash.has_key?(element)
|
|
233
|
+
hash[element].insert(0, i)
|
|
234
|
+
else
|
|
235
|
+
hash[element] = [ i ]
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
hash
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def replaceNextLarger(ary, value, high = nil)
|
|
243
|
+
high ||= ary.length
|
|
244
|
+
if ary.empty? || value > ary[-1]
|
|
245
|
+
ary.push value
|
|
246
|
+
return high
|
|
247
|
+
end
|
|
248
|
+
low = 0
|
|
249
|
+
while low < high
|
|
250
|
+
index = (high + low) / 2
|
|
251
|
+
found = ary[index]
|
|
252
|
+
return nil if value == found
|
|
253
|
+
|
|
254
|
+
if value > found
|
|
255
|
+
low = index + 1
|
|
256
|
+
else
|
|
257
|
+
high = index
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
ary[low] = value
|
|
262
|
+
|
|
263
|
+
low
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
def deleteElement(aIdx, bIdx, value)
|
|
267
|
+
if @hunks.empty? ||
|
|
268
|
+
@hunks.last.aIdx + @hunks.last.deleteValues.length != aIdx
|
|
269
|
+
@hunks << (hunk = Hunk.new(aIdx, bIdx))
|
|
270
|
+
else
|
|
271
|
+
hunk = @hunks.last
|
|
272
|
+
end
|
|
273
|
+
hunk.deleteValues << value
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
def insertElement(aIdx, bIdx, value)
|
|
277
|
+
if @hunks.empty? ||
|
|
278
|
+
@hunks.last.bIdx + @hunks.last.insertValues.length != bIdx
|
|
279
|
+
@hunks << (hunk = Hunk.new(aIdx, bIdx))
|
|
280
|
+
else
|
|
281
|
+
hunk = @hunks.last
|
|
282
|
+
end
|
|
283
|
+
hunk.insertValues << value
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
module Diffable
|
|
289
|
+
|
|
290
|
+
def diff(b)
|
|
291
|
+
Diff.new(self, b)
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
def patch(diff)
|
|
295
|
+
diff.patch(self)
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
module DiffableString
|
|
301
|
+
|
|
302
|
+
def diff(b)
|
|
303
|
+
split("\n").extend(Diffable).diff(b.split("\n"))
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
def patch(hunks)
|
|
307
|
+
split("\n").extend(Diffable).patch(hunks).join("\n") + "\n"
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
end
|
|
311
|
+
|