taskjuggler 3.0.0 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +61 -0
- data/README.rdoc +43 -27
- data/data/css/tjreport.css +30 -0
- data/data/tjp.vim +100 -89
- data/examples/ProjectTemplate/template.tjp +338 -0
- data/examples/ToDo-List/todolist.tjp +84 -0
- data/examples/{tutorial.tjp → Tutorial/tutorial.tjp} +9 -7
- data/lib/header.tmpl +1 -1
- data/lib/taskjuggler/Account.rb +2 -2
- data/lib/taskjuggler/AccountCredit.rb +29 -0
- data/lib/taskjuggler/AccountScenario.rb +73 -7
- data/lib/taskjuggler/AlertLevelDefinitions.rb +104 -0
- data/lib/taskjuggler/AlgorithmDiff.rb +2 -2
- data/lib/taskjuggler/Allocation.rb +1 -1
- data/lib/taskjuggler/AppConfig.rb +1 -1
- data/lib/taskjuggler/AttributeBase.rb +1 -1
- data/lib/taskjuggler/AttributeDefinition.rb +1 -1
- data/lib/taskjuggler/Attributes.rb +40 -3
- data/lib/taskjuggler/BatchProcessor.rb +15 -14
- data/lib/taskjuggler/Booking.rb +1 -1
- data/lib/taskjuggler/Charge.rb +2 -2
- data/lib/taskjuggler/ChargeSet.rb +1 -1
- data/lib/taskjuggler/DataCache.rb +24 -12
- data/lib/taskjuggler/FileList.rb +1 -1
- data/lib/taskjuggler/HTMLDocument.rb +1 -1
- data/lib/taskjuggler/HTMLElements.rb +1 -1
- data/lib/taskjuggler/ICalendar.rb +1 -1
- data/lib/taskjuggler/Interval.rb +1 -1
- data/lib/taskjuggler/IntervalList.rb +1 -1
- data/lib/taskjuggler/Journal.rb +61 -41
- data/lib/taskjuggler/KeywordArray.rb +1 -1
- data/lib/taskjuggler/KeywordDocumentation.rb +121 -33
- data/lib/taskjuggler/LeaveList.rb +103 -0
- data/lib/taskjuggler/Limits.rb +1 -1
- data/lib/taskjuggler/Log.rb +6 -3
- data/lib/taskjuggler/LogFile.rb +1 -1
- data/lib/taskjuggler/LogicalExpression.rb +1 -1
- data/lib/taskjuggler/LogicalFunction.rb +16 -2
- data/lib/taskjuggler/LogicalOperation.rb +3 -1
- data/lib/taskjuggler/MessageHandler.rb +13 -4
- data/lib/taskjuggler/PTNProxy.rb +118 -0
- data/lib/taskjuggler/Project.rb +58 -67
- data/lib/taskjuggler/ProjectFileParser.rb +39 -5
- data/lib/taskjuggler/ProjectFileScanner.rb +1 -1
- data/lib/taskjuggler/PropertyList.rb +26 -2
- data/lib/taskjuggler/PropertySet.rb +8 -1
- data/lib/taskjuggler/PropertyTreeNode.rb +36 -32
- data/lib/taskjuggler/Query.rb +1 -1
- data/lib/taskjuggler/RealFormat.rb +4 -2
- data/lib/taskjuggler/Resource.rb +3 -3
- data/lib/taskjuggler/ResourceScenario.rb +219 -140
- data/lib/taskjuggler/RichText.rb +1 -1
- data/lib/taskjuggler/RichText/Document.rb +2 -2
- data/lib/taskjuggler/RichText/Element.rb +2 -2
- data/lib/taskjuggler/RichText/FunctionExample.rb +2 -2
- data/lib/taskjuggler/RichText/FunctionHandler.rb +2 -2
- data/lib/taskjuggler/RichText/Parser.rb +2 -2
- data/lib/taskjuggler/RichText/RTFHandlers.rb +1 -1
- data/lib/taskjuggler/RichText/RTFNavigator.rb +1 -1
- data/lib/taskjuggler/RichText/RTFQuery.rb +1 -1
- data/lib/taskjuggler/RichText/RTFReport.rb +1 -1
- data/lib/taskjuggler/RichText/RTFReportLink.rb +1 -1
- data/lib/taskjuggler/RichText/RTFWithQuerySupport.rb +1 -1
- data/lib/taskjuggler/RichText/Scanner.rb +18 -4
- data/lib/taskjuggler/RichText/Snip.rb +2 -2
- data/lib/taskjuggler/RichText/SyntaxRules.rb +6 -14
- data/lib/taskjuggler/RichText/TOCEntry.rb +16 -7
- data/lib/taskjuggler/RichText/TableOfContents.rb +3 -2
- data/lib/taskjuggler/RuntimeConfig.rb +1 -1
- data/lib/taskjuggler/Scenario.rb +1 -1
- data/lib/taskjuggler/ScenarioData.rb +1 -1
- data/lib/taskjuggler/Scoreboard.rb +1 -1
- data/lib/taskjuggler/SheetHandlerBase.rb +1 -1
- data/lib/taskjuggler/SheetReceiver.rb +1 -1
- data/lib/taskjuggler/SheetSender.rb +3 -3
- data/lib/taskjuggler/Shift.rb +2 -2
- data/lib/taskjuggler/ShiftAssignments.rb +24 -19
- data/lib/taskjuggler/ShiftScenario.rb +4 -4
- data/lib/taskjuggler/SimpleQueryExpander.rb +1 -1
- data/lib/taskjuggler/StatusSheetReceiver.rb +1 -1
- data/lib/taskjuggler/StatusSheetSender.rb +1 -1
- data/lib/taskjuggler/StdIoWrapper.rb +1 -1
- data/lib/taskjuggler/SyntaxReference.rb +5 -2
- data/lib/taskjuggler/TableColumnDefinition.rb +1 -1
- data/lib/taskjuggler/Task.rb +4 -8
- data/lib/taskjuggler/TaskDependency.rb +1 -1
- data/lib/taskjuggler/TaskJuggler.rb +1 -1
- data/lib/taskjuggler/TaskScenario.rb +131 -51
- data/lib/taskjuggler/TernarySearchTree.rb +6 -4
- data/lib/taskjuggler/TextFormatter.rb +9 -2
- data/lib/taskjuggler/TextParser.rb +13 -3
- data/lib/taskjuggler/TextParser/MacroTable.rb +1 -1
- data/lib/taskjuggler/TextParser/Pattern.rb +52 -8
- data/lib/taskjuggler/TextParser/Rule.rb +11 -5
- data/lib/taskjuggler/TextParser/Scanner.rb +1 -1
- data/lib/taskjuggler/TextParser/SourceFileInfo.rb +1 -1
- data/lib/taskjuggler/TextParser/StackElement.rb +1 -1
- data/lib/taskjuggler/TextParser/State.rb +2 -2
- data/lib/taskjuggler/TextParser/TokenDoc.rb +1 -1
- data/lib/taskjuggler/TimeSheetReceiver.rb +1 -1
- data/lib/taskjuggler/TimeSheetSender.rb +1 -1
- data/lib/taskjuggler/TimeSheetSummary.rb +1 -1
- data/lib/taskjuggler/TimeSheets.rb +4 -6
- data/lib/taskjuggler/Tj3AppBase.rb +18 -1
- data/lib/taskjuggler/Tj3Config.rb +4 -4
- data/lib/taskjuggler/Tj3SheetAppBase.rb +1 -1
- data/lib/taskjuggler/TjException.rb +1 -1
- data/lib/taskjuggler/TjTime.rb +1 -1
- data/lib/taskjuggler/TjpExample.rb +1 -1
- data/lib/taskjuggler/TjpSyntaxRules.rb +920 -392
- data/lib/taskjuggler/URLParameter.rb +1 -1
- data/lib/taskjuggler/UTF8String.rb +1 -1
- data/lib/taskjuggler/UserManual.rb +1 -1
- data/lib/taskjuggler/VimSyntax.rb +9 -6
- data/lib/taskjuggler/WorkingHours.rb +12 -1
- data/lib/taskjuggler/XMLDocument.rb +1 -1
- data/lib/taskjuggler/XMLElement.rb +1 -1
- data/lib/taskjuggler/apps/Tj3.rb +8 -3
- data/lib/taskjuggler/apps/Tj3Client.rb +1 -1
- data/lib/taskjuggler/apps/Tj3Daemon.rb +1 -1
- data/lib/taskjuggler/apps/Tj3Man.rb +1 -1
- data/lib/taskjuggler/apps/Tj3SsReceiver.rb +2 -2
- data/lib/taskjuggler/apps/Tj3SsSender.rb +1 -1
- data/lib/taskjuggler/apps/Tj3TsReceiver.rb +1 -1
- data/lib/taskjuggler/apps/Tj3TsSender.rb +1 -1
- data/lib/taskjuggler/apps/Tj3TsSummary.rb +1 -1
- data/lib/taskjuggler/daemon/Daemon.rb +1 -1
- data/lib/taskjuggler/daemon/ProcessIntercom.rb +1 -1
- data/lib/taskjuggler/daemon/ProjectBroker.rb +1 -1
- data/lib/taskjuggler/daemon/ProjectServer.rb +1 -1
- data/lib/taskjuggler/daemon/ReportServer.rb +2 -2
- data/lib/taskjuggler/daemon/ReportServlet.rb +1 -1
- data/lib/taskjuggler/daemon/WebServer.rb +1 -1
- data/lib/taskjuggler/daemon/WelcomePage.rb +1 -1
- data/lib/taskjuggler/deep_copy.rb +1 -1
- data/lib/taskjuggler/reports/AccountListRE.rb +115 -0
- data/lib/taskjuggler/reports/CSVFile.rb +1 -1
- data/lib/taskjuggler/reports/CollisionDetector.rb +1 -1
- data/lib/taskjuggler/reports/ColumnTable.rb +1 -1
- data/lib/taskjuggler/reports/GanttChart.rb +1 -1
- data/lib/taskjuggler/reports/GanttContainer.rb +1 -3
- data/lib/taskjuggler/reports/GanttHeader.rb +1 -1
- data/lib/taskjuggler/reports/GanttHeaderScaleItem.rb +1 -1
- data/lib/taskjuggler/reports/GanttLine.rb +23 -12
- data/lib/taskjuggler/reports/GanttLoadStack.rb +1 -1
- data/lib/taskjuggler/reports/GanttMilestone.rb +1 -1
- data/lib/taskjuggler/reports/GanttRouter.rb +1 -1
- data/lib/taskjuggler/reports/GanttTaskBar.rb +1 -1
- data/lib/taskjuggler/reports/HTMLGraphics.rb +1 -1
- data/lib/taskjuggler/reports/ICalReport.rb +5 -2
- data/lib/taskjuggler/reports/Navigator.rb +1 -1
- data/lib/taskjuggler/reports/NikuReport.rb +1 -1
- data/lib/taskjuggler/reports/Report.rb +29 -4
- data/lib/taskjuggler/reports/ReportBase.rb +15 -1
- data/lib/taskjuggler/reports/ReportContext.rb +1 -1
- data/lib/taskjuggler/reports/ReportTable.rb +1 -1
- data/lib/taskjuggler/reports/ReportTableCell.rb +1 -1
- data/lib/taskjuggler/reports/ReportTableColumn.rb +1 -1
- data/lib/taskjuggler/reports/ReportTableLegend.rb +1 -1
- data/lib/taskjuggler/reports/ReportTableLine.rb +1 -1
- data/lib/taskjuggler/reports/ResourceListRE.rb +3 -5
- data/lib/taskjuggler/reports/StatusSheetReport.rb +2 -2
- data/lib/taskjuggler/reports/TableReport.rb +336 -204
- data/lib/taskjuggler/reports/TableReportColumn.rb +30 -0
- data/lib/taskjuggler/reports/TagFile.rb +2 -2
- data/lib/taskjuggler/reports/TaskListRE.rb +3 -6
- data/lib/taskjuggler/reports/TextReport.rb +1 -1
- data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -3
- data/lib/taskjuggler/reports/TjpExportRE.rb +4 -1
- data/lib/tj3.rb +1 -1
- data/lib/tj3client.rb +1 -1
- data/lib/tj3d.rb +1 -1
- data/lib/tj3man.rb +1 -1
- data/lib/tj3ss_receiver.rb +1 -1
- data/lib/tj3ss_sender.rb +1 -1
- data/lib/tj3ts_receiver.rb +1 -1
- data/lib/tj3ts_sender.rb +1 -1
- data/lib/tj3ts_summary.rb +1 -1
- data/lib/updateheader.sh +4 -1
- data/manual/Getting_Started +7 -4
- data/manual/How_To_Contribute +26 -5
- data/manual/Installation +26 -18
- data/manual/Intro +55 -33
- data/manual/Reporting_Bugs +18 -8
- data/manual/Rich_Text_Attributes +16 -3
- data/manual/Software +2 -2
- data/manual/TaskJuggler_2x_Migration +2 -2
- data/manual/The_TaskJuggler_Syntax +10 -0
- data/manual/Tutorial +2 -2
- data/manual/html/Day_To_Day_Juggling.html +16 -12
- data/manual/html/Getting_Started.html +9 -7
- data/manual/html/How_To_Contribute.html +18 -10
- data/manual/html/Installation.html +18 -15
- data/manual/html/Intro.html +44 -28
- data/manual/html/Reporting_Bugs.html +9 -7
- data/manual/html/Rich_Text_Attributes.html +11 -8
- data/manual/html/Software.html +5 -5
- data/manual/html/TaskJuggler_2x_Migration.html +4 -4
- data/manual/html/TaskJuggler_Internals.html +3 -3
- data/manual/html/The_TaskJuggler_Syntax.html +6 -3
- data/manual/html/Tutorial.html +12 -12
- data/manual/html/account.html +19 -10
- data/manual/html/account.task.html +5 -28
- data/manual/html/accountprefix.html +5 -5
- data/manual/html/{report.html → accountreport.html} +140 -23
- data/manual/html/accountroot.html +142 -0
- data/manual/html/active.html +5 -5
- data/manual/html/adopt.task.html +7 -8
- data/manual/html/aggregate.html +145 -0
- data/manual/html/alert.html +12 -11
- data/manual/html/alertlevels.html +102 -0
- data/manual/html/allocate.html +6 -6
- data/manual/html/alphabet.html +1 -1
- data/manual/html/alternative.html +3 -3
- data/manual/html/author.html +3 -3
- data/manual/html/balance.html +84 -11
- data/manual/html/booking.resource.html +3 -3
- data/manual/html/booking.task.html +3 -3
- data/manual/html/caption.html +6 -4
- data/manual/html/cellcolor.column.html +3 -3
- data/manual/html/celltext.column.html +3 -3
- data/manual/html/center.html +28 -4
- data/manual/html/charge.html +3 -3
- data/manual/html/chargeset.html +5 -5
- data/manual/html/columnid.html +40 -9
- data/manual/html/columns.html +6 -4
- data/manual/html/complete.html +15 -9
- data/manual/html/copyright.html +5 -5
- data/manual/html/{credit.html → credits.html} +15 -12
- data/manual/html/css/tjreport.css +30 -0
- data/manual/html/currency.html +28 -15
- data/manual/html/currencyformat.html +4 -4
- data/manual/html/dailymax.html +3 -3
- data/manual/html/dailymin.html +3 -3
- data/manual/html/dailyworkinghours.html +3 -3
- data/manual/html/date.extend.html +3 -3
- data/manual/html/date.html +3 -3
- data/manual/html/definitions.html +3 -3
- data/manual/html/depends.html +3 -3
- data/manual/html/details.html +3 -3
- data/manual/html/disabled.html +9 -3
- data/manual/html/duration.html +3 -3
- data/manual/html/efficiency.html +3 -3
- data/manual/html/effort.html +3 -3
- data/manual/html/email.html +3 -3
- data/manual/html/enabled.html +9 -3
- data/manual/html/end.column.html +3 -3
- data/manual/html/end.html +3 -3
- data/manual/html/end.limit.html +3 -3
- data/manual/html/end.report.html +4 -4
- data/manual/html/end.timesheet.html +3 -3
- data/manual/html/endcredit.html +18 -9
- data/manual/html/epilog.html +6 -4
- data/manual/html/export.html +10 -6
- data/manual/html/extend.html +3 -3
- data/manual/html/fail.html +3 -3
- data/manual/html/fdl.html +3 -3
- data/manual/html/flags.account.html +3 -3
- data/manual/html/flags.html +3 -3
- data/manual/html/flags.journalentry.html +3 -3
- data/manual/html/flags.report.html +6 -4
- data/manual/html/flags.resource.html +3 -3
- data/manual/html/flags.statussheet.html +3 -3
- data/manual/html/flags.task.html +3 -3
- data/manual/html/flags.timesheet.html +3 -3
- data/manual/html/fontcolor.column.html +3 -3
- data/manual/html/footer.html +28 -4
- data/manual/html/formats.html +4 -4
- data/manual/html/functions.html +4 -4
- data/manual/html/gapduration.html +3 -3
- data/manual/html/gaplength.html +4 -4
- data/manual/html/halign.center.html +3 -3
- data/manual/html/halign.column.html +3 -3
- data/manual/html/halign.left.html +3 -3
- data/manual/html/halign.right.html +3 -3
- data/manual/html/hasalert.html +3 -3
- data/manual/html/header.html +28 -4
- data/manual/html/headline.html +6 -6
- data/manual/html/hideaccount.html +73 -0
- data/manual/html/hidejournalentry.html +6 -6
- data/manual/html/hidereport.html +3 -3
- data/manual/html/hideresource.html +4 -4
- data/manual/html/hidetask.html +4 -4
- data/manual/html/icalreport.html +3 -3
- data/manual/html/include.macro.html +4 -4
- data/manual/html/include.project.html +5 -6
- data/manual/html/include.properties.html +5 -97
- data/manual/html/index.html +2 -2
- data/manual/html/inherit.extend.html +3 -3
- data/manual/html/interval1.html +3 -3
- data/manual/html/interval2.html +3 -3
- data/manual/html/interval3.html +3 -3
- data/manual/html/interval4.html +3 -3
- data/manual/html/isactive.html +3 -3
- data/manual/html/ischildof.html +3 -3
- data/manual/html/isdependencyof.html +3 -3
- data/manual/html/isdutyof.html +3 -3
- data/manual/html/isfeatureof.html +3 -3
- data/manual/html/isleaf.html +3 -3
- data/manual/html/ismilestone.html +3 -3
- data/manual/html/isongoing.html +3 -3
- data/manual/html/isresource.html +5 -5
- data/manual/html/{alert level.html → isresponsibilityof.html} +19 -14
- data/manual/html/istask.html +5 -5
- data/manual/html/journalattributes.html +6 -4
- data/manual/html/journalentry.html +3 -3
- data/manual/html/journalmode.html +8 -6
- data/manual/html/leaveallowance.html +139 -0
- data/manual/html/leaves.html +140 -0
- data/manual/html/left.html +30 -6
- data/manual/html/length.html +4 -4
- data/manual/html/limits.allocate.html +5 -32
- data/manual/html/limits.html +3 -3
- data/manual/html/limits.resource.html +3 -3
- data/manual/html/limits.task.html +3 -3
- data/manual/html/listitem.column.html +3 -3
- data/manual/html/listtype.column.html +3 -3
- data/manual/html/loadunit.html +6 -4
- data/manual/html/logicalexpression.html +3 -3
- data/manual/html/logicalflagexpression.html +3 -3
- data/manual/html/macro.html +3 -3
- data/manual/html/managers.html +3 -3
- data/manual/html/mandatory.html +3 -3
- data/manual/html/maxend.html +3 -3
- data/manual/html/maximum.html +3 -3
- data/manual/html/maxstart.html +3 -3
- data/manual/html/milestone.html +3 -3
- data/manual/html/minend.html +3 -3
- data/manual/html/minimum.html +3 -3
- data/manual/html/minstart.html +3 -3
- data/manual/html/monthlymax.html +3 -3
- data/manual/html/monthlymin.html +3 -3
- data/manual/html/navbar.html +23 -5
- data/manual/html/navigator.html +34 -3
- data/manual/html/newtask.html +3 -3
- data/manual/html/nikureport.html +3 -3
- data/manual/html/note.task.html +3 -3
- data/manual/html/now.html +3 -3
- data/manual/html/numberformat.html +4 -4
- data/manual/html/onend.html +3 -3
- data/manual/html/onstart.html +3 -3
- data/manual/html/opennodes.html +6 -4
- data/manual/html/overtime.booking.html +4 -4
- data/manual/html/period.column.html +3 -3
- data/manual/html/period.limit.html +3 -3
- data/manual/html/period.report.html +4 -4
- data/manual/html/period.task.html +3 -3
- data/manual/html/persistent.html +3 -3
- data/manual/html/precedes.html +3 -3
- data/manual/html/priority.html +3 -3
- data/manual/html/priority.timesheet.html +3 -3
- data/manual/html/project.html +4 -4
- data/manual/html/projectid.html +3 -3
- data/manual/html/projectid.task.html +3 -3
- data/manual/html/projectids.html +3 -3
- data/manual/html/projection.html +9 -3
- data/manual/html/prolog.html +6 -4
- data/manual/html/properties.html +193 -9
- data/manual/html/purge.html +5 -5
- data/manual/html/rate.html +3 -3
- data/manual/html/rate.resource.html +3 -3
- data/manual/html/reference.extend.html +3 -3
- data/manual/html/remaining.html +3 -3
- data/manual/html/replace.html +9 -6
- data/manual/html/reportprefix.html +5 -5
- data/manual/html/resource.html +22 -4
- data/manual/html/resourceattributes.html +6 -6
- data/manual/html/resourceprefix.html +3 -3
- data/manual/html/resourcereport.html +311 -8
- data/manual/html/resourceroot.html +6 -4
- data/manual/html/resources.limit.html +4 -4
- data/manual/html/responsible.html +3 -3
- data/manual/html/richtext.extend.html +3 -3
- data/manual/html/right.html +30 -6
- data/manual/html/rollupaccount.html +69 -0
- data/manual/html/rollupresource.html +6 -6
- data/manual/html/rolluptask.html +4 -4
- data/manual/html/scale.column.html +3 -3
- data/manual/html/scenario.html +3 -3
- data/manual/html/scenario.ical.html +3 -3
- data/manual/html/scenarios.export.html +3 -3
- data/manual/html/scenarios.html +6 -4
- data/manual/html/scenariospecific.extend.html +3 -3
- data/manual/html/scheduled.html +3 -3
- data/manual/html/scheduling.html +3 -3
- data/manual/html/select.html +3 -3
- data/manual/html/selfcontained.html +6 -4
- data/manual/html/shift.allocate.html +77 -0
- data/manual/html/shift.html +13 -7
- data/manual/html/shift.resource.html +11 -5
- data/manual/html/shift.task.html +9 -3
- data/manual/html/shift.timesheet.html +4 -4
- data/manual/html/shifts.allocate.html +6 -6
- data/manual/html/shifts.resource.html +3 -3
- data/manual/html/shifts.task.html +3 -3
- data/manual/html/shorttimeformat.html +3 -3
- data/manual/html/sloppy.booking.html +4 -4
- data/manual/html/sloppy.projection.html +12 -6
- data/manual/html/sortaccounts.html +73 -0
- data/manual/html/sortjournalentries.html +8 -6
- data/manual/html/sortresources.html +4 -4
- data/manual/html/sorttasks.html +4 -4
- data/manual/html/start.column.html +3 -3
- data/manual/html/start.html +3 -3
- data/manual/html/start.limit.html +3 -3
- data/manual/html/start.report.html +4 -4
- data/manual/html/startcredit.html +10 -4
- data/manual/html/status.statussheet.html +5 -5
- data/manual/html/status.timesheet.html +5 -5
- data/manual/html/statussheet.html +3 -3
- data/manual/html/statussheetreport.html +10 -6
- data/manual/html/strict.projection.html +10 -4
- data/manual/html/summary.html +3 -3
- data/manual/html/supplement.html +5 -5
- data/manual/html/supplement.resource.html +22 -4
- data/manual/html/supplement.task.html +4 -4
- data/manual/html/tagfile.html +3 -3
- data/manual/html/task.html +3 -3
- data/manual/html/task.statussheet.html +3 -3
- data/manual/html/task.timesheet.html +3 -3
- data/manual/html/taskattributes.html +3 -3
- data/manual/html/taskprefix.html +3 -3
- data/manual/html/taskreport.html +347 -8
- data/manual/html/taskroot.html +6 -4
- data/manual/html/text.extend.html +3 -3
- data/manual/html/textreport.html +333 -8
- data/manual/html/timeformat.html +4 -4
- data/manual/html/timeoff.nikureport.html +3 -3
- data/manual/html/timesheet.html +3 -3
- data/manual/html/timesheetreport.html +10 -6
- data/manual/html/timezone.export.html +3 -3
- data/manual/html/timezone.html +3 -3
- data/manual/html/timezone.report.html +6 -4
- data/manual/html/timezone.shift.html +3 -3
- data/manual/html/timingresolution.html +3 -3
- data/manual/html/title.column.html +3 -3
- data/manual/html/title.html +4 -4
- data/manual/html/toc.html +1705 -658
- data/manual/html/tooltip.column.html +3 -3
- data/manual/html/trackingscenario.html +3 -3
- data/manual/html/treelevel.html +3 -3
- data/manual/html/vacation.html +3 -3
- data/manual/html/vacation.resource.html +4 -4
- data/manual/html/vacation.shift.html +4 -4
- data/manual/html/warn.html +3 -3
- data/manual/html/weeklymax.html +3 -3
- data/manual/html/weeklymin.html +3 -3
- data/manual/html/weekstartsmonday.html +3 -3
- data/manual/html/weekstartssunday.html +3 -3
- data/manual/html/width.column.html +3 -3
- data/manual/html/work.html +3 -3
- data/manual/html/workinghours.project.html +3 -3
- data/manual/html/workinghours.resource.html +3 -3
- data/manual/html/workinghours.shift.html +3 -3
- data/manual/html/yearlyworkingdays.html +4 -4
- data/spec/ICalendar_spec.rb +4 -2
- data/spec/IntervalList_spec.rb +1 -1
- data/spec/ProjectBroker_spec.rb +2 -6
- data/spec/StatusSheets_spec.rb +1 -1
- data/spec/TernarySearchTree_spec.rb +2 -2
- data/spec/TimeSheets_spec.rb +1 -1
- data/spec/Tj3Daemon_spec.rb +1 -1
- data/spec/Tj3_spec.rb +1 -1
- data/spec/support/DaemonControl.rb +1 -1
- data/spec/support/spec_helper.rb +19 -0
- data/taskjuggler.gemspec +1 -0
- data/test/MessageChecker.rb +1 -1
- data/test/ReferenceGenerator.rb +1 -1
- data/test/TestSuite/CSV-Reports/Leave.tjp +37 -0
- data/test/TestSuite/CSV-Reports/celltext.tjp +1 -1
- data/test/TestSuite/CSV-Reports/efficiency.tjp +20 -0
- data/test/TestSuite/CSV-Reports/headcount.tjp +31 -0
- data/test/TestSuite/CSV-Reports/refs/Leave.csv +5 -0
- data/test/TestSuite/CSV-Reports/refs/alert.csv +6 -0
- data/test/TestSuite/CSV-Reports/refs/celltext.csv +6 -0
- data/test/TestSuite/CSV-Reports/refs/efficiency.csv +5 -0
- data/test/TestSuite/CSV-Reports/refs/headcount.csv +4 -0
- data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +6 -0
- data/test/TestSuite/CSV-Reports/refs/sortBy_duration.down.csv +6 -0
- data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +6 -0
- data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +6 -0
- data/test/TestSuite/CSV-Reports/refs/taskreport.csv +6 -0
- data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +14 -0
- data/test/TestSuite/CSV-Reports/resourcereport.tjp +1 -1
- data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +1 -1
- data/test/TestSuite/CSV-Reports/sortByTree.tjp +1 -1
- data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +1 -1
- data/test/TestSuite/CSV-Reports/taskreport.tjp +1 -1
- data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +1 -1
- data/test/TestSuite/Export-Reports/refs/AccountReport.tjp +1089 -0
- data/test/TestSuite/Export-Reports/refs/AlertLevels.tjp +24 -0
- data/test/TestSuite/Export-Reports/refs/Complete.tjp +5 -25
- data/test/TestSuite/Export-Reports/refs/navigator.tjp +58 -0
- data/test/TestSuite/Export-Reports/refs/template.tjp +142 -0
- data/test/TestSuite/Export-Reports/refs/textreport.tjp +19 -0
- data/test/TestSuite/ReportGenerator/Correct/Alerts.tjp +26 -7
- data/test/TestSuite/ReportGenerator/Correct/refs/Alerts-1.csv +177 -141
- data/test/TestSuite/ReportGenerator/Correct/refs/FTE-1.csv +1 -1
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Shift2.tjp +4 -4
- data/test/TestSuite/Syntax/Correct/Account.tjp +23 -10
- data/test/TestSuite/Syntax/Correct/AccountReport.tjp +74 -0
- data/test/TestSuite/Syntax/Correct/AdoptedTasks.tjp +4 -0
- data/test/TestSuite/Syntax/Correct/AlertLevels.tjp +25 -0
- data/test/TestSuite/Syntax/Correct/Celltext.tjp +3 -3
- data/test/TestSuite/Syntax/Correct/Complete.tjp +8 -5
- data/test/TestSuite/Syntax/Correct/Leave.tjp +37 -0
- data/test/TestSuite/Syntax/Correct/Reports.tjp +4 -4
- data/test/TestSuite/Syntax/Correct/Shift.tjp +4 -4
- data/test/TestSuite/Syntax/Correct/manual2example.rb +4 -3
- data/test/TestSuite/Syntax/Correct/navigator.tjp +31 -0
- data/test/TestSuite/Syntax/Correct/template.tjp +338 -0
- data/test/TestSuite/Syntax/Correct/textreport.tjp +21 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +12 -10
- data/test/TestSuite/Syntax/Errors/{adopt_duplicate_child.tjp → adopt_duplicate_child-1.tjp} +0 -0
- data/test/TestSuite/Syntax/Errors/{adopt_common_root.tjp → adopt_duplicate_child-2.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{adopt_duplicate_parent.tjp → adopt_duplicate_child-3.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/adopt_self.tjp +7 -0
- data/test/TestSuite/Syntax/Errors/alert_level_redef.tjp +8 -0
- data/test/TestSuite/Syntax/Errors/alert_name_redef.tjp +8 -0
- data/test/TestSuite/Syntax/Errors/too_few_alert_levels.tjp +5 -0
- data/test/TjpGen.rb +1 -1
- data/test/all.rb +1 -1
- data/test/test_AlgorithmDiff.rb +1 -1
- data/test/test_BatchProcessor.rb +23 -10
- data/test/test_CSV-Reports.rb +1 -1
- data/test/test_CSVFile.rb +1 -1
- data/test/test_CollisionDetector.rb +1 -1
- data/test/test_Export-Reports.rb +1 -1
- data/test/test_Journal.rb +42 -15
- data/test/test_Limits.rb +1 -1
- data/test/test_LogicalExpression.rb +1 -1
- data/test/test_MacroTable.rb +8 -3
- data/test/test_Project.rb +1 -1
- data/test/test_ProjectFileScanner.rb +1 -1
- data/test/test_PropertySet.rb +1 -1
- data/test/test_Query.rb +1 -1
- data/test/test_RealFormat.rb +1 -1
- data/test/test_ReportGenerator.rb +1 -1
- data/test/test_RichText.rb +1 -1
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +1 -1
- data/test/test_SimpleQueryExpander.rb +1 -1
- data/test/test_Syntax.rb +1 -1
- data/test/test_TextFormatter.rb +1 -1
- data/test/test_TjTime.rb +1 -1
- data/test/test_TjpExample.rb +1 -1
- data/test/test_URLParameter.rb +1 -1
- data/test/test_UTF8String.rb +1 -1
- data/test/test_WorkingHours.rb +1 -1
- data/test/test_deep_copy.rb +1 -1
- metadata +318 -248
- data/test/TestSuite/Syntax/Errors/purge_no_list.tjp +0 -8
@@ -95,8 +95,8 @@ task inheritedAllocs "Inherited Allocations" {
|
|
95
95
|
|
96
96
|
task allocShift "Allocation Shift" {
|
97
97
|
effort 10d
|
98
|
-
allocate r3 {
|
99
|
-
r4 {
|
98
|
+
allocate r3 { shifts mowefr 2007-09-01 +1w },
|
99
|
+
r4 { shifts tuthsa 2007-09-01 +1w }
|
100
100
|
${Fixend "2007-09-11-14:00"}
|
101
101
|
}
|
102
102
|
|
@@ -3,7 +3,7 @@ project "Shift2" 2010-02-06 +1w
|
|
3
3
|
include "checks.tji"
|
4
4
|
|
5
5
|
shift s2 "s2" {
|
6
|
-
replace
|
6
|
+
replace
|
7
7
|
workinghours mon - fri 8:00 - 16:00
|
8
8
|
}
|
9
9
|
|
@@ -29,7 +29,7 @@ task "T1" {
|
|
29
29
|
}
|
30
30
|
|
31
31
|
resource r2 "r2" {
|
32
|
-
|
32
|
+
shifts s2 2010-02-08 +1w
|
33
33
|
}
|
34
34
|
|
35
35
|
task "T2" {
|
@@ -39,7 +39,7 @@ task "T2" {
|
|
39
39
|
}
|
40
40
|
|
41
41
|
resource r3 "r3" {
|
42
|
-
|
42
|
+
shifts s3 2010-02-08 +1w
|
43
43
|
}
|
44
44
|
|
45
45
|
task "T3" {
|
@@ -49,7 +49,7 @@ task "T3" {
|
|
49
49
|
}
|
50
50
|
|
51
51
|
resource r4 "r4" {
|
52
|
-
|
52
|
+
shifts s4 2010-02-08 +1w
|
53
53
|
}
|
54
54
|
|
55
55
|
task "T4" {
|
@@ -6,9 +6,12 @@ project simple "Simple Project" "1.0" 2007-01-01 - 2007-01-30 {
|
|
6
6
|
# *** EXAMPLE: 1 +
|
7
7
|
account project_cost "Project Costs"
|
8
8
|
account payments "Customer Payments"{
|
9
|
-
|
9
|
+
credits 2007-01-01 "Customer down payment" 500.0,
|
10
|
+
2007-01-14 "1st rate" 2000.0
|
10
11
|
}
|
11
12
|
|
13
|
+
balance project_cost payments
|
14
|
+
|
12
15
|
resource tux "Tux" {
|
13
16
|
rate 300
|
14
17
|
}
|
@@ -19,11 +22,11 @@ resource konqui "Konqui" {
|
|
19
22
|
task items "Room decoration" {
|
20
23
|
start 2007-01-06
|
21
24
|
# The default account for all tasks
|
22
|
-
|
25
|
+
chargeset project_cost
|
23
26
|
|
24
27
|
task plan "Plan work and buy material" {
|
25
28
|
# Upfront material cost
|
26
|
-
|
29
|
+
charge 500.0 onstart
|
27
30
|
length 2d
|
28
31
|
}
|
29
32
|
task remove "Remove old inventory" {
|
@@ -40,15 +43,25 @@ task items "Room decoration" {
|
|
40
43
|
task acceptance "Presentation and customer acceptance" {
|
41
44
|
duration 5d
|
42
45
|
depends !implement
|
43
|
-
|
46
|
+
chargeset payments
|
44
47
|
# Customer pays at end of acceptance
|
45
|
-
|
48
|
+
charge 2000.0 onend
|
46
49
|
}
|
47
50
|
}
|
48
51
|
# *** EXAMPLE: 1 -
|
49
52
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
accountreport "Account-1" {
|
54
|
+
formats html
|
55
|
+
timeformat "%d-%M-%y"
|
56
|
+
columns index, name, weekly
|
57
|
+
}
|
58
|
+
|
59
|
+
accountreport "Account-2" {
|
60
|
+
formats html
|
61
|
+
timeformat "%d-%M-%y"
|
62
|
+
columns index,
|
63
|
+
name,
|
64
|
+
weekly {
|
65
|
+
celltext 1 "<-query attribute='turnover'->"
|
66
|
+
}
|
67
|
+
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
project "AccountReport" 2011-11-09 +1y {
|
2
|
+
currencyformat "(" ")" "," "." 0
|
3
|
+
}
|
4
|
+
|
5
|
+
account resourceCost "Resource Cost" {
|
6
|
+
aggregate resources
|
7
|
+
account teamA "Team A"
|
8
|
+
account teamB "Team B"
|
9
|
+
}
|
10
|
+
account productCost "Product Cost" {
|
11
|
+
aggregate tasks
|
12
|
+
}
|
13
|
+
account customerPayments "Customer Payments" {
|
14
|
+
credits 2011-12-01 "First downpayment" 80000,
|
15
|
+
2012-06-01 "Second downpayment" 200000
|
16
|
+
}
|
17
|
+
|
18
|
+
balance productCost customerPayments
|
19
|
+
|
20
|
+
resource teamA "Team A" {
|
21
|
+
rate 420
|
22
|
+
chargeset teamA
|
23
|
+
resource "R1"
|
24
|
+
resource "R2"
|
25
|
+
}
|
26
|
+
resource teamB "Team B" {
|
27
|
+
rate 380
|
28
|
+
chargeset teamB
|
29
|
+
resource "R3"
|
30
|
+
resource "R4"
|
31
|
+
}
|
32
|
+
|
33
|
+
task "Products" {
|
34
|
+
chargeset productCost
|
35
|
+
|
36
|
+
task p1 "Product 1" {
|
37
|
+
effort 20m
|
38
|
+
allocate teamA, teamB
|
39
|
+
}
|
40
|
+
task p2 "Product 2" {
|
41
|
+
effort 18m
|
42
|
+
allocate teamA
|
43
|
+
priority 600
|
44
|
+
}
|
45
|
+
task p3 "Product 3" {
|
46
|
+
effort 6m
|
47
|
+
allocate teamB
|
48
|
+
priority 600
|
49
|
+
}
|
50
|
+
task mf "Manufacturing" {
|
51
|
+
depends !p1, !p2, !p3
|
52
|
+
duration 2w
|
53
|
+
charge 12000 onend
|
54
|
+
}
|
55
|
+
task "Final Payment" {
|
56
|
+
depends !mf
|
57
|
+
purge chargeset
|
58
|
+
chargeset customerPayments
|
59
|
+
charge 170000 onstart
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
accountreport "TeamBudget" {
|
64
|
+
formats html
|
65
|
+
accountroot resourceCost
|
66
|
+
balance -
|
67
|
+
columns no, name, quarterly { celltext 1 "<-query attribute='turnover'->" }
|
68
|
+
}
|
69
|
+
|
70
|
+
accountreport "ProfiAndLoss" {
|
71
|
+
formats html
|
72
|
+
columns no, name, monthly
|
73
|
+
}
|
74
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
project "Alert Levels" 2011-11-24 +2m {
|
2
|
+
alertlevels green "Low" "#2AA46C",
|
3
|
+
blue "Guarded" "#457CC4",
|
4
|
+
yellow "Elevated" "#F1D821",
|
5
|
+
orange "High" "#F99836",
|
6
|
+
red "Severe" "#E43745"
|
7
|
+
}
|
8
|
+
|
9
|
+
task "Holiday Season" {
|
10
|
+
journalentry 2011-11-24 "All safe unless you are a turkey" {
|
11
|
+
alert green
|
12
|
+
}
|
13
|
+
journalentry 2011-11-27 "Strange lights appearing everywhere" {
|
14
|
+
alert blue
|
15
|
+
}
|
16
|
+
journalentry 2011-12-01 "Alarm bells heared" {
|
17
|
+
alert yellow
|
18
|
+
}
|
19
|
+
journalentry 2011-12-20 "Everybody has strange packages" {
|
20
|
+
alert orange
|
21
|
+
}
|
22
|
+
journalentry 2011-12-25 "Guy with red coat entered through chimney" {
|
23
|
+
alert red
|
24
|
+
}
|
25
|
+
}
|
@@ -16,19 +16,19 @@ task t "Task" {
|
|
16
16
|
# Just a very basic report with some standard columns
|
17
17
|
taskreport simple "SimpleReport" {
|
18
18
|
formats html
|
19
|
-
columns
|
19
|
+
columns bsi, name, start, end, weekly
|
20
20
|
}
|
21
21
|
|
22
22
|
# Report with custom colum title
|
23
23
|
taskreport custom "CustomTitle" {
|
24
24
|
formats html
|
25
|
-
columns
|
25
|
+
columns bsi, name { title "Work Item" }, effort
|
26
26
|
}
|
27
27
|
|
28
28
|
# *** EXAMPLE: 1 +
|
29
29
|
# Report with index and task name combined in one single column
|
30
30
|
taskreport combined "CombinedColumn" {
|
31
31
|
formats html
|
32
|
-
columns name { celltext 1 "<-query attribute='
|
32
|
+
columns name { celltext 1 "<-query attribute='bsi'-> <-query->"},
|
33
33
|
start, end, weekly
|
34
34
|
}
|
@@ -1,17 +1,20 @@
|
|
1
|
-
project simple "Simple Project" "1.0" 2007-01-01
|
1
|
+
project simple "Simple Project" "1.0" 2007-01-01 +2m {
|
2
2
|
timezone "America/Denver"
|
3
3
|
now 2007-01-15
|
4
4
|
}
|
5
5
|
|
6
6
|
# *** EXAMPLE: 1 +
|
7
|
-
resource tux "Tux"
|
8
7
|
|
9
|
-
task
|
8
|
+
task "Build house" {
|
10
9
|
start 2007-01-06
|
11
|
-
|
12
|
-
allocate tux
|
10
|
+
duration 30d
|
13
11
|
# This task should have been completed on Jan 15, but only
|
14
12
|
# 20% of the task have been completed so far.
|
15
13
|
complete 20
|
16
14
|
}
|
17
15
|
|
16
|
+
taskreport "Complete" {
|
17
|
+
formats html
|
18
|
+
columns name, end { title "Due date" }, complete, gauge, chart
|
19
|
+
}
|
20
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
project "Annual Leave" 2011-12-19 +1y {
|
2
|
+
now 2012-07-01
|
3
|
+
}
|
4
|
+
|
5
|
+
leaves holiday "Christmas" 2011-12-24 +3d,
|
6
|
+
holiday "New Year" 2011-12-31 +3d
|
7
|
+
|
8
|
+
shift s1 "Shift 1" {
|
9
|
+
leaves annual 2011-12-19 +3w,
|
10
|
+
special 2012-01-12 +1d
|
11
|
+
}
|
12
|
+
|
13
|
+
resource team "Team" {
|
14
|
+
leaveallowances annual 2011-12-19 20d
|
15
|
+
leaves holiday 2012-01-06
|
16
|
+
|
17
|
+
resource r1 "R1" {
|
18
|
+
leaves annual 2011-12-19 +3w,
|
19
|
+
special 2012-01-12 +1d
|
20
|
+
}
|
21
|
+
resource r2 "R2" {
|
22
|
+
leaveallowances annual 2012-06-01 -10d
|
23
|
+
leaves sick 2012-01-04 +2d,
|
24
|
+
unpaid 2012-01-10 +3d
|
25
|
+
}
|
26
|
+
}
|
27
|
+
resource r3 "R3" {
|
28
|
+
shift s1 2011-12-19 +3w
|
29
|
+
leaves sick 2012-01-04 +2d
|
30
|
+
}
|
31
|
+
|
32
|
+
task "foo"
|
33
|
+
|
34
|
+
resourcereport "." {
|
35
|
+
formats html
|
36
|
+
columns name, annualleave, annualleavebalance, sickleave, specialleave, unpaidleave
|
37
|
+
}
|
@@ -20,7 +20,7 @@ account a2 "FooAccount 2" {
|
|
20
20
|
}
|
21
21
|
|
22
22
|
task t1 "FooTask1" {
|
23
|
-
|
23
|
+
chargeset a4
|
24
24
|
task t1_1 "FooTask1_1" {
|
25
25
|
flags flag2
|
26
26
|
start 2000-01-01
|
@@ -35,8 +35,8 @@ task t2 "FooTask2" {
|
|
35
35
|
flags flag1
|
36
36
|
start 2000-01-01
|
37
37
|
duration 1d
|
38
|
-
|
39
|
-
|
38
|
+
chargeset a4
|
39
|
+
charge 10000.0 onstart
|
40
40
|
}
|
41
41
|
|
42
42
|
task t3 "FooTask3" {
|
@@ -48,7 +48,7 @@ task t3 "FooTask3" {
|
|
48
48
|
taskreport task "Report_task" {
|
49
49
|
formats html
|
50
50
|
balance a1 a2
|
51
|
-
columns
|
51
|
+
columns bsi, name { title "Task Name" }, daily, effort
|
52
52
|
sorttasks tree, plan.start.up, name.up
|
53
53
|
}
|
54
54
|
|
@@ -16,8 +16,8 @@ shift s1 "Shift1" {
|
|
16
16
|
}
|
17
17
|
|
18
18
|
resource r1 "Resource1" {
|
19
|
-
|
20
|
-
|
19
|
+
shifts s1 2000-01-01 - 2000-01-10,
|
20
|
+
s2 2000-01-11 - 2000-01-20
|
21
21
|
}
|
22
22
|
|
23
23
|
shift s3 "Part-time schedule 1" {
|
@@ -46,9 +46,9 @@ shift s5 "All-day, all-week shift" {
|
|
46
46
|
# Now determine when these schedules are applicable
|
47
47
|
resource r2 "Resource2" {
|
48
48
|
# r2 works three days a week from January to June
|
49
|
-
|
49
|
+
shifts s3 2005-01-01 - 2005-01-15,
|
50
50
|
# r2 switches to two days a week
|
51
|
-
|
51
|
+
s4 2005-01-15 - 2006-01-01
|
52
52
|
}
|
53
53
|
|
54
54
|
task t1 "Task1" {
|
@@ -10,8 +10,8 @@
|
|
10
10
|
# published by the Free Software Foundation.
|
11
11
|
#
|
12
12
|
|
13
|
-
def removeTags(fileName)
|
14
|
-
oFile = File.open(
|
13
|
+
def removeTags(fileName, destDir)
|
14
|
+
oFile = File.open("../../../../examples/#{destDir}/#{fileName}", 'w')
|
15
15
|
File.open(fileName, 'r') do |iFile|
|
16
16
|
while line = iFile.gets
|
17
17
|
oFile.puts line unless line =~ /^# \*\*\* EXAMPLE:/
|
@@ -20,5 +20,6 @@ def removeTags(fileName)
|
|
20
20
|
oFile.close
|
21
21
|
end
|
22
22
|
|
23
|
-
removeTags('tutorial.tjp')
|
23
|
+
removeTags('tutorial.tjp', 'Tutorial')
|
24
|
+
removeTags('template.tjp', 'ProjectTemplate')
|
24
25
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
project "Navigator Example" 2011-12-12 +1m
|
2
|
+
|
3
|
+
task foo "Foo" {
|
4
|
+
task "Foo 1"
|
5
|
+
task "Foo 2"
|
6
|
+
}
|
7
|
+
task bar "Bar" {
|
8
|
+
task "Bar 1"
|
9
|
+
task "Bar 2"
|
10
|
+
}
|
11
|
+
|
12
|
+
|
13
|
+
navigator navbar
|
14
|
+
|
15
|
+
textreport frame "" {
|
16
|
+
header -8<-
|
17
|
+
== My Reports ==
|
18
|
+
<[navigator id="navbar"]>
|
19
|
+
->8-
|
20
|
+
footer "----"
|
21
|
+
|
22
|
+
taskreport "Foo Reports" {
|
23
|
+
formats html
|
24
|
+
taskroot foo
|
25
|
+
}
|
26
|
+
taskreport "Bar Reports" {
|
27
|
+
formats html
|
28
|
+
taskroot bar
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
@@ -0,0 +1,338 @@
|
|
1
|
+
/*
|
2
|
+
* This file contains a project skeletton. It is part of the
|
3
|
+
* TaskJuggler project management tool. You can use this as a basis to
|
4
|
+
* start you own project file.
|
5
|
+
*/
|
6
|
+
project your_project_id "Your Project Title" 2011-11-11-0:00--0500 +4m {
|
7
|
+
# Set the default time zone for the project. If not specified, UTC
|
8
|
+
# is used.
|
9
|
+
timezone "America/New_York"
|
10
|
+
# Hide the clock time. Only show the date.
|
11
|
+
timeformat "%Y-%m-%d"
|
12
|
+
# Use US format for numbers
|
13
|
+
numberformat "-" "" "," "." 1
|
14
|
+
# Use US financial format for currency values. Don't show cents.
|
15
|
+
currencyformat "(" ")" "," "." 0
|
16
|
+
# Pick a day during the project that will be reported as 'today' in
|
17
|
+
# the project reports. If not specified, the current day will be
|
18
|
+
# used, but this will likely be outside of the project range, so it
|
19
|
+
# can't be seen in the reports.
|
20
|
+
now 2011-12-24
|
21
|
+
# The currency for all money values is the Euro.
|
22
|
+
currency "USD"
|
23
|
+
|
24
|
+
# You can define multiple scenarios here if you need them.
|
25
|
+
#scenario plan "Plan" {
|
26
|
+
# scenario actual "Actual"
|
27
|
+
#}
|
28
|
+
|
29
|
+
# You can define your own attributes for tasks and resources. This
|
30
|
+
# is handy to capture additonal information about the project that
|
31
|
+
# is not directly impacting the project schedule but you like to
|
32
|
+
# keep in one place.
|
33
|
+
#extend task {
|
34
|
+
# reference spec "Link to Wiki page"
|
35
|
+
#}
|
36
|
+
#extend resource {
|
37
|
+
# text Phone "Phone"
|
38
|
+
#}
|
39
|
+
}
|
40
|
+
|
41
|
+
copyright "Claim your rights here"
|
42
|
+
|
43
|
+
# If you have any text block that you need multiple times to describe
|
44
|
+
# your project, you should define a macro for it. Macros can even have
|
45
|
+
# variable segments that you can set upon calling the macro.
|
46
|
+
#
|
47
|
+
# macro Task [
|
48
|
+
# task "A ${1} task" {
|
49
|
+
# }
|
50
|
+
# ]
|
51
|
+
#
|
52
|
+
# Can be called as
|
53
|
+
# ${Task "big"}
|
54
|
+
# to generate
|
55
|
+
# task "A big task" {
|
56
|
+
# }
|
57
|
+
|
58
|
+
# You can attach flags to accounts, resources and tasks. These can be
|
59
|
+
# used to filter out subsets of them during reporting.
|
60
|
+
flags important, hidden
|
61
|
+
|
62
|
+
# If you want to do budget planning for you project, you need to
|
63
|
+
# define some accounts.
|
64
|
+
account cost "Project Cost" {
|
65
|
+
account dev "Development"
|
66
|
+
account doc "Documentation"
|
67
|
+
}
|
68
|
+
account rev "Customer Payments"
|
69
|
+
|
70
|
+
# The Profit&Loss analysis should be rev - cost accounts.
|
71
|
+
balance cost rev
|
72
|
+
|
73
|
+
# Define you public holidays here.
|
74
|
+
vacation "New Year's Day" 2012-01-02
|
75
|
+
vacation "Birthday of Martin Luther King, Jr." 2012-01-16
|
76
|
+
vacation "Washington's Birthday" 2012-02-20
|
77
|
+
vacation "Memorial Day" 2012-05-28
|
78
|
+
vacation "Independence Day" 2012-07-04
|
79
|
+
vacation "Labor Day" 2012-09-03
|
80
|
+
vacation "Columbus Day" 2012-10-08
|
81
|
+
vacation "Veterans Day" 2012-11-12
|
82
|
+
vacation "Thanksgiving Day" 2012-11-22
|
83
|
+
vacation "Christmas Day" 2012-12-25
|
84
|
+
|
85
|
+
# The daily default rate of all resources. This can be overridden for each
|
86
|
+
# resource. We specify this, so that we can do a good calculation of
|
87
|
+
# the costs of the project.
|
88
|
+
rate 400.0
|
89
|
+
|
90
|
+
# This is a set of example resources.
|
91
|
+
resource r1 "Resource 1"
|
92
|
+
resource t1 "Team 1" {
|
93
|
+
managers r1
|
94
|
+
resource r2 "Resource 2"
|
95
|
+
resource r3 "Resource 3"
|
96
|
+
}
|
97
|
+
|
98
|
+
# This is a resource that does not do any work.
|
99
|
+
resource s1 "System 1" {
|
100
|
+
efficiency 0.0
|
101
|
+
rate 600.0
|
102
|
+
}
|
103
|
+
|
104
|
+
task project "Project" {
|
105
|
+
task wp1 "Workpackage 1" {
|
106
|
+
task t1 "Task 1"
|
107
|
+
task t2 "Task 2"
|
108
|
+
}
|
109
|
+
task wp2 "Work package 2" {
|
110
|
+
depends !wp1
|
111
|
+
task t1 "Task 1"
|
112
|
+
task t2 "Task 2"
|
113
|
+
}
|
114
|
+
task deliveries "Deliveries" {
|
115
|
+
task "Item 1" {
|
116
|
+
depends !!wp1
|
117
|
+
}
|
118
|
+
task "Item 2" {
|
119
|
+
depends !!wp2
|
120
|
+
}
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
# Now the project has been specified completely. Stopping here would
|
125
|
+
# result in a valid TaskJuggler file that could be processed and
|
126
|
+
# scheduled. But no reports would be generated to visualize the
|
127
|
+
# results.
|
128
|
+
|
129
|
+
navigator navbar {
|
130
|
+
hidereport 0
|
131
|
+
}
|
132
|
+
|
133
|
+
macro TaskTip [
|
134
|
+
tooltip istask() -8<-
|
135
|
+
'''Start: ''' <-query attribute='start'->
|
136
|
+
'''End: ''' <-query attribute='end'->
|
137
|
+
----
|
138
|
+
'''Resources:'''
|
139
|
+
|
140
|
+
<-query attribute='resources'->
|
141
|
+
----
|
142
|
+
'''Precursors: '''
|
143
|
+
|
144
|
+
<-query attribute='precursors'->
|
145
|
+
----
|
146
|
+
'''Followers: '''
|
147
|
+
|
148
|
+
<-query attribute='followers'->
|
149
|
+
->8-
|
150
|
+
]
|
151
|
+
|
152
|
+
textreport frame "" {
|
153
|
+
header -8<-
|
154
|
+
== TaskJuggler Project Template ==
|
155
|
+
<[navigator id="navbar"]>
|
156
|
+
->8-
|
157
|
+
footer "----"
|
158
|
+
textreport index "Overview" {
|
159
|
+
formats html
|
160
|
+
center '<[report id="overview"]>'
|
161
|
+
}
|
162
|
+
|
163
|
+
textreport "Status" {
|
164
|
+
formats html
|
165
|
+
center -8<-
|
166
|
+
<[report id="status.dashboard"]>
|
167
|
+
----
|
168
|
+
<[report id="status.completed"]>
|
169
|
+
----
|
170
|
+
<[report id="status.ongoing"]>
|
171
|
+
----
|
172
|
+
<[report id="status.future"]>
|
173
|
+
->8-
|
174
|
+
}
|
175
|
+
|
176
|
+
textreport wps "Work packages" {
|
177
|
+
textreport wp1 "Work package 1" {
|
178
|
+
formats html
|
179
|
+
center '<[report id="wp1"]>'
|
180
|
+
}
|
181
|
+
|
182
|
+
textreport wp2 "Work package 2" {
|
183
|
+
formats html
|
184
|
+
center '<[report id="wp2"]>'
|
185
|
+
}
|
186
|
+
}
|
187
|
+
|
188
|
+
textreport "Deliveries" {
|
189
|
+
formats html
|
190
|
+
center '<[report id="deliveries"]>'
|
191
|
+
}
|
192
|
+
|
193
|
+
textreport "ContactList" {
|
194
|
+
formats html
|
195
|
+
title "Contact List"
|
196
|
+
center '<[report id="contactList"]>'
|
197
|
+
}
|
198
|
+
textreport "ResourceGraph" {
|
199
|
+
formats html
|
200
|
+
title "Resource Graph"
|
201
|
+
center '<[report id="resourceGraph"]>'
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
# A traditional Gantt chart with a project overview.
|
206
|
+
taskreport overview "" {
|
207
|
+
header -8<-
|
208
|
+
=== Project Overview ===
|
209
|
+
|
210
|
+
The project is structured into 2 work packages.
|
211
|
+
|
212
|
+
# Specification
|
213
|
+
# <-reportlink id='frame.wps.wp1'->
|
214
|
+
# <-reportlink id='frame.wps.wp2'->
|
215
|
+
# Testing
|
216
|
+
|
217
|
+
=== Original Project Plan ===
|
218
|
+
->8-
|
219
|
+
columns bsi { title 'WBS' },
|
220
|
+
name, start, end, effort, cost,
|
221
|
+
revenue, chart { ${TaskTip} }
|
222
|
+
# For this report we like to have the abbreviated weekday in front
|
223
|
+
# of the date. %a is the tag for this.
|
224
|
+
timeformat "%a %Y-%m-%d"
|
225
|
+
loadunit days
|
226
|
+
hideresource 1
|
227
|
+
balance cost rev
|
228
|
+
caption 'All effort values are in man days.'
|
229
|
+
|
230
|
+
footer -8<-
|
231
|
+
=== Staffing ===
|
232
|
+
|
233
|
+
All project phases are properly staffed. See [[ResourceGraph]] for
|
234
|
+
detailed resource allocations.
|
235
|
+
|
236
|
+
=== Current Status ===
|
237
|
+
|
238
|
+
Some blurb about the current situation.
|
239
|
+
->8-
|
240
|
+
}
|
241
|
+
|
242
|
+
# Macro to set the background color of a cell according to the alert
|
243
|
+
# level of the task.
|
244
|
+
macro AlertColor [
|
245
|
+
cellcolor plan.alert = 0 "#00D000" # green
|
246
|
+
cellcolor plan.alert = 1 "#D0D000" # yellow
|
247
|
+
cellcolor plan.alert = 2 "#D00000" # red
|
248
|
+
]
|
249
|
+
|
250
|
+
taskreport status "" {
|
251
|
+
columns bsi { width 50 title 'WBS' }, name { width 150 },
|
252
|
+
start { width 100 }, end { width 100 },
|
253
|
+
effort { width 100 },
|
254
|
+
alert { tooltip plan.journal
|
255
|
+
!= '' "<-query attribute='journal'->" width 150 },
|
256
|
+
status { width 150 }
|
257
|
+
|
258
|
+
taskreport dashboard "" {
|
259
|
+
headline "Project Dashboard (<-query attribute='now'->)"
|
260
|
+
columns name { title "Task" ${AlertColor} width 200},
|
261
|
+
resources { width 200 ${AlertColor}
|
262
|
+
listtype bullets
|
263
|
+
listitem "<-query attribute='name'->"
|
264
|
+
start ${projectstart} end ${projectend} },
|
265
|
+
alerttrend { title "Trend" ${AlertColor} width 50 },
|
266
|
+
journal { width 350 ${AlertColor} }
|
267
|
+
journalmode status_up
|
268
|
+
journalattributes headline, author, date, summary, details
|
269
|
+
hidetask ~hasalert(0)
|
270
|
+
sorttasks alert.down, plan.end.up
|
271
|
+
period %{${now} - 1w} +1w
|
272
|
+
}
|
273
|
+
taskreport completed "" {
|
274
|
+
headline "Already completed tasks"
|
275
|
+
hidetask ~(plan.end <= ${now})
|
276
|
+
}
|
277
|
+
taskreport ongoing "" {
|
278
|
+
headline "Ongoing tasks"
|
279
|
+
hidetask ~((plan.start <= ${now}) & (plan.end > ${now}))
|
280
|
+
}
|
281
|
+
taskreport future "" {
|
282
|
+
headline "Future tasks"
|
283
|
+
hidetask ~(plan.start > ${now})
|
284
|
+
}
|
285
|
+
}
|
286
|
+
|
287
|
+
# A list of tasks showing the resources assigned to each task.
|
288
|
+
taskreport wp1 "" {
|
289
|
+
headline "Work package 1 - Resource Allocation Report"
|
290
|
+
columns bsi { title 'WBS' }, name, start, end, effort { title "Work" },
|
291
|
+
duration, chart { ${TaskTip} scale day width 500 }
|
292
|
+
timeformat "%Y-%m-%d"
|
293
|
+
hideresource ~(isleaf() & isleaf_())
|
294
|
+
sortresources name.up
|
295
|
+
taskroot project.wp1
|
296
|
+
}
|
297
|
+
# A list of tasks showing the resources assigned to each task.
|
298
|
+
taskreport wp2 "" {
|
299
|
+
headline "Work package 2 - Resource Allocation Report"
|
300
|
+
columns bsi { title 'WBS' }, name, start, end, effort { title "Work" },
|
301
|
+
duration, chart { ${TaskTip} scale day width 500 }
|
302
|
+
timeformat "%Y-%m-%d"
|
303
|
+
hideresource ~(isleaf() & isleaf_())
|
304
|
+
sortresources name.up
|
305
|
+
taskroot project.wp2
|
306
|
+
}
|
307
|
+
|
308
|
+
# A list of all tasks with the percentage completed for each task
|
309
|
+
taskreport deliveries "" {
|
310
|
+
headline "Project Deliverables"
|
311
|
+
columns bsi { title 'WBS' }, name, start, end, note { width 150 }, complete,
|
312
|
+
chart { ${TaskTip} }
|
313
|
+
taskroot project.deliveries
|
314
|
+
hideresource 1
|
315
|
+
}
|
316
|
+
# A list of all employees with their contact details.
|
317
|
+
resourcereport contactList "" {
|
318
|
+
headline "Contact list and duty plan"
|
319
|
+
columns name,
|
320
|
+
email { celltext 1 "[mailto:<-email-> <-email->]" },
|
321
|
+
managers { title "Manager" },
|
322
|
+
chart { scale day }
|
323
|
+
hideresource ~isleaf()
|
324
|
+
sortresources name.up
|
325
|
+
hidetask 1
|
326
|
+
}
|
327
|
+
|
328
|
+
# A graph showing resource allocation. It identifies whether each
|
329
|
+
# resource is under- or over-allocated for.
|
330
|
+
resourcereport resourceGraph "" {
|
331
|
+
headline "Resource Allocation Graph"
|
332
|
+
columns no, name, effort, rate, weekly { ${TaskTip} }
|
333
|
+
loadunit shortauto
|
334
|
+
# We only like to show leaf tasks for leaf resources.
|
335
|
+
hidetask ~(isleaf() & isleaf_())
|
336
|
+
sorttasks plan.start.up
|
337
|
+
}
|
338
|
+
|