taskjuggler 3.0.0 → 3.1.0
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 +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
|
+
|