taskjuggler 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +44 -0
- data/bin/tj3webd +4 -0
- data/data/css/tjreport.css +14 -5
- data/data/tjp.vim +22 -7
- data/examples/Fedora-20/reports.tji +2 -4
- data/examples/Scrum/Product Burndown.csv +26 -0
- data/examples/Scrum/Sprint 1 Burndown.csv +26 -0
- data/examples/Scrum/Sprint 2 Burndown.csv +26 -0
- data/examples/Scrum/Sprint 3 Burndown.csv +26 -0
- data/examples/Scrum/scrum.tjp +141 -0
- data/examples/Tutorial/tutorial.tjp +13 -7
- data/lib/taskjuggler/Attributes.rb +2 -3
- data/lib/taskjuggler/HTMLDocument.rb +25 -18
- data/lib/taskjuggler/Journal.rb +85 -65
- data/lib/taskjuggler/KeywordDocumentation.rb +25 -13
- data/lib/taskjuggler/LeaveList.rb +1 -1
- data/lib/taskjuggler/Limits.rb +3 -5
- data/lib/taskjuggler/MessageHandler.rb +173 -19
- data/lib/taskjuggler/Painter.rb +75 -0
- data/lib/taskjuggler/Painter/BasicShapes.rb +76 -0
- data/lib/taskjuggler/Painter/Color.rb +273 -0
- data/lib/taskjuggler/Painter/Element.rb +56 -0
- data/lib/taskjuggler/Painter/FontData.rb +221 -0
- data/lib/taskjuggler/Painter/FontMetrics.rb +125 -0
- data/lib/taskjuggler/Painter/FontMetricsData.rb +151 -0
- data/lib/taskjuggler/Painter/Group.rb +77 -0
- data/lib/taskjuggler/Painter/Points.rb +47 -0
- data/lib/taskjuggler/Painter/Primitives.rb +100 -0
- data/lib/taskjuggler/Painter/SVGSupport.rb +36 -0
- data/lib/taskjuggler/Painter/Text.rb +36 -0
- data/lib/taskjuggler/Project.rb +46 -29
- data/lib/taskjuggler/ProjectFileParser.rb +24 -22
- data/lib/taskjuggler/ProjectFileScanner.rb +2 -2
- data/lib/taskjuggler/PropertyTreeNode.rb +26 -34
- data/lib/taskjuggler/Query.rb +8 -5
- data/lib/taskjuggler/RealFormat.rb +3 -0
- data/lib/taskjuggler/Resource.rb +3 -5
- data/lib/taskjuggler/ResourceScenario.rb +19 -7
- data/lib/taskjuggler/RichText.rb +4 -6
- data/lib/taskjuggler/RichText/FunctionExample.rb +1 -1
- data/lib/taskjuggler/RichText/FunctionHandler.rb +5 -6
- data/lib/taskjuggler/RichText/Parser.rb +4 -6
- data/lib/taskjuggler/RichText/RTFNavigator.rb +1 -1
- data/lib/taskjuggler/RichText/RTFQuery.rb +2 -3
- data/lib/taskjuggler/RichText/RTFReport.rb +1 -1
- data/lib/taskjuggler/RichText/RTFReportLink.rb +1 -2
- data/lib/taskjuggler/RichText/RTFWithQuerySupport.rb +1 -1
- data/lib/taskjuggler/RichText/Scanner.rb +6 -6
- data/lib/taskjuggler/RichText/Snip.rb +1 -2
- data/lib/taskjuggler/RuntimeConfig.rb +9 -6
- data/lib/taskjuggler/ScenarioData.rb +4 -3
- data/lib/taskjuggler/Scoreboard.rb +6 -0
- data/lib/taskjuggler/SheetHandlerBase.rb +25 -8
- data/lib/taskjuggler/SimpleQueryExpander.rb +14 -5
- data/lib/taskjuggler/SyntaxReference.rb +1 -2
- data/lib/taskjuggler/TableColumnSorter.rb +84 -0
- data/lib/taskjuggler/Task.rb +3 -5
- data/lib/taskjuggler/TaskJuggler.rb +36 -29
- data/lib/taskjuggler/TaskScenario.rb +154 -66
- data/lib/taskjuggler/TextParser.rb +24 -17
- data/lib/taskjuggler/TextParser/Scanner.rb +16 -11
- data/lib/taskjuggler/TextParser/SourceFileInfo.rb +20 -15
- data/lib/taskjuggler/TimeSheets.rb +6 -12
- data/lib/taskjuggler/Tj3AppBase.rb +35 -16
- data/lib/taskjuggler/Tj3Config.rb +1 -1
- data/lib/taskjuggler/TjpSyntaxRules.rb +239 -49
- data/lib/taskjuggler/XMLElement.rb +9 -2
- data/lib/taskjuggler/apps/Tj3.rb +43 -37
- data/lib/taskjuggler/apps/Tj3Client.rb +62 -112
- data/lib/taskjuggler/apps/Tj3Daemon.rb +66 -29
- data/lib/taskjuggler/apps/Tj3Man.rb +5 -5
- data/lib/taskjuggler/apps/Tj3SsReceiver.rb +10 -13
- data/lib/taskjuggler/apps/Tj3SsSender.rb +13 -16
- data/lib/taskjuggler/apps/Tj3TsReceiver.rb +10 -13
- data/lib/taskjuggler/apps/Tj3TsSender.rb +12 -15
- data/lib/taskjuggler/apps/Tj3TsSummary.rb +12 -15
- data/lib/taskjuggler/apps/Tj3WebD.rb +99 -0
- data/lib/taskjuggler/daemon/Daemon.rb +50 -10
- data/lib/taskjuggler/daemon/DaemonConnector.rb +127 -0
- data/lib/taskjuggler/daemon/ProcessIntercom.rb +36 -21
- data/lib/taskjuggler/daemon/ProjectBroker.rb +122 -112
- data/lib/taskjuggler/daemon/ProjectServer.rb +78 -46
- data/lib/taskjuggler/daemon/ReportServer.rb +52 -28
- data/lib/taskjuggler/daemon/ReportServlet.rb +92 -21
- data/lib/taskjuggler/daemon/WebServer.rb +75 -22
- data/lib/taskjuggler/daemon/WelcomePage.rb +1 -0
- data/lib/taskjuggler/reports/AccountListRE.rb +3 -3
- data/lib/taskjuggler/reports/CSVFile.rb +9 -2
- data/lib/taskjuggler/reports/ChartPlotter.rb +453 -0
- data/lib/taskjuggler/reports/Navigator.rb +1 -0
- data/lib/taskjuggler/reports/NikuReport.rb +4 -4
- data/lib/taskjuggler/reports/Report.rb +6 -18
- data/lib/taskjuggler/reports/ReportBase.rb +9 -9
- data/lib/taskjuggler/reports/ReportContext.rb +2 -2
- data/lib/taskjuggler/reports/StatusSheetReport.rb +6 -6
- data/lib/taskjuggler/reports/TableReport.rb +24 -15
- data/lib/taskjuggler/reports/TimeSheetReport.rb +5 -5
- data/lib/taskjuggler/reports/TraceReport.rb +251 -0
- data/lib/tj3webd.rb +17 -0
- data/manual/Day_To_Day_Juggling +10 -3
- data/manual/Installation +38 -19
- data/manual/Software +25 -19
- data/manual/Tutorial +119 -110
- data/manual/html/Day_To_Day_Juggling.html +7 -5
- data/manual/html/Getting_Started.html +4 -4
- data/manual/html/How_To_Contribute.html +4 -4
- data/manual/html/Installation.html +19 -11
- data/manual/html/Intro.html +4 -4
- data/manual/html/Reporting_Bugs.html +4 -4
- data/manual/html/Rich_Text_Attributes.html +4 -4
- data/manual/html/Software.html +15 -11
- data/manual/html/TaskJuggler_2x_Migration.html +4 -4
- data/manual/html/TaskJuggler_Internals.html +4 -4
- data/manual/html/The_TaskJuggler_Syntax.html +4 -4
- data/manual/html/Tutorial.html +41 -32
- data/manual/html/account.html +4 -4
- data/manual/html/account.task.html +4 -4
- data/manual/html/accountprefix.html +4 -4
- data/manual/html/accountreport.html +27 -9
- data/manual/html/accountroot.html +5 -5
- data/manual/html/active.html +4 -4
- data/manual/html/adopt.task.html +4 -4
- data/manual/html/aggregate.html +4 -4
- data/manual/html/alert.html +4 -4
- data/manual/html/alertlevels.html +4 -4
- data/manual/html/allocate.html +5 -5
- data/manual/html/alphabet.html +4 -4
- data/manual/html/alternative.html +4 -4
- data/manual/html/author.html +4 -4
- data/manual/html/balance.html +5 -5
- data/manual/html/booking.resource.html +4 -4
- data/manual/html/booking.task.html +4 -4
- data/manual/html/caption.html +5 -5
- data/manual/html/cellcolor.column.html +43 -8
- data/manual/html/celltext.column.html +4 -4
- data/manual/html/center.html +5 -5
- data/manual/html/charge.html +4 -4
- data/manual/html/chargeset.html +4 -4
- data/manual/html/columnid.html +27 -15
- data/manual/html/columns.html +5 -5
- data/manual/html/complete.html +4 -4
- data/manual/html/copyright.html +4 -4
- data/manual/html/credits.html +4 -4
- data/manual/html/css/tjreport.css +14 -5
- data/manual/html/currency.html +4 -4
- data/manual/html/currencyformat.html +5 -5
- data/manual/html/dailymax.html +5 -5
- data/manual/html/dailymin.html +5 -5
- data/manual/html/dailyworkinghours.html +4 -4
- data/manual/html/date.extend.html +4 -4
- data/manual/html/date.html +5 -5
- data/manual/html/definitions.html +4 -4
- data/manual/html/depends.html +4 -4
- data/manual/html/details.html +4 -4
- data/manual/html/disabled.html +4 -4
- data/manual/html/duration.html +4 -4
- data/manual/html/efficiency.html +4 -4
- data/manual/html/effort.html +4 -4
- data/manual/html/email.html +4 -4
- data/manual/html/enabled.html +4 -4
- data/manual/html/end.column.html +4 -4
- data/manual/html/end.html +4 -4
- data/manual/html/end.limit.html +4 -4
- data/manual/html/end.report.html +5 -5
- data/manual/html/end.timesheet.html +4 -4
- data/manual/html/endcredit.html +4 -4
- data/manual/html/epilog.html +5 -5
- data/manual/html/export.html +4 -4
- data/manual/html/extend.html +4 -4
- data/manual/html/fail.html +43 -8
- data/manual/html/fdl.html +4 -4
- data/manual/html/flags.account.html +4 -4
- data/manual/html/flags.html +4 -4
- data/manual/html/flags.journalentry.html +4 -4
- data/manual/html/flags.report.html +5 -5
- data/manual/html/flags.resource.html +4 -4
- data/manual/html/flags.statussheet.html +4 -4
- data/manual/html/flags.task.html +4 -4
- data/manual/html/flags.timesheet.html +4 -4
- data/manual/html/fontcolor.column.html +43 -8
- data/manual/html/footer.html +5 -5
- data/manual/html/formats.html +5 -5
- data/manual/html/functions.html +4 -4
- data/manual/html/gapduration.html +4 -4
- data/manual/html/gaplength.html +4 -4
- data/manual/html/halign.center.html +4 -4
- data/manual/html/halign.column.html +43 -8
- data/manual/html/halign.left.html +4 -4
- data/manual/html/halign.right.html +4 -4
- data/manual/html/hasalert.html +4 -4
- data/manual/html/header.html +5 -5
- data/manual/html/headline.html +7 -7
- data/manual/html/height.html +72 -0
- data/manual/html/hideaccount.html +46 -11
- data/manual/html/hidejournalentry.html +5 -5
- data/manual/html/hidereport.html +43 -8
- data/manual/html/hideresource.html +44 -9
- data/manual/html/hidetask.html +44 -9
- data/manual/html/icalreport.html +4 -4
- data/manual/html/include.macro.html +4 -4
- data/manual/html/include.project.html +4 -4
- data/manual/html/include.properties.html +4 -4
- data/manual/html/index.html +2 -1
- data/manual/html/inherit.extend.html +4 -4
- data/manual/html/interval1.html +4 -4
- data/manual/html/interval2.html +4 -4
- data/manual/html/interval3.html +4 -4
- data/manual/html/interval4.html +4 -4
- data/manual/html/isactive.html +4 -4
- data/manual/html/ischildof.html +4 -4
- data/manual/html/isdependencyof.html +4 -4
- data/manual/html/isdutyof.html +4 -4
- data/manual/html/isfeatureof.html +4 -4
- data/manual/html/isleaf.html +4 -4
- data/manual/html/ismilestone.html +4 -4
- data/manual/html/isongoing.html +4 -4
- data/manual/html/isresource.html +4 -4
- data/manual/html/isresponsibilityof.html +4 -4
- data/manual/html/istask.html +4 -4
- data/manual/html/journalattributes.html +11 -7
- data/manual/html/journalentry.html +4 -4
- data/manual/html/journalmode.html +5 -5
- data/manual/html/leaveallowance.html +5 -5
- data/manual/html/leaves.html +5 -6
- data/manual/html/left.html +5 -5
- data/manual/html/length.html +4 -4
- data/manual/html/limits.allocate.html +4 -4
- data/manual/html/limits.html +4 -4
- data/manual/html/limits.resource.html +4 -4
- data/manual/html/limits.task.html +4 -4
- data/manual/html/listitem.column.html +4 -4
- data/manual/html/listtype.column.html +4 -4
- data/manual/html/loadunit.html +5 -5
- data/manual/html/logicalexpression.html +8 -44
- data/manual/html/logicalflagexpression.html +4 -4
- data/manual/html/macro.html +4 -4
- data/manual/html/managers.html +4 -4
- data/manual/html/mandatory.html +4 -4
- data/manual/html/maxend.html +4 -4
- data/manual/html/maximum.html +5 -5
- data/manual/html/maxstart.html +4 -4
- data/manual/html/milestone.html +4 -4
- data/manual/html/minend.html +4 -4
- data/manual/html/minimum.html +5 -5
- data/manual/html/minstart.html +4 -4
- data/manual/html/monthlymax.html +5 -5
- data/manual/html/monthlymin.html +5 -5
- data/manual/html/navbar.html +10 -4
- data/manual/html/navigator.html +4 -4
- data/manual/html/newtask.html +4 -4
- data/manual/html/nikureport.html +4 -4
- data/manual/html/note.task.html +4 -4
- data/manual/html/now.html +4 -4
- data/manual/html/numberformat.html +5 -5
- data/manual/html/onend.html +4 -4
- data/manual/html/onstart.html +4 -4
- data/manual/html/opennodes.html +5 -5
- data/manual/html/overtime.booking.html +4 -4
- data/manual/html/period.column.html +4 -4
- data/manual/html/period.limit.html +4 -4
- data/manual/html/period.report.html +5 -5
- data/manual/html/period.task.html +4 -4
- data/manual/html/persistent.html +4 -4
- data/manual/html/precedes.html +4 -4
- data/manual/html/priority.html +4 -4
- data/manual/html/priority.timesheet.html +4 -4
- data/manual/html/project.html +4 -4
- data/manual/html/projectid.html +4 -4
- data/manual/html/projectid.task.html +4 -4
- data/manual/html/projectids.html +4 -4
- data/manual/html/projection.html +5 -7
- data/manual/html/prolog.html +5 -5
- data/manual/html/properties.html +11 -5
- data/manual/html/purge.html +5 -5
- data/manual/html/rate.html +4 -4
- data/manual/html/rate.resource.html +4 -4
- data/manual/html/reference.extend.html +4 -4
- data/manual/html/remaining.html +4 -4
- data/manual/html/replace.html +4 -4
- data/manual/html/reportprefix.html +4 -4
- data/manual/html/resource.html +4 -10
- data/manual/html/resourceattributes.html +4 -4
- data/manual/html/resourceprefix.html +4 -4
- data/manual/html/resourcereport.html +28 -10
- data/manual/html/resourceroot.html +5 -5
- data/manual/html/resources.limit.html +4 -4
- data/manual/html/responsible.html +4 -4
- data/manual/html/richtext.extend.html +4 -4
- data/manual/html/right.html +5 -5
- data/manual/html/rollupaccount.html +44 -9
- data/manual/html/rollupresource.html +44 -9
- data/manual/html/rolluptask.html +44 -9
- data/manual/html/scale.column.html +4 -4
- data/manual/html/scenario.html +4 -22
- data/manual/html/scenario.ical.html +4 -4
- data/manual/html/scenarios.export.html +4 -4
- data/manual/html/scenarios.html +5 -5
- data/manual/html/scenariospecific.extend.html +4 -4
- data/manual/html/scheduled.html +4 -4
- data/manual/html/scheduling.html +4 -4
- data/manual/html/select.html +4 -4
- data/manual/html/selfcontained.html +5 -5
- data/manual/html/shift.allocate.html +4 -4
- data/manual/html/shift.html +4 -4
- data/manual/html/shift.resource.html +5 -5
- data/manual/html/shift.task.html +4 -4
- data/manual/html/shift.timesheet.html +4 -4
- data/manual/html/shifts.allocate.html +4 -4
- data/manual/html/shifts.resource.html +4 -4
- data/manual/html/shifts.task.html +4 -4
- data/manual/html/shorttimeformat.html +4 -4
- data/manual/html/sloppy.booking.html +4 -4
- data/manual/html/sloppy.projection.html +5 -5
- data/manual/html/sortaccounts.html +5 -5
- data/manual/html/sortjournalentries.html +5 -5
- data/manual/html/sortresources.html +5 -5
- data/manual/html/sorttasks.html +5 -5
- data/manual/html/start.column.html +4 -4
- data/manual/html/start.html +4 -4
- data/manual/html/start.limit.html +4 -4
- data/manual/html/start.report.html +5 -5
- data/manual/html/startcredit.html +4 -4
- data/manual/html/status.statussheet.html +4 -4
- data/manual/html/status.timesheet.html +4 -4
- data/manual/html/statussheet.html +4 -4
- data/manual/html/statussheetreport.html +4 -4
- data/manual/html/strict.projection.html +5 -5
- data/manual/html/summary.html +4 -4
- data/manual/html/supplement.html +4 -4
- data/manual/html/supplement.resource.html +4 -10
- data/manual/html/supplement.task.html +4 -28
- data/manual/html/tagfile.html +4 -4
- data/manual/html/task.html +4 -28
- data/manual/html/task.statussheet.html +4 -4
- data/manual/html/task.timesheet.html +4 -4
- data/manual/html/taskattributes.html +4 -4
- data/manual/html/taskprefix.html +4 -4
- data/manual/html/taskreport.html +28 -10
- data/manual/html/taskroot.html +5 -5
- data/manual/html/text.extend.html +4 -4
- data/manual/html/textreport.html +27 -9
- data/manual/html/timeformat.html +5 -5
- data/manual/html/timeoff.nikureport.html +4 -4
- data/manual/html/timesheet.html +4 -4
- data/manual/html/timesheetreport.html +23 -5
- data/manual/html/timezone.export.html +4 -4
- data/manual/html/timezone.html +4 -4
- data/manual/html/timezone.report.html +5 -5
- data/manual/html/timezone.shift.html +4 -4
- data/manual/html/timingresolution.html +4 -4
- data/manual/html/title.column.html +4 -4
- data/manual/html/title.html +5 -5
- data/manual/html/toc.html +207 -179
- data/manual/html/tooltip.column.html +45 -10
- data/manual/html/tracereport.html +405 -0
- data/manual/html/trackingscenario.html +6 -6
- data/manual/html/treelevel.html +4 -4
- data/manual/html/vacation.html +4 -4
- data/manual/html/vacation.resource.html +4 -4
- data/manual/html/vacation.shift.html +4 -4
- data/manual/html/warn.html +43 -8
- data/manual/html/weeklymax.html +5 -5
- data/manual/html/weeklymin.html +5 -5
- data/manual/html/weekstartsmonday.html +4 -4
- data/manual/html/weekstartssunday.html +6 -6
- data/manual/html/width.column.html +6 -6
- data/manual/html/width.html +72 -0
- data/manual/html/work.html +4 -4
- data/manual/html/workinghours.project.html +4 -4
- data/manual/html/workinghours.resource.html +4 -4
- data/manual/html/workinghours.shift.html +4 -4
- data/manual/html/yearlyworkingdays.html +4 -4
- data/spec/Color_spec.rb +60 -0
- data/spec/ProjectBroker_spec.rb +3 -2
- data/spec/StatusSheets_spec.rb +5 -4
- data/spec/TableColumnSorter_spec.rb +78 -0
- data/spec/TimeSheets_spec.rb +6 -2
- data/spec/Tj3Daemon_spec.rb +2 -2
- data/spec/TraceReport_spec.rb +117 -0
- data/taskjuggler.gemspec +1 -1
- data/test/MessageChecker.rb +3 -1
- data/test/ReferenceGenerator.rb +1 -1
- data/test/TestSuite/CSV-Reports/Leave.tjp +1 -1
- data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +3 -0
- data/test/TestSuite/CSV-Reports/refs/taskcounter.csv +9 -0
- data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +19 -16
- data/test/TestSuite/CSV-Reports/refs/weekly.csv +1 -0
- data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +14 -2
- data/test/TestSuite/Export-Reports/refs/tutorial.tjp +98 -86
- data/test/TestSuite/Scheduler/Correct/Leaves.tjp +25 -0
- data/test/TestSuite/Syntax/Correct/Leave.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +9 -1
- data/test/TestSuite/Syntax/Correct/TraceReport.tjp +10 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +10 -4
- data/test/test_CSV-Reports.rb +3 -3
- data/test/test_Export-Reports.rb +91 -86
- data/test/test_Journal.rb +15 -12
- data/test/test_Limits.rb +3 -3
- data/test/test_Project.rb +1 -2
- data/test/test_ProjectFileScanner.rb +1 -1
- data/test/test_PropertySet.rb +1 -1
- data/test/test_Query.rb +5 -6
- data/test/test_ReportGenerator.rb +15 -7
- data/test/test_RichText.rb +4 -3
- data/test/test_Scheduler.rb +19 -7
- data/test/test_ShiftAssignments.rb +2 -2
- data/test/test_SimpleQueryExpander.rb +29 -2
- data/test/test_Syntax.rb +14 -5
- metadata +49 -10
- data/lib/taskjuggler/LogFile.rb +0 -73
data/spec/ProjectBroker_spec.rb
CHANGED
@@ -23,8 +23,9 @@ class TaskJuggler
|
|
23
23
|
pb.logStdIO = false
|
24
24
|
pb.port = 0
|
25
25
|
# Don't generate any debug or info messages
|
26
|
-
|
27
|
-
|
26
|
+
mh = MessageHandlerInstance.instance
|
27
|
+
mh.outputLevel = 1
|
28
|
+
mh.logLevel = 1
|
28
29
|
t = Thread.new { pb.start }
|
29
30
|
yield
|
30
31
|
pb.stop
|
data/spec/StatusSheets_spec.rb
CHANGED
@@ -26,7 +26,6 @@ class TaskJuggler
|
|
26
26
|
include DaemonControl
|
27
27
|
|
28
28
|
before(:all) do
|
29
|
-
@beforeExecuted = true
|
30
29
|
# Make sure we run in the same directory as the spec file.
|
31
30
|
@pwd = pwd
|
32
31
|
cd(File.dirname(__FILE__))
|
@@ -122,9 +121,9 @@ timesheet r2 2011-03-14-00:00-+0000 - 2011-03-21-00:00-+0000 {
|
|
122
121
|
}
|
123
122
|
EOT
|
124
123
|
res = stdIoWrapper(prj) do
|
125
|
-
Tj3Client.new.main(%w( --unsafe
|
124
|
+
Tj3Client.new.main(%w( --unsafe add . ))
|
126
125
|
end
|
127
|
-
unless res.stdErr
|
126
|
+
unless res.stdErr.include?("Info: Project(s) . added")
|
128
127
|
raise "Project not loaded: #{res.stdErr}"
|
129
128
|
end
|
130
129
|
raise "Can't load project: #{res.stdErr}" unless res.returnValue == 0
|
@@ -132,8 +131,10 @@ EOT
|
|
132
131
|
res = stdIoWrapper do
|
133
132
|
Tj3SsSender.new.main(%w( --dryrun --silent -e 2011-03-23 ))
|
134
133
|
end
|
134
|
+
unless res.returnValue == 0
|
135
|
+
raise " Status sheet template generation failed: #{res.stdErr}"
|
136
|
+
end
|
135
137
|
@sss_mails = collectMails(res.stdOut)
|
136
|
-
raise " Status sheet generation failed" unless res.returnValue == 0
|
137
138
|
|
138
139
|
@sheet = <<'EOT'
|
139
140
|
# --------8<--------8<--------
|
@@ -0,0 +1,78 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
# encoding: UTF-8
|
3
|
+
#
|
4
|
+
# = TraceReport_spec.rb -- The TaskJuggler III Project Management Software
|
5
|
+
#
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
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
|
+
require 'rubygems'
|
15
|
+
|
16
|
+
require 'taskjuggler/TableColumnSorter'
|
17
|
+
|
18
|
+
class TaskJuggler
|
19
|
+
|
20
|
+
describe TableColumnSorter do
|
21
|
+
|
22
|
+
before do
|
23
|
+
@table = [ %w( One Two Three ), [ 1, 2, 3 ] ]
|
24
|
+
@sorter = TableColumnSorter.new(@table)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should not change for same header" do
|
28
|
+
t = @sorter.sort(%w( One Two Three ))
|
29
|
+
t.should == @table
|
30
|
+
@sorter.discontinuedColumns.should == 0
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should not change for all remove" do
|
34
|
+
t = @sorter.sort(%w( ))
|
35
|
+
t.should == @table
|
36
|
+
@sorter.discontinuedColumns.should == 3
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should move Two to back" do
|
40
|
+
t = @sorter.sort(%w( One Three ))
|
41
|
+
t.should == [ %w( One Three Two ), [ 1, 3, 2 ] ]
|
42
|
+
@sorter.discontinuedColumns.should == 1
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should not change when last columns is missing" do
|
46
|
+
t = @sorter.sort(%w( One Two ))
|
47
|
+
t.should == @table
|
48
|
+
@sorter.discontinuedColumns.should == 1
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should insert Four in front" do
|
52
|
+
t = @sorter.sort(%w( Four One Two Three ))
|
53
|
+
t.should == [ %w( Four One Two Three ), [ nil, 1, 2, 3 ] ]
|
54
|
+
@sorter.discontinuedColumns.should == 0
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should insert Four and Five at end" do
|
58
|
+
t = @sorter.sort(%w( One Two Three Four Five ))
|
59
|
+
t.should == [ %w( One Two Three Four Five ), [ 1, 2, 3, nil, nil ] ]
|
60
|
+
@sorter.discontinuedColumns.should == 0
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should insert Four at end and move Three to back" do
|
64
|
+
t = @sorter.sort(%w( One Two Four ))
|
65
|
+
t.should == [ %w( One Two Four Three ), [ 1, 2, nil, 3 ] ]
|
66
|
+
@sorter.discontinuedColumns.should == 1
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should keep first columns and insert new directly after" do
|
70
|
+
t = @sorter.sort(%w( One Four Five ))
|
71
|
+
t.should == [ %w( One Four Five Two Three), [ 1, nil, nil, 2, 3 ] ]
|
72
|
+
@sorter.discontinuedColumns.should == 2
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
data/spec/TimeSheets_spec.rb
CHANGED
@@ -31,6 +31,7 @@ class TaskJuggler
|
|
31
31
|
|
32
32
|
cleanup
|
33
33
|
startDaemon(<<'EOT'
|
34
|
+
emailDeliveryMethod: smtp
|
34
35
|
smtpServer: foobar.com
|
35
36
|
_timesheets:
|
36
37
|
projectId: tstest
|
@@ -76,9 +77,9 @@ task t3 "T3" {
|
|
76
77
|
}
|
77
78
|
EOT
|
78
79
|
res = stdIoWrapper(prj) do
|
79
|
-
Tj3Client.new.main(%w( --unsafe
|
80
|
+
Tj3Client.new.main(%w( --unsafe add . ))
|
80
81
|
end
|
81
|
-
unless res.stdErr
|
82
|
+
unless res.stdErr.include?("Info: Project(s) . added")
|
82
83
|
raise "Project not loaded: #{res.stdErr}"
|
83
84
|
end
|
84
85
|
raise "Can't load project" unless res.returnValue == 0
|
@@ -86,6 +87,9 @@ EOT
|
|
86
87
|
res = stdIoWrapper do
|
87
88
|
Tj3TsSender.new.main(%w( --dryrun --silent -e 2011-03-21 ))
|
88
89
|
end
|
90
|
+
if res.stdErr != ''
|
91
|
+
raise "Tj3TsSender failed: #{res.stdErr}"
|
92
|
+
end
|
89
93
|
@tss_mails = collectMails(res.stdOut)
|
90
94
|
raise "Timesheet generation failed" unless res.returnValue == 0
|
91
95
|
|
data/spec/Tj3Daemon_spec.rb
CHANGED
@@ -42,10 +42,10 @@ class TaskJuggler
|
|
42
42
|
it 'should be able to load a project' do
|
43
43
|
prj = 'project foo "Foo" 2011-03-14 +1d task "Foo"'
|
44
44
|
res = stdIoWrapper(prj) do
|
45
|
-
Tj3Client.new.main(%w( --unsafe
|
45
|
+
Tj3Client.new.main(%w( --unsafe add . ))
|
46
46
|
end
|
47
47
|
res.returnValue.should == 0
|
48
|
-
res.stdErr.should match /Project
|
48
|
+
res.stdErr.should match /Project\(s\) \. added/
|
49
49
|
end
|
50
50
|
|
51
51
|
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
# encoding: UTF-8
|
3
|
+
#
|
4
|
+
# = TimeSheets_spec.rb -- The TaskJuggler III Project Management Software
|
5
|
+
#
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
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
|
+
require 'taskjuggler/TaskJuggler'
|
15
|
+
require 'taskjuggler/StdIoWrapper'
|
16
|
+
require 'taskjuggler/apps/Tj3'
|
17
|
+
|
18
|
+
class TaskJuggler
|
19
|
+
|
20
|
+
|
21
|
+
describe TraceReport do
|
22
|
+
|
23
|
+
include StdIoWrapper
|
24
|
+
|
25
|
+
before(:all) do
|
26
|
+
tf = 'tracereport'
|
27
|
+
@tf = tf + '.csv'
|
28
|
+
@prj = <<"EOT"
|
29
|
+
project "Test" 2012-03-01 +2m {
|
30
|
+
now 2012-03-11
|
31
|
+
}
|
32
|
+
|
33
|
+
resource r "R"
|
34
|
+
|
35
|
+
task t1 "T1" {
|
36
|
+
effort 10d
|
37
|
+
allocate r
|
38
|
+
}
|
39
|
+
task t2 "T2" {
|
40
|
+
depends t1
|
41
|
+
duration 5d
|
42
|
+
}
|
43
|
+
task t3 "T3" {
|
44
|
+
depends t2
|
45
|
+
}
|
46
|
+
|
47
|
+
tracereport '#{tf}' {
|
48
|
+
columns complete
|
49
|
+
}
|
50
|
+
EOT
|
51
|
+
end
|
52
|
+
|
53
|
+
after(:all) do
|
54
|
+
File.delete(@tf)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should generate a trace report' do
|
58
|
+
File.delete(@tf) if File.exists?(@tf)
|
59
|
+
tj3(@prj)
|
60
|
+
ref = <<'EOT'
|
61
|
+
"Date";"t1:plan.complete";"t2:plan.complete";"t3:plan.complete"
|
62
|
+
"2012-03-11";70.0;0.0;0.0
|
63
|
+
EOT
|
64
|
+
checkCSV(@tf, ref)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should replace the existing line' do
|
68
|
+
before = File.read(@tf)
|
69
|
+
tj3(@prj)
|
70
|
+
after = File.read(@tf)
|
71
|
+
before.should == after
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should add a new line for another day' do
|
75
|
+
prj = @prj.gsub(/now 2012-03-11/, 'now 2012-03-18')
|
76
|
+
tj3(prj)
|
77
|
+
ref = <<'EOT'
|
78
|
+
"Date";"t1:plan.complete";"t2:plan.complete";"t3:plan.complete"
|
79
|
+
"2012-03-11";70.0;0.0;0.0
|
80
|
+
"2012-03-18";100.0;65.83333333333333;0.0
|
81
|
+
EOT
|
82
|
+
checkCSV(@tf, ref)
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'should add to a file without data columns' do
|
86
|
+
File.write(@tf, <<'EOT'
|
87
|
+
"Date"
|
88
|
+
"2012-03-11"
|
89
|
+
EOT
|
90
|
+
)
|
91
|
+
tj3(@prj)
|
92
|
+
ref = <<'EOT'
|
93
|
+
"Date";"t1:plan.complete";"t2:plan.complete";"t3:plan.complete"
|
94
|
+
"2012-03-11";70.0;0.0;0.0
|
95
|
+
EOT
|
96
|
+
checkCSV(@tf, ref)
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
def tj3(prj)
|
102
|
+
res = stdIoWrapper(prj) do
|
103
|
+
Tj3.new.main(%w( --silent --add-trace . ))
|
104
|
+
end
|
105
|
+
res.stdOut.should == ''
|
106
|
+
res.stdErr.should == ''
|
107
|
+
res.returnValue.should == 0
|
108
|
+
end
|
109
|
+
|
110
|
+
def checkCSV(file, ref)
|
111
|
+
File.read(file).should == ref
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
|
data/taskjuggler.gemspec
CHANGED
@@ -63,7 +63,7 @@ EOT
|
|
63
63
|
s.has_rdoc = true
|
64
64
|
s.extra_rdoc_files = %w( README.rdoc COPYING CHANGELOG )
|
65
65
|
|
66
|
-
s.add_dependency('mail', '>= 2.
|
66
|
+
s.add_dependency('mail', '>= 2.4.3')
|
67
67
|
s.add_dependency('term-ansicolor', '>= 1.0.7')
|
68
68
|
s.add_development_dependency('rspec', '>= 2.5.0')
|
69
69
|
s.platform = Gem::Platform::RUBY
|
data/test/MessageChecker.rb
CHANGED
@@ -11,13 +11,15 @@
|
|
11
11
|
# published by the Free Software Foundation.
|
12
12
|
#
|
13
13
|
|
14
|
+
require 'taskjuggler/MessageHandler'
|
15
|
+
|
14
16
|
module MessageChecker
|
15
17
|
|
16
18
|
# Check that all messages that were generated during the TaskJuggler run
|
17
19
|
# match the references specified in the test file.
|
18
20
|
def checkMessages(tj, file)
|
19
21
|
refMessages = collectMessages(file)
|
20
|
-
|
22
|
+
TaskJuggler::MessageHandlerInstance.instance.messages.each do |message|
|
21
23
|
assert(ref = refMessages.pop, "Unexpected #{message.type.to_s} #{message.id}: #{message}")
|
22
24
|
assert_equal(ref[0], message.type.to_s,
|
23
25
|
"Error in #{file}: Got #{message.type.to_s} instead of #{ref[0]}")
|
data/test/ReferenceGenerator.rb
CHANGED
@@ -48,7 +48,7 @@ class TaskJuggler
|
|
48
48
|
deleteOldReports(tjpFile[0..-5])
|
49
49
|
|
50
50
|
puts "Generating references for #{tjpFile}"
|
51
|
-
tj = TaskJuggler.new
|
51
|
+
tj = TaskJuggler.new
|
52
52
|
tj.parse([ tjpFile ]) || error("Parser failed for ${tjpFile}")
|
53
53
|
tj.schedule || error("Scheduler failed for #{tjpFile}")
|
54
54
|
tj.generateReports(outputDir) ||
|
@@ -1,5 +1,6 @@
|
|
1
1
|
"BSI";"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
2
|
3;"Jack";17.0;"";"";"";"";3.0;5.0;4.0;"";5.0;"";""
|
3
|
+
4;" Virtual View";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
3
4
|
2;" Execute Work";17.0;"";"";"";"";3.0;5.0;4.0;"";5.0;"";""
|
4
5
|
2.2;" Step 2";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
5
6
|
" 2.2.2";" Step 2.2";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
@@ -8,6 +9,7 @@
|
|
8
9
|
1;" Plan Work";12.5;"";5.0;2.5;5.0;"";"";"";"";"";"";""
|
9
10
|
1.2;" Plan B";7.5;"";5.0;2.5;"";"";"";"";"";"";"";""
|
10
11
|
1.3;" Plan C";5.0;"";"";"";5.0;"";"";"";"";"";"";""
|
12
|
+
4;" Virtual View";17.5;"";5.0;2.5;"";"";"";"";"";5.0;5.0;""
|
11
13
|
2;" Execute Work";25.0;"";"";"";"";5.0;5.0;5.0;5.0;5.0;"";""
|
12
14
|
2.1;" Step 1";20.0;"";"";"";"";5.0;5.0;5.0;5.0;"";"";""
|
13
15
|
2.2;" Step 2";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
@@ -16,6 +18,7 @@
|
|
16
18
|
2;"Joe";14.0;"";5.0;5.0;"";2.0;"";"";"";2.0;"";""
|
17
19
|
1;" Plan Work";10.0;"";5.0;5.0;"";"";"";"";"";"";"";""
|
18
20
|
1.1;" Plan A";10.0;"";5.0;5.0;"";"";"";"";"";"";"";""
|
21
|
+
4;" Virtual View";2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
19
22
|
2;" Execute Work";4.0;"";"";"";"";2.0;"";"";"";2.0;"";""
|
20
23
|
2.2;" Step 2";2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
21
24
|
" 2.2.1";" Step 2.1";2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"BSI";"Name";"Start";"End";"Duration";"Effort";"2007-12-10-00:00:00-+0000";"2007-12-17-00:00:00-+0000";"2007-12-24-00:00:00-+0000";"2007-12-31-00:00:00-+0000";"2008-01-07-00:00:00-+0000";"2008-01-14-00:00:00-+0000";"2008-01-21-00:00:00-+0000";"2008-01-28-00:00:00-+0000";"2008-02-04-00:00:00-+0000";"2008-02-11-00:00:00-+0000";"2008-02-18-00:00:00-+0000"
|
2
2
|
1;"Plan Work";"2007-12-16-00:00:00-+0000";"2008-01-04-18:00:00-+0000";19.8;22.5;"";10.0;7.5;5.0;"";"";"";"";"";"";""
|
3
|
-
1;" Jill";"";"";"";
|
4
|
-
2;" Joe";"";"";"";
|
3
|
+
1;" Jill";"";"";"";12.5;"";5.0;2.5;5.0;"";"";"";"";"";"";""
|
4
|
+
2;" Joe";"";"";"";10.0;"";5.0;5.0;"";"";"";"";"";"";"";""
|
5
5
|
1.1;" Plan A";"2007-12-17-09:00:00-+0000";"2007-12-28-18:00:00-+0000";11.4;10.0;"";5.0;5.0;"";"";"";"";"";"";"";""
|
6
6
|
2;" Joe";"";"";"";10.0;"";5.0;5.0;"";"";"";"";"";"";"";""
|
7
7
|
1.2;" Plan B";"2007-12-17-09:00:00-+0000";"2007-12-26-14:00:00-+0000";9.2;7.5;"";5.0;2.5;"";"";"";"";"";"";"";""
|
@@ -9,30 +9,33 @@
|
|
9
9
|
1.3;" Plan C";"2007-12-31-09:00:00-+0000";"2008-01-04-18:00:00-+0000";4.4;5.0;"";"";"";5.0;"";"";"";"";"";"";""
|
10
10
|
1;" Jill";"";"";"";5.0;"";"";"";5.0;"";"";"";"";"";"";""
|
11
11
|
4;"Virtual View";"2007-12-17-09:00:00-+0000";"2008-02-15-18:00:00-+0000";60.4;24.5;"";5.0;2.5;"";2.0;"";"";"";10.0;5.0;""
|
12
|
+
3;" Jack";"";"";"";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
13
|
+
1;" Jill";"";"";"";17.5;"";5.0;2.5;"";"";"";"";"";5.0;5.0;""
|
14
|
+
2;" Joe";"";"";"";2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
12
15
|
1.2;" Plan B";"2007-12-17-09:00:00-+0000";"2007-12-26-14:00:00-+0000";9.2;7.5;"";5.0;2.5;"";"";"";"";"";"";"";""
|
13
|
-
1;" Jill";"";"";"";
|
16
|
+
1;" Jill";"";"";"";7.5;"";5.0;2.5;"";"";"";"";"";"";"";""
|
14
17
|
2.2;" Step 2";"2008-01-07-09:00:00-+0000";"2008-02-08-18:00:00-+0000";32.4;12.0;"";"";"";"";2.0;"";"";"";10.0;"";""
|
15
|
-
3;" Jack";"";"";"";
|
16
|
-
1;" Jill";"";"";"";
|
17
|
-
2;" Joe";"";"";"";
|
18
|
+
3;" Jack";"";"";"";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
19
|
+
1;" Jill";"";"";"";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
20
|
+
2;" Joe";"";"";"";2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
18
21
|
"2.2.1";" Step 2.1";"2008-01-07-09:00:00-+0000";"2008-01-08-18:00:00-+0000";1.4;2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
19
|
-
2;" Joe";"";"";"";
|
22
|
+
2;" Joe";"";"";"";2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
20
23
|
"2.2.2";" Step 2.2";"2008-02-04-09:00:00-+0000";"2008-02-08-18:00:00-+0000";4.4;10.0;"";"";"";"";"";"";"";"";10.0;"";""
|
21
|
-
3;" Jack";"";"";"";
|
22
|
-
1;" Jill";"";"";"";
|
24
|
+
3;" Jack";"";"";"";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
25
|
+
1;" Jill";"";"";"";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
23
26
|
2.3;" Milestone 1";"2008-02-08-18:00:00-+0000";"2008-02-08-18:00:00-+0000";0.0;0.0;"";"";"";"";"";"";"";"";"";"";""
|
24
27
|
3;" Check Work";"2008-02-11-09:00:00-+0000";"2008-02-15-18:00:00-+0000";4.4;5.0;"";"";"";"";"";"";"";"";"";5.0;""
|
25
|
-
1;" Jill";"";"";"";
|
28
|
+
1;" Jill";"";"";"";5.0;"";"";"";"";"";"";"";"";"";5.0;""
|
26
29
|
2;"Execute Work";"2008-01-07-09:00:00-+0000";"2008-02-08-18:00:00-+0000";32.4;46.0;"";"";"";"";10.0;10.0;9.0;5.0;12.0;"";""
|
27
|
-
3;" Jack";"";"";"";
|
28
|
-
1;" Jill";"";"";"";
|
29
|
-
2;" Joe";"";"";"";
|
30
|
+
3;" Jack";"";"";"";17.0;"";"";"";"";3.0;5.0;4.0;"";5.0;"";""
|
31
|
+
1;" Jill";"";"";"";25.0;"";"";"";"";5.0;5.0;5.0;5.0;5.0;"";""
|
32
|
+
2;" Joe";"";"";"";4.0;"";"";"";"";2.0;"";"";"";2.0;"";""
|
30
33
|
2.1;" Step 1";"2008-01-07-09:00:00-+0000";"2008-02-01-18:00:00-+0000";25.4;20.0;"";"";"";"";5.0;5.0;5.0;5.0;"";"";""
|
31
34
|
1;" Jill";"";"";"";20.0;"";"";"";"";5.0;5.0;5.0;5.0;"";"";""
|
32
35
|
2.2;" Step 2";"2008-01-07-09:00:00-+0000";"2008-02-08-18:00:00-+0000";32.4;12.0;"";"";"";"";2.0;"";"";"";10.0;"";""
|
33
|
-
3;" Jack";"";"";"";
|
34
|
-
1;" Jill";"";"";"";
|
35
|
-
2;" Joe";"";"";"";
|
36
|
+
3;" Jack";"";"";"";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
37
|
+
1;" Jill";"";"";"";5.0;"";"";"";"";"";"";"";"";5.0;"";""
|
38
|
+
2;" Joe";"";"";"";2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
36
39
|
"2.2.1";" Step 2.1";"2008-01-07-09:00:00-+0000";"2008-01-08-18:00:00-+0000";1.4;2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
37
40
|
2;" Joe";"";"";"";2.0;"";"";"";"";2.0;"";"";"";"";"";""
|
38
41
|
"2.2.2";" Step 2.2";"2008-02-04-09:00:00-+0000";"2008-02-08-18:00:00-+0000";4.4;10.0;"";"";"";"";"";"";"";"";10.0;"";""
|
@@ -8,6 +8,7 @@
|
|
8
8
|
" Execute Work";"";5.0;5.0;32.4;"";5.0;5.0;10.0
|
9
9
|
" Step 1";"";5.0;5.0;25.4;"";5.0;5.0;10.0
|
10
10
|
"Joe";"";2.0;"";"";"";2.0;"";2.0
|
11
|
+
" Virtual View";"";2.0;"";60.4;"";2.0;"";2.0
|
11
12
|
" Execute Work";"";2.0;"";32.4;"";2.0;"";2.0
|
12
13
|
" Step 2";"";2.0;"";32.4;"";2.0;"";2.0
|
13
14
|
" Step 2.1";"";2.0;"";1.4;"";2.0;"";2.0
|
@@ -7,13 +7,25 @@ project prj "LogExp" "1.0" 2009-10-19-00:00-+0000 - 2009-12-18-20:00-+0000 {
|
|
7
7
|
|
8
8
|
projectids prj
|
9
9
|
|
10
|
+
resource r "R"
|
10
11
|
|
11
12
|
task _Task_1 "T" {
|
12
|
-
start 2009-10-19-
|
13
|
-
|
13
|
+
start 2009-10-19-15:00-+0000
|
14
|
+
end 2009-10-19-23:00-+0000
|
15
|
+
scheduling asap
|
14
16
|
scheduled
|
15
17
|
}
|
16
18
|
supplement task _Task_1 {
|
19
|
+
booking r 2009-10-19-15:00-+0000 + 8.0h { overtime 2 }
|
17
20
|
priority 500
|
18
21
|
projectid prj
|
19
22
|
}
|
23
|
+
supplement resource r {
|
24
|
+
workinghours sun off
|
25
|
+
workinghours mon 9:00 - 17:00
|
26
|
+
workinghours tue 9:00 - 17:00
|
27
|
+
workinghours wed 9:00 - 17:00
|
28
|
+
workinghours thu 9:00 - 17:00
|
29
|
+
workinghours fri 9:00 - 17:00
|
30
|
+
workinghours sat off
|
31
|
+
}
|