taskjuggler 3.6.0 → 3.7.2
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.
- checksums.yaml +5 -5
- data/CHANGELOG +69 -0
- data/Rakefile +4 -1
- data/data/css/tjreport.css +4 -0
- data/data/tjp.vim +9 -3
- data/examples/ProjectTemplate/template.tjp +10 -10
- data/examples/Tutorial/tutorial.tjp +4 -4
- data/lib/taskjuggler/Allocation.rb +1 -1
- data/lib/taskjuggler/AppConfig.rb +1 -1
- data/lib/taskjuggler/AttributeBase.rb +10 -4
- data/lib/taskjuggler/Attributes.rb +2 -2
- data/lib/taskjuggler/BatchProcessor.rb +69 -58
- data/lib/taskjuggler/FileList.rb +1 -1
- data/lib/taskjuggler/Interval.rb +10 -12
- data/lib/taskjuggler/Journal.rb +2 -2
- data/lib/taskjuggler/LogicalFunction.rb +1 -1
- data/lib/taskjuggler/LogicalOperation.rb +7 -4
- data/lib/taskjuggler/MessageHandler.rb +1 -2
- data/lib/taskjuggler/PTNProxy.rb +1 -1
- data/lib/taskjuggler/Project.rb +27 -22
- data/lib/taskjuggler/PropertyList.rb +7 -1
- data/lib/taskjuggler/PropertySet.rb +1 -1
- data/lib/taskjuggler/PropertyTreeNode.rb +5 -3
- data/lib/taskjuggler/Query.rb +3 -3
- data/lib/taskjuggler/RealFormat.rb +1 -1
- data/lib/taskjuggler/Resource.rb +2 -2
- data/lib/taskjuggler/ResourceScenario.rb +66 -6
- data/lib/taskjuggler/RichText/Snip.rb +1 -1
- data/lib/taskjuggler/RuntimeConfig.rb +2 -2
- data/lib/taskjuggler/Scoreboard.rb +5 -2
- data/lib/taskjuggler/SheetHandlerBase.rb +5 -4
- data/lib/taskjuggler/Shift.rb +2 -2
- data/lib/taskjuggler/ShiftAssignments.rb +1 -1
- data/lib/taskjuggler/StatusSheetReceiver.rb +2 -2
- data/lib/taskjuggler/StatusSheetSender.rb +1 -1
- data/lib/taskjuggler/TaskJuggler.rb +4 -4
- data/lib/taskjuggler/TaskScenario.rb +7 -2
- data/lib/taskjuggler/TextParser/Scanner.rb +4 -4
- data/lib/taskjuggler/TextParser.rb +1 -1
- data/lib/taskjuggler/TimeSheetReceiver.rb +2 -2
- data/lib/taskjuggler/TimeSheetSender.rb +1 -1
- data/lib/taskjuggler/TimeSheets.rb +5 -4
- data/lib/taskjuggler/Tj3AppBase.rb +23 -9
- data/lib/taskjuggler/Tj3Config.rb +5 -3
- data/lib/taskjuggler/TjpExample.rb +3 -1
- data/lib/taskjuggler/TjpSyntaxRules.rb +166 -133
- data/lib/taskjuggler/UTF8String.rb +3 -3
- data/lib/taskjuggler/WorkingHours.rb +3 -3
- data/lib/taskjuggler/XMLDocument.rb +1 -1
- data/lib/taskjuggler/XMLElement.rb +12 -1
- data/lib/taskjuggler/apps/Tj3.rb +3 -1
- data/lib/taskjuggler/apps/Tj3Client.rb +3 -2
- data/lib/taskjuggler/apps/Tj3Daemon.rb +5 -3
- data/lib/taskjuggler/apps/Tj3Man.rb +4 -2
- data/lib/taskjuggler/apps/Tj3SsReceiver.rb +3 -1
- data/lib/taskjuggler/apps/Tj3SsSender.rb +3 -1
- data/lib/taskjuggler/apps/Tj3TsReceiver.rb +3 -1
- data/lib/taskjuggler/apps/Tj3TsSender.rb +3 -1
- data/lib/taskjuggler/apps/Tj3TsSummary.rb +3 -1
- data/lib/taskjuggler/apps/Tj3WebD.rb +4 -2
- data/lib/taskjuggler/daemon/ProjectServer.rb +2 -2
- data/lib/taskjuggler/deep_copy.rb +1 -1
- data/lib/taskjuggler/reports/CSVFile.rb +4 -4
- data/lib/taskjuggler/reports/ChartPlotter.rb +1 -1
- data/lib/taskjuggler/reports/GanttChart.rb +8 -2
- data/lib/taskjuggler/reports/GanttHeader.rb +11 -1
- data/lib/taskjuggler/reports/GanttLine.rb +6 -0
- data/lib/taskjuggler/reports/ICalReport.rb +1 -1
- data/lib/taskjuggler/reports/MspXmlRE.rb +5 -3
- data/lib/taskjuggler/reports/Report.rb +6 -6
- data/lib/taskjuggler/reports/ReportTableCell.rb +1 -1
- data/lib/taskjuggler/reports/TableReport.rb +7 -12
- data/lib/taskjuggler/reports/TjpExportRE.rb +1 -5
- data/lib/taskjuggler/reports/TraceReport.rb +2 -2
- data/lib/taskjuggler/version.rb +1 -0
- data/man/tj3.1 +130 -0
- data/man/tj3client.1 +145 -0
- data/man/tj3d.1 +93 -0
- data/man/tj3man.1 +76 -0
- data/man/tj3ss_receiver.1 +86 -0
- data/man/tj3ss_sender.1 +100 -0
- data/man/tj3ts_receiver.1 +86 -0
- data/man/tj3ts_sender.1 +92 -0
- data/man/tj3ts_summary.1 +104 -0
- data/man/tj3webd.1 +86 -0
- data/manual/Day_To_Day_Juggling +8 -8
- data/manual/Installation +6 -6
- data/manual/List_Attributes +1 -1
- data/manual/Rich_Text_Attributes +6 -5
- data/manual/Software +6 -6
- data/manual/TaskJuggler_Internals +4 -4
- data/manual/The_TaskJuggler_Syntax +5 -5
- data/manual/Tutorial +13 -11
- data/manual/html/Day_To_Day_Juggling.html +9 -9
- data/manual/html/Getting_Started.html +2 -2
- data/manual/html/How_To_Contribute.html +2 -2
- data/manual/html/Installation.html +8 -8
- data/manual/html/Intro.html +2 -2
- data/manual/html/List_Attributes.html +3 -3
- data/manual/html/Reporting_Bugs.html +2 -2
- data/manual/html/Rich_Text_Attributes.html +5 -5
- data/manual/html/Software.html +7 -7
- data/manual/html/TaskJuggler_2x_Migration.html +2 -2
- data/manual/html/TaskJuggler_Internals.html +6 -6
- data/manual/html/The_TaskJuggler_Syntax.html +6 -6
- data/manual/html/Tutorial.html +17 -14
- data/manual/html/account.html +3 -3
- data/manual/html/account.task.html +2 -2
- data/manual/html/accountprefix.html +2 -2
- data/manual/html/accountreport.html +3 -3
- data/manual/html/accountroot.html +2 -2
- data/manual/html/active.html +3 -3
- data/manual/html/adopt.task.html +2 -2
- data/manual/html/aggregate.html +2 -2
- data/manual/html/alert.html +3 -3
- data/manual/html/alertlevels.html +2 -2
- data/manual/html/allocate.html +3 -3
- data/manual/html/alphabet.html +1 -1
- data/manual/html/alternative.html +2 -2
- data/manual/html/author.html +2 -2
- data/manual/html/auxdir.html +2 -2
- data/manual/html/auxdir.report.html +2 -2
- data/manual/html/balance.html +2 -2
- data/manual/html/booking.resource.html +4 -4
- data/manual/html/booking.task.html +4 -4
- data/manual/html/caption.html +2 -2
- data/manual/html/cellcolor.column.html +3 -3
- data/manual/html/celltext.column.html +3 -3
- data/manual/html/center.html +2 -2
- data/manual/html/charge.html +2 -2
- data/manual/html/chargeset.html +2 -2
- data/manual/html/columnid.html +21 -14
- data/manual/html/columns.html +2 -2
- data/manual/html/complete.html +2 -2
- data/manual/html/copyright.html +2 -2
- data/manual/html/credits.html +2 -2
- data/manual/html/css/tjreport.css +4 -0
- data/manual/html/currency.html +2 -2
- data/manual/html/currencyformat.html +3 -3
- data/manual/html/dailymax.html +2 -2
- data/manual/html/dailymin.html +3 -3
- data/manual/html/dailyworkinghours.html +2 -2
- data/manual/html/date.extend.html +2 -2
- data/manual/html/date.html +5 -5
- data/manual/html/definitions.html +4 -4
- data/manual/html/depends.html +4 -4
- data/manual/html/details.html +2 -2
- data/manual/html/disabled.html +2 -2
- data/manual/html/duration.html +2 -2
- data/manual/html/efficiency.html +3 -3
- data/manual/html/effort.html +2 -2
- data/manual/html/effortdone.html +2 -2
- data/manual/html/effortleft.html +2 -2
- data/manual/html/email.html +2 -2
- data/manual/html/enabled.html +2 -2
- data/manual/html/end.column.html +3 -3
- data/manual/html/end.html +4 -4
- data/manual/html/end.limit.html +2 -2
- data/manual/html/end.report.html +2 -2
- data/manual/html/end.timesheet.html +3 -3
- data/manual/html/endcredit.html +3 -3
- data/manual/html/epilog.html +2 -2
- data/manual/html/export.html +3 -3
- data/manual/html/extend.html +3 -3
- data/manual/html/fail.html +3 -3
- data/manual/html/fdl.html +2 -2
- data/manual/html/flags.account.html +2 -2
- data/manual/html/flags.html +2 -2
- data/manual/html/flags.journalentry.html +2 -2
- data/manual/html/flags.report.html +2 -2
- data/manual/html/flags.resource.html +2 -2
- data/manual/html/flags.statussheet.html +2 -2
- data/manual/html/flags.task.html +2 -2
- data/manual/html/flags.timesheet.html +2 -2
- data/manual/html/fontcolor.column.html +3 -3
- data/manual/html/footer.html +2 -2
- data/manual/html/formats.export.html +3 -3
- data/manual/html/formats.html +3 -3
- data/manual/html/functions.html +5 -5
- data/manual/html/gapduration.html +2 -2
- data/manual/html/gaplength.html +2 -2
- data/manual/html/halign.center.html +2 -2
- data/manual/html/halign.column.html +3 -3
- data/manual/html/halign.left.html +2 -2
- data/manual/html/halign.right.html +2 -2
- data/manual/html/hasalert.html +2 -2
- data/manual/html/header.html +2 -2
- data/manual/html/headline.html +2 -2
- data/manual/html/height.html +3 -3
- data/manual/html/hideaccount.html +3 -3
- data/manual/html/hidejournalentry.html +2 -2
- data/manual/html/hidereport.html +3 -3
- data/manual/html/hideresource.html +3 -3
- data/manual/html/hidetask.html +3 -3
- data/manual/html/icalreport.html +9 -3
- data/manual/html/include.macro.html +3 -3
- data/manual/html/include.project.html +3 -3
- data/manual/html/include.properties.html +3 -3
- data/manual/html/index.html +1 -1
- 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 +2 -2
- data/manual/html/interval4.html +2 -2
- data/manual/html/isactive.html +2 -2
- data/manual/html/ischildof.html +2 -2
- data/manual/html/isdependencyof.html +2 -2
- data/manual/html/isdutyof.html +2 -2
- data/manual/html/isfeatureof.html +2 -2
- data/manual/html/isleaf.html +2 -2
- data/manual/html/ismilestone.html +2 -2
- data/manual/html/isongoing.html +3 -3
- data/manual/html/isresource.html +2 -2
- data/manual/html/isresponsibilityof.html +2 -2
- data/manual/html/istask.html +2 -2
- data/manual/html/isvalid.html +2 -2
- data/manual/html/journalattributes.html +2 -2
- data/manual/html/journalentry.html +3 -3
- data/manual/html/journalmode.html +3 -3
- data/manual/html/leaveallowance.html +3 -3
- data/manual/html/leaves.html +3 -3
- data/manual/html/left.html +2 -2
- data/manual/html/length.html +3 -3
- data/manual/html/limits.allocate.html +2 -2
- data/manual/html/limits.html +2 -2
- data/manual/html/limits.resource.html +2 -2
- data/manual/html/limits.task.html +2 -2
- data/manual/html/listitem.column.html +3 -3
- data/manual/html/listtype.column.html +2 -2
- data/manual/html/loadunit.html +2 -2
- data/manual/html/logicalexpression.html +4 -4
- data/manual/html/logicalflagexpression.html +4 -4
- data/manual/html/macro.html +4 -4
- data/manual/html/managers.html +2 -2
- data/manual/html/mandatory.html +4 -4
- data/manual/html/markdate.html +69 -0
- data/manual/html/maxend.html +4 -4
- data/manual/html/maximum.html +2 -2
- data/manual/html/maxstart.html +2 -2
- data/manual/html/milestone.html +3 -3
- data/manual/html/minend.html +2 -2
- data/manual/html/minimum.html +2 -2
- data/manual/html/minstart.html +2 -2
- data/manual/html/monthlymax.html +2 -2
- data/manual/html/monthlymin.html +3 -3
- data/manual/html/navbar.html +5 -1
- data/manual/html/navigator.html +2 -2
- data/manual/html/newtask.html +3 -3
- data/manual/html/nikureport.html +2 -2
- data/manual/html/note.task.html +4 -4
- data/manual/html/novevents.html +68 -0
- data/manual/html/now.html +4 -4
- data/manual/html/number.extend.html +2 -2
- data/manual/html/numberformat.html +2 -2
- data/manual/html/onend.html +2 -2
- data/manual/html/onstart.html +2 -2
- data/manual/html/opennodes.html +2 -2
- data/manual/html/outputdir.html +3 -3
- data/manual/html/overtime.booking.html +2 -2
- data/manual/html/period.column.html +2 -2
- data/manual/html/period.limit.html +2 -2
- data/manual/html/period.report.html +2 -2
- data/manual/html/period.task.html +2 -2
- data/manual/html/persistent.html +3 -3
- data/manual/html/precedes.html +5 -5
- data/manual/html/priority.html +4 -4
- data/manual/html/priority.timesheet.html +3 -3
- data/manual/html/project.html +4 -4
- data/manual/html/projectid.html +2 -2
- data/manual/html/projectid.task.html +3 -3
- data/manual/html/projectids.html +2 -2
- data/manual/html/projection.html +2 -2
- data/manual/html/prolog.html +2 -2
- data/manual/html/properties.html +3 -3
- data/manual/html/purge.html +2 -2
- data/manual/html/rate.html +2 -2
- data/manual/html/rate.resource.html +2 -2
- data/manual/html/rawhtmlhead.html +3 -3
- data/manual/html/reference.extend.html +2 -2
- data/manual/html/remaining.html +3 -3
- data/manual/html/replace.html +2 -2
- data/manual/html/reportprefix.html +2 -2
- data/manual/html/resource.html +3 -3
- data/manual/html/resourceattributes.html +2 -2
- data/manual/html/resourceprefix.html +2 -2
- data/manual/html/resourcereport.html +4 -4
- data/manual/html/resourceroot.html +3 -3
- data/manual/html/resources.limit.html +2 -2
- data/manual/html/responsible.html +2 -2
- data/manual/html/richtext.extend.html +2 -2
- data/manual/html/right.html +2 -2
- data/manual/html/rollupaccount.html +3 -3
- data/manual/html/rollupresource.html +3 -3
- data/manual/html/rolluptask.html +3 -3
- data/manual/html/scale.column.html +2 -2
- data/manual/html/scenario.html +3 -3
- data/manual/html/scenario.ical.html +3 -3
- data/manual/html/scenarios.export.html +2 -2
- data/manual/html/scenarios.html +2 -2
- data/manual/html/scenariospecific.extend.html +2 -2
- data/manual/html/scheduled.html +2 -2
- data/manual/html/scheduling.html +6 -6
- data/manual/html/schedulingmode.html +2 -2
- data/manual/html/select.html +4 -4
- data/manual/html/selfcontained.html +2 -2
- data/manual/html/shift.allocate.html +2 -2
- data/manual/html/shift.html +3 -3
- data/manual/html/shift.resource.html +4 -4
- data/manual/html/shift.task.html +2 -2
- data/manual/html/shift.timesheet.html +2 -2
- data/manual/html/shifts.allocate.html +2 -2
- data/manual/html/shifts.resource.html +2 -2
- data/manual/html/shifts.task.html +3 -3
- data/manual/html/shorttimeformat.html +3 -3
- data/manual/html/sloppy.booking.html +2 -2
- data/manual/html/sloppy.projection.html +2 -2
- data/manual/html/sortaccounts.html +2 -2
- data/manual/html/sortjournalentries.html +2 -2
- data/manual/html/sortresources.html +2 -2
- data/manual/html/sorttasks.html +2 -2
- data/manual/html/start.column.html +3 -3
- data/manual/html/start.html +4 -4
- data/manual/html/start.limit.html +2 -2
- data/manual/html/start.report.html +2 -2
- data/manual/html/startcredit.html +3 -3
- data/manual/html/status.statussheet.html +2 -2
- data/manual/html/status.timesheet.html +2 -2
- data/manual/html/statussheet.html +2 -2
- data/manual/html/statussheetreport.html +3 -3
- data/manual/html/strict.projection.html +2 -2
- data/manual/html/summary.html +2 -2
- data/manual/html/supplement.html +2 -2
- data/manual/html/supplement.resource.html +2 -2
- data/manual/html/supplement.task.html +2 -2
- 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 +2 -2
- data/manual/html/taskattributes.html +2 -2
- data/manual/html/taskprefix.html +2 -2
- data/manual/html/taskreport.html +4 -4
- data/manual/html/taskroot.export.html +2 -2
- data/manual/html/taskroot.html +2 -2
- data/manual/html/text.extend.html +2 -2
- data/manual/html/textreport.html +4 -4
- data/manual/html/timeformat.html +3 -3
- data/manual/html/timeformat1.html +2 -2
- data/manual/html/timeformat2.html +2 -2
- data/manual/html/timeoff.nikureport.html +2 -2
- data/manual/html/timesheet.html +3 -3
- data/manual/html/timesheetreport.html +3 -3
- data/manual/html/timezone.export.html +2 -2
- data/manual/html/timezone.html +2 -2
- data/manual/html/timezone.report.html +2 -2
- data/manual/html/timezone.shift.html +2 -2
- data/manual/html/timingresolution.html +2 -2
- data/manual/html/title.column.html +2 -2
- data/manual/html/title.html +2 -2
- data/manual/html/toc.html +157 -143
- data/manual/html/tooltip.column.html +3 -3
- data/manual/html/tracereport.html +7 -7
- data/manual/html/trackingscenario.html +3 -3
- data/manual/html/treelevel.html +2 -2
- data/manual/html/vacation.html +2 -2
- data/manual/html/vacation.resource.html +2 -2
- data/manual/html/vacation.shift.html +2 -2
- data/manual/html/warn.html +4 -4
- data/manual/html/weeklymax.html +2 -2
- data/manual/html/weeklymin.html +3 -3
- data/manual/html/weekstartsmonday.html +2 -2
- data/manual/html/weekstartssunday.html +2 -2
- data/manual/html/width.column.html +2 -2
- data/manual/html/width.html +3 -3
- data/manual/html/work.html +3 -3
- data/manual/html/workinghours.project.html +3 -3
- data/manual/html/workinghours.resource.html +2 -2
- data/manual/html/workinghours.shift.html +2 -2
- data/manual/html/yearlyworkingdays.html +2 -2
- data/spec/ProjectBroker_spec.rb +6 -6
- data/spec/StatusSheets_spec.rb +1 -1
- data/spec/TimeSheets_spec.rb +1 -1
- data/spec/TraceReport_spec.rb +1 -1
- data/spec/support/DaemonControl.rb +2 -3
- data/taskjuggler.gemspec +7 -10
- data/tasks/changelog.rake +2 -0
- data/tasks/gem.rake +3 -1
- data/tasks/help2man.rake +18 -0
- data/tasks/kate.rake +2 -0
- data/tasks/manual.rake +3 -1
- data/tasks/test.rake +5 -0
- data/tasks/vim.rake +2 -0
- data/test/TestSuite/CSV-Reports/quotes.tjp +20 -0
- data/test/TestSuite/CSV-Reports/refs/quotes.csv +5 -0
- data/test/TestSuite/Export-Reports/refs/AccountReport.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +0 -2
- data/test/TestSuite/Export-Reports/refs/AlertLevels.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/AutoID.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +0 -2
- data/test/TestSuite/Export-Reports/refs/Depends1.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Durations.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Gap.tjp +0 -3
- data/test/TestSuite/Export-Reports/refs/Include.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Journal.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +0 -2
- data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Manager.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Milestone.tjp +0 -2
- data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Project.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +0 -3
- data/test/TestSuite/Export-Reports/refs/Reports.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Resource.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Scenario.tjp +0 -2
- data/test/TestSuite/Export-Reports/refs/Timezone.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/Vacation.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/navigator.tjp +0 -4
- data/test/TestSuite/Export-Reports/refs/template.tjp +0 -6
- data/test/TestSuite/Export-Reports/refs/textreport.tjp +0 -1
- data/test/TestSuite/Export-Reports/refs/tutorial.tjp +0 -8
- data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/template.tjp +3 -3
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +8 -3
- data/test/test_BatchProcessor.rb +6 -3
- data/test/test_ProjectFileScanner.rb +8 -8
- metadata +47 -11
|
@@ -29,7 +29,7 @@ class TaskJuggler
|
|
|
29
29
|
attr_accessor :maxCpuCores, :warnTsDeltas, :generateTraces
|
|
30
30
|
|
|
31
31
|
# Create a new TaskJuggler object. _console_ is a boolean that determines
|
|
32
|
-
# whether or not
|
|
32
|
+
# whether or not messages can be written to $stderr.
|
|
33
33
|
def initialize
|
|
34
34
|
@project = nil
|
|
35
35
|
@parser = nil
|
|
@@ -141,7 +141,7 @@ class TaskJuggler
|
|
|
141
141
|
res
|
|
142
142
|
end
|
|
143
143
|
|
|
144
|
-
# Generate all specified reports. The project must have
|
|
144
|
+
# Generate all specified reports. The project must have been scheduled before
|
|
145
145
|
# this method can be called. It returns true if no error occured, false
|
|
146
146
|
# otherwise.
|
|
147
147
|
def generateReports(outputDir = nil)
|
|
@@ -289,7 +289,7 @@ class TaskJuggler
|
|
|
289
289
|
end
|
|
290
290
|
|
|
291
291
|
# Check the content of the file _fileName_ and interpret it as a time sheet.
|
|
292
|
-
# If the sheet is
|
|
292
|
+
# If the sheet is syntactically correct and matches the loaded project, true
|
|
293
293
|
# is returned. Otherwise false.
|
|
294
294
|
def checkTimeSheet(fileName)
|
|
295
295
|
begin
|
|
@@ -333,7 +333,7 @@ class TaskJuggler
|
|
|
333
333
|
end
|
|
334
334
|
|
|
335
335
|
# Check the content of the file _fileName_ and interpret it as a status
|
|
336
|
-
# sheet. If the sheet is
|
|
336
|
+
# sheet. If the sheet is syntactically correct and matches the loaded
|
|
337
337
|
# project, true is returned. Otherwise false.
|
|
338
338
|
def checkStatusSheet(fileName)
|
|
339
339
|
begin
|
|
@@ -1508,6 +1508,7 @@ class TaskJuggler
|
|
|
1508
1508
|
end
|
|
1509
1509
|
q = query.dup
|
|
1510
1510
|
q.property = resource
|
|
1511
|
+
q.scopeProperty = @property
|
|
1511
1512
|
rti.setQuery(q)
|
|
1512
1513
|
list << "<nowiki>#{rti.to_s}</nowiki>"
|
|
1513
1514
|
else
|
|
@@ -2179,8 +2180,12 @@ class TaskJuggler
|
|
|
2179
2180
|
# been set already.
|
|
2180
2181
|
if @scheduled && @effort == 0 && @length == 0 && @duration == 0 &&
|
|
2181
2182
|
!@milestone
|
|
2182
|
-
@start
|
|
2183
|
-
|
|
2183
|
+
unless @start || !firstSlotIdx
|
|
2184
|
+
@start = @project.idxToDate(firstSlotIdx)
|
|
2185
|
+
end
|
|
2186
|
+
unless @end || !lastSlotIdx
|
|
2187
|
+
@end = @project.idxToDate(lastSlotIdx + 1)
|
|
2188
|
+
end
|
|
2184
2189
|
end
|
|
2185
2190
|
end
|
|
2186
2191
|
|
|
@@ -43,9 +43,9 @@ class TaskJuggler::TextParser
|
|
|
43
43
|
|
|
44
44
|
# This class is used to handle the low-level input operations. It knows
|
|
45
45
|
# whether it deals with a text buffer or a file and abstracts this to the
|
|
46
|
-
# Scanner. For each nested file the scanner puts
|
|
46
|
+
# Scanner. For each nested file the scanner puts a StreamHandle on the
|
|
47
47
|
# stack while the file is scanned. With this stack the scanner can resume
|
|
48
|
-
# the processing of the enclosing file once the included files
|
|
48
|
+
# the processing of the enclosing file once the included files have been
|
|
49
49
|
# completely processed.
|
|
50
50
|
class StreamHandle
|
|
51
51
|
|
|
@@ -169,7 +169,7 @@ class TaskJuggler::TextParser
|
|
|
169
169
|
|
|
170
170
|
def initialize(fileName, log, textScanner)
|
|
171
171
|
super(log, textScanner)
|
|
172
|
-
@fileName = fileName.dup
|
|
172
|
+
@fileName = fileName.dup
|
|
173
173
|
data = (fileName == '.' ? $stdin : File.new(@fileName, 'r')).read
|
|
174
174
|
begin
|
|
175
175
|
@stream = StringIO.new(data.forceUTF8Encoding)
|
|
@@ -281,7 +281,7 @@ class TaskJuggler::TextParser
|
|
|
281
281
|
end
|
|
282
282
|
|
|
283
283
|
|
|
284
|
-
# Start the processing.
|
|
284
|
+
# Start the processing. If _fileNameIsBuffer_ is true, we operate on a
|
|
285
285
|
# String, else on a File.
|
|
286
286
|
def open(fileNameIsBuffer = false)
|
|
287
287
|
@fileNameIsBuffer = fileNameIsBuffer
|
|
@@ -123,7 +123,7 @@ class TaskJuggler
|
|
|
123
123
|
# Add a new rule to the rule set. _name_ must be a unique identifier. The
|
|
124
124
|
# function also sets the class variable @cr to the new rule. Subsequent
|
|
125
125
|
# calls to TextParser#pattern, TextParser#optional or
|
|
126
|
-
# TextParser#repeatable will then
|
|
126
|
+
# TextParser#repeatable will then implicitly operate on the most recently
|
|
127
127
|
# added rule.
|
|
128
128
|
def newRule(name)
|
|
129
129
|
# Use a symbol instead of a String.
|
|
@@ -32,9 +32,9 @@ class TaskJuggler
|
|
|
32
32
|
@logFile = 'timesheets.log'
|
|
33
33
|
|
|
34
34
|
# Regular expression to identify time sheets.
|
|
35
|
-
@sheetHeader = /^[ ]*timesheet\s([a-
|
|
35
|
+
@sheetHeader = /^[ ]*timesheet\s([a-zA-Z_][a-zA-Z0-9_]*)\s[0-9\-:+]*\s-\s([0-9]*-[0-9]*-[0-9]*)/
|
|
36
36
|
# Regular expression to extract the sheet signature (time period).
|
|
37
|
-
@signatureFilter = /^[ ]*timesheet\s[a-
|
|
37
|
+
@signatureFilter = /^[ ]*timesheet\s[a-zA-Z_][a-zA-Z0-9_]*\s([0-9:\-+]*\s-\s[0-9:\-+]*)/
|
|
38
38
|
@emailSubject = "Report from %s for %s"
|
|
39
39
|
end
|
|
40
40
|
|
|
@@ -38,7 +38,7 @@ class TaskJuggler
|
|
|
38
38
|
# The log file
|
|
39
39
|
@logFile = 'timesheets.log'
|
|
40
40
|
|
|
41
|
-
@signatureFilter = /^[ ]*timesheet\s[a-
|
|
41
|
+
@signatureFilter = /^[ ]*timesheet\s[a-zA-Z_][a-zA-Z0-9_]*\s([0-9:\-+]*\s-\s[0-9:\-+]*)/
|
|
42
42
|
@introText = <<'EOT'
|
|
43
43
|
Please find enclosed your weekly report template. Please fill out
|
|
44
44
|
the form and send it back to the sender of this email. You can either
|
|
@@ -46,11 +46,11 @@ class TaskJuggler
|
|
|
46
46
|
@sourceFileInfo = nil
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
# Store the number of worked time slots. If the value is
|
|
49
|
+
# Store the number of worked time slots. If the value is an Integer, it can
|
|
50
50
|
# be directly assigned. A Float is interpreted as percentage and must be
|
|
51
51
|
# in the rage of 0.0 to 1.0.
|
|
52
52
|
def work=(value)
|
|
53
|
-
if value.is_a?(
|
|
53
|
+
if value.is_a?(Integer)
|
|
54
54
|
@work = value
|
|
55
55
|
else
|
|
56
56
|
# Must be percent value
|
|
@@ -325,9 +325,10 @@ class TaskJuggler
|
|
|
325
325
|
def totalGrossWorkingSlots
|
|
326
326
|
project = @resource.project
|
|
327
327
|
# Calculate the number of weeks in the report
|
|
328
|
-
weeksToReport = (@interval.end - @interval.start) /
|
|
328
|
+
weeksToReport = (@interval.end - @interval.start).to_f /
|
|
329
|
+
(60 * 60 * 24 * 7)
|
|
329
330
|
|
|
330
|
-
daysToSlots(project.weeklyWorkingDays * weeksToReport)
|
|
331
|
+
daysToSlots((project.weeklyWorkingDays * weeksToReport).to_i)
|
|
331
332
|
end
|
|
332
333
|
|
|
333
334
|
# Compute the total number of actual working time slots of the
|
|
@@ -51,16 +51,15 @@ class TaskJuggler
|
|
|
51
51
|
@opts.summary_width = @optsSummaryWidth
|
|
52
52
|
@opts.summary_indent = ' ' * @optsSummaryIndent
|
|
53
53
|
|
|
54
|
-
@opts.banner = "#{AppConfig.
|
|
55
|
-
"#{AppConfig.packageInfo}\n\n" +
|
|
56
|
-
"Copyright (c) #{AppConfig.copyright.join(', ')}\n" +
|
|
54
|
+
@opts.banner = "Copyright (c) #{AppConfig.copyright.join(', ')}\n" +
|
|
57
55
|
" by #{AppConfig.authors.join(', ')}\n\n" +
|
|
58
56
|
"#{AppConfig.license}\n" +
|
|
59
57
|
"For more info about #{AppConfig.softwareName} see " +
|
|
60
58
|
"#{AppConfig.contact}\n\n" +
|
|
61
59
|
"Usage: #{AppConfig.appName} [options] " +
|
|
62
60
|
"#{@mandatoryArgs}\n\n"
|
|
63
|
-
|
|
61
|
+
|
|
62
|
+
@opts.separator "\nOptions:"
|
|
64
63
|
@opts.on('-c', '--config <FILE>', String,
|
|
65
64
|
format('Use the specified YAML configuration file')) do |arg|
|
|
66
65
|
@configFile = arg
|
|
@@ -75,7 +74,7 @@ class TaskJuggler
|
|
|
75
74
|
format(<<'EOT'
|
|
76
75
|
Don't use ANSI contol sequences to color the terminal output. Colors should
|
|
77
76
|
only be used when spooling to an ANSI terminal. In case the detection fails,
|
|
78
|
-
you can this option to force colors to be off.
|
|
77
|
+
you can use this option to force colors to be off.
|
|
79
78
|
EOT
|
|
80
79
|
)) do
|
|
81
80
|
Term::ANSIColor::coloring = false
|
|
@@ -91,8 +90,23 @@ EOT
|
|
|
91
90
|
quit
|
|
92
91
|
end
|
|
93
92
|
@opts.on_tail('--version', format('Show version info')) do
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
# Display the software name and version in GNU format
|
|
94
|
+
# as expected by help2man
|
|
95
|
+
# https://www.gnu.org/prep/standards/standards.html#g_t_002d_002dversion
|
|
96
|
+
puts "#{AppConfig.appName} (#{AppConfig.softwareName}) #{AppConfig.version}\n"
|
|
97
|
+
# To also display the copyright and license statements in GNU format
|
|
98
|
+
# uncomment the following and remove the equivalent statements from
|
|
99
|
+
# --help
|
|
100
|
+
# +
|
|
101
|
+
#<<'EOT'
|
|
102
|
+
#Copyright (C) 2016 Chris Schlaeger <cs@taskjuggler.org>
|
|
103
|
+
#License GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>
|
|
104
|
+
#This is free software; you can redistribute it and/or modify it under
|
|
105
|
+
#the terms of version 2 of the GNU General Public License as published by the
|
|
106
|
+
#Free Software Foundation.
|
|
107
|
+
#
|
|
108
|
+
#For more info about TaskJuggler see http://www.taskjuggler.org
|
|
109
|
+
#EOT
|
|
96
110
|
quit
|
|
97
111
|
end
|
|
98
112
|
|
|
@@ -128,7 +142,7 @@ EOT
|
|
|
128
142
|
args = processArguments(argv)
|
|
129
143
|
|
|
130
144
|
# If DEBUG mode has been enabled, we restore the INT trap handler again
|
|
131
|
-
# to get Ruby
|
|
145
|
+
# to get Ruby backtraces.
|
|
132
146
|
Kernel.trap('INT', intHandler) if $DEBUG
|
|
133
147
|
|
|
134
148
|
unless @silent
|
|
@@ -146,7 +160,7 @@ EOT
|
|
|
146
160
|
retVal = appMain(args)
|
|
147
161
|
MessageHandlerInstance.instance.trapSetup = false
|
|
148
162
|
rescue TjRuntimeError
|
|
149
|
-
# We have hit a
|
|
163
|
+
# We have hit a situation that we can't recover from. A message
|
|
150
164
|
# was severed via the MessageHandler to inform the user and we now
|
|
151
165
|
# abort the program.
|
|
152
166
|
return 1
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = Tj3Config.rb -- The TaskJuggler III Project Management Software
|
|
5
5
|
#
|
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016,
|
|
7
|
+
# 2020
|
|
7
8
|
# by Chris Schlaeger <cs@taskjuggler.org>
|
|
8
9
|
#
|
|
9
10
|
# This program is free software; you can redistribute it and/or modify
|
|
@@ -13,12 +14,13 @@
|
|
|
13
14
|
|
|
14
15
|
require 'taskjuggler/UTF8String'
|
|
15
16
|
require 'taskjuggler/AppConfig'
|
|
17
|
+
require 'taskjuggler/version'
|
|
16
18
|
|
|
17
|
-
AppConfig.version =
|
|
19
|
+
AppConfig.version = VERSION
|
|
18
20
|
AppConfig.packageName = 'taskjuggler'
|
|
19
21
|
AppConfig.softwareName = 'TaskJuggler'
|
|
20
22
|
AppConfig.packageInfo = 'A Project Management Software'
|
|
21
|
-
AppConfig.copyright = [ (2006..
|
|
23
|
+
AppConfig.copyright = [ (2006..2020).to_a ]
|
|
22
24
|
AppConfig.authors = [ 'Chris Schlaeger <cs@taskjuggler.org>' ]
|
|
23
25
|
AppConfig.contact = 'http://www.taskjuggler.org'
|
|
24
26
|
AppConfig.license = <<'EOT'
|
|
@@ -75,7 +75,9 @@ class TaskJuggler
|
|
|
75
75
|
@file.each_line do |line|
|
|
76
76
|
if line[0, mark.length] == mark
|
|
77
77
|
# We've found an annotation line. Get the tag and indicator.
|
|
78
|
-
|
|
78
|
+
tokens = line.split
|
|
79
|
+
tag = tokens[3]
|
|
80
|
+
indicator = tokens[4]
|
|
79
81
|
|
|
80
82
|
if indicator == '+'
|
|
81
83
|
# Start a new snip
|