taskjuggler 3.4.0 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +41 -0
- data/data/css/tjreport.css +4 -1
- data/data/tjp.vim +22 -11
- data/examples/ToDo-List/todolist.tjp +1 -1
- data/lib/header.tmpl +1 -1
- data/lib/taskjuggler/Account.rb +1 -1
- data/lib/taskjuggler/AccountCredit.rb +1 -1
- data/lib/taskjuggler/AccountScenario.rb +1 -1
- data/lib/taskjuggler/AlertLevelDefinitions.rb +1 -1
- data/lib/taskjuggler/AlgorithmDiff.rb +1 -1
- data/lib/taskjuggler/Allocation.rb +1 -1
- data/lib/taskjuggler/AppConfig.rb +1 -1
- data/lib/taskjuggler/AttributeBase.rb +11 -1
- data/lib/taskjuggler/AttributeDefinition.rb +1 -1
- data/lib/taskjuggler/Attributes.rb +3 -3
- data/lib/taskjuggler/BatchProcessor.rb +1 -1
- data/lib/taskjuggler/Booking.rb +1 -1
- data/lib/taskjuggler/Charge.rb +1 -1
- data/lib/taskjuggler/ChargeSet.rb +1 -1
- data/lib/taskjuggler/DataCache.rb +1 -1
- data/lib/taskjuggler/FileList.rb +1 -1
- data/lib/taskjuggler/HTMLDocument.rb +2 -2
- data/lib/taskjuggler/HTMLElements.rb +1 -1
- data/lib/taskjuggler/ICalendar.rb +2 -2
- data/lib/taskjuggler/Interval.rb +1 -1
- data/lib/taskjuggler/IntervalList.rb +1 -1
- data/lib/taskjuggler/Journal.rb +1 -1
- data/lib/taskjuggler/KateSyntax.rb +1 -1
- data/lib/taskjuggler/KeywordArray.rb +1 -1
- data/lib/taskjuggler/KeywordDocumentation.rb +3 -2
- data/lib/taskjuggler/LeaveList.rb +1 -1
- data/lib/taskjuggler/Limits.rb +1 -1
- data/lib/taskjuggler/Log.rb +1 -1
- data/lib/taskjuggler/LogicalExpression.rb +1 -1
- data/lib/taskjuggler/LogicalFunction.rb +23 -1
- data/lib/taskjuggler/LogicalOperation.rb +5 -2
- data/lib/taskjuggler/MessageHandler.rb +9 -3
- data/lib/taskjuggler/PTNProxy.rb +1 -1
- data/lib/taskjuggler/Painter.rb +1 -1
- data/lib/taskjuggler/Project.rb +4 -3
- data/lib/taskjuggler/ProjectFileParser.rb +15 -4
- data/lib/taskjuggler/ProjectFileScanner.rb +1 -1
- data/lib/taskjuggler/PropertyList.rb +2 -2
- data/lib/taskjuggler/PropertySet.rb +2 -2
- data/lib/taskjuggler/PropertyTreeNode.rb +44 -16
- data/lib/taskjuggler/Query.rb +23 -10
- data/lib/taskjuggler/RealFormat.rb +1 -1
- data/lib/taskjuggler/Resource.rb +1 -1
- data/lib/taskjuggler/ResourceScenario.rb +6 -1
- data/lib/taskjuggler/RichText.rb +1 -1
- data/lib/taskjuggler/RichText/Document.rb +1 -1
- data/lib/taskjuggler/RichText/Element.rb +1 -1
- data/lib/taskjuggler/RichText/FunctionExample.rb +3 -3
- data/lib/taskjuggler/RichText/FunctionHandler.rb +1 -1
- data/lib/taskjuggler/RichText/Parser.rb +1 -1
- data/lib/taskjuggler/RichText/RTFHandlers.rb +1 -1
- data/lib/taskjuggler/RichText/RTFNavigator.rb +1 -1
- data/lib/taskjuggler/RichText/RTFQuery.rb +4 -3
- 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 +2 -1
- data/lib/taskjuggler/RichText/Snip.rb +1 -1
- data/lib/taskjuggler/RichText/SyntaxRules.rb +1 -1
- data/lib/taskjuggler/RichText/TOCEntry.rb +1 -1
- data/lib/taskjuggler/RichText/TableOfContents.rb +1 -1
- 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 +10 -6
- data/lib/taskjuggler/SheetHandlerBase.rb +1 -1
- data/lib/taskjuggler/SheetReceiver.rb +1 -1
- data/lib/taskjuggler/SheetSender.rb +1 -1
- data/lib/taskjuggler/Shift.rb +1 -1
- data/lib/taskjuggler/ShiftAssignments.rb +1 -1
- data/lib/taskjuggler/ShiftScenario.rb +1 -1
- 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 +15 -1
- data/lib/taskjuggler/TableColumnDefinition.rb +1 -1
- data/lib/taskjuggler/TableColumnSorter.rb +1 -1
- data/lib/taskjuggler/Task.rb +1 -1
- data/lib/taskjuggler/TaskDependency.rb +1 -1
- data/lib/taskjuggler/TaskJuggler.rb +7 -4
- data/lib/taskjuggler/TaskScenario.rb +95 -72
- data/lib/taskjuggler/TernarySearchTree.rb +1 -1
- data/lib/taskjuggler/TextFormatter.rb +1 -1
- data/lib/taskjuggler/TextParser.rb +1 -1
- data/lib/taskjuggler/TextParser/MacroTable.rb +1 -1
- data/lib/taskjuggler/TextParser/Pattern.rb +1 -1
- data/lib/taskjuggler/TextParser/Rule.rb +6 -1
- 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 +1 -1
- 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 +1 -1
- data/lib/taskjuggler/Tj3AppBase.rb +3 -2
- data/lib/taskjuggler/Tj3Config.rb +3 -3
- data/lib/taskjuggler/Tj3SheetAppBase.rb +1 -1
- data/lib/taskjuggler/TjException.rb +1 -1
- data/lib/taskjuggler/TjTime.rb +17 -12
- data/lib/taskjuggler/TjpExample.rb +1 -1
- data/lib/taskjuggler/TjpSyntaxRules.rb +378 -303
- data/lib/taskjuggler/URLParameter.rb +1 -1
- data/lib/taskjuggler/UTF8String.rb +1 -1
- data/lib/taskjuggler/UserManual.rb +3 -3
- data/lib/taskjuggler/VimSyntax.rb +1 -1
- data/lib/taskjuggler/WorkingHours.rb +1 -1
- data/lib/taskjuggler/XMLDocument.rb +1 -1
- data/lib/taskjuggler/XMLElement.rb +1 -1
- data/lib/taskjuggler/apps/Tj3.rb +20 -6
- data/lib/taskjuggler/apps/Tj3Client.rb +1 -1
- data/lib/taskjuggler/apps/Tj3Daemon.rb +1 -1
- data/lib/taskjuggler/apps/Tj3Man.rb +2 -2
- data/lib/taskjuggler/apps/Tj3SsReceiver.rb +1 -1
- 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/apps/Tj3WebD.rb +2 -2
- data/lib/taskjuggler/daemon/Daemon.rb +1 -1
- data/lib/taskjuggler/daemon/DaemonConnector.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 +1 -1
- 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 +1 -1
- data/lib/taskjuggler/reports/CSVFile.rb +1 -1
- data/lib/taskjuggler/reports/ChartPlotter.rb +1 -1
- data/lib/taskjuggler/reports/CollisionDetector.rb +1 -1
- data/lib/taskjuggler/reports/ColumnTable.rb +1 -1
- data/lib/taskjuggler/reports/ExportRE.rb +1 -1
- data/lib/taskjuggler/reports/GanttChart.rb +1 -1
- data/lib/taskjuggler/reports/GanttContainer.rb +1 -1
- data/lib/taskjuggler/reports/GanttHeader.rb +1 -1
- data/lib/taskjuggler/reports/GanttHeaderScaleItem.rb +1 -1
- data/lib/taskjuggler/reports/GanttLine.rb +1 -1
- 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 +1 -1
- data/lib/taskjuggler/reports/MspXmlRE.rb +1 -1
- data/lib/taskjuggler/reports/Navigator.rb +1 -1
- data/lib/taskjuggler/reports/NikuReport.rb +1 -1
- data/lib/taskjuggler/reports/Report.rb +31 -19
- data/lib/taskjuggler/reports/ReportBase.rb +1 -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 +1 -1
- data/lib/taskjuggler/reports/StatusSheetReport.rb +1 -1
- data/lib/taskjuggler/reports/TableReport.rb +4 -5
- data/lib/taskjuggler/reports/TableReportColumn.rb +1 -1
- data/lib/taskjuggler/reports/TagFile.rb +1 -1
- data/lib/taskjuggler/reports/TaskListRE.rb +1 -1
- data/lib/taskjuggler/reports/TextReport.rb +1 -1
- data/lib/taskjuggler/reports/TimeSheetReport.rb +1 -1
- data/lib/taskjuggler/reports/TjpExportRE.rb +9 -2
- data/lib/taskjuggler/reports/TraceReport.rb +1 -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/tj3webd.rb +1 -1
- data/manual/How_To_Contribute +5 -6
- data/manual/Installation +3 -3
- data/manual/Rich_Text_Attributes +8 -3
- data/manual/html/Day_To_Day_Juggling.html +3 -3
- data/manual/html/Getting_Started.html +3 -3
- data/manual/html/How_To_Contribute.html +6 -7
- data/manual/html/Installation.html +6 -6
- data/manual/html/Intro.html +3 -3
- data/manual/html/Reporting_Bugs.html +3 -3
- data/manual/html/Rich_Text_Attributes.html +5 -4
- data/manual/html/Software.html +3 -3
- data/manual/html/TaskJuggler_2x_Migration.html +3 -3
- data/manual/html/TaskJuggler_Internals.html +3 -3
- data/manual/html/The_TaskJuggler_Syntax.html +3 -3
- data/manual/html/Tutorial.html +3 -3
- data/manual/html/account.html +3 -3
- data/manual/html/account.task.html +3 -3
- data/manual/html/accountprefix.html +3 -3
- data/manual/html/accountreport.html +5 -5
- data/manual/html/accountroot.html +3 -3
- data/manual/html/active.html +3 -3
- data/manual/html/adopt.task.html +3 -3
- data/manual/html/aggregate.html +3 -3
- data/manual/html/alert.html +3 -3
- data/manual/html/alertlevels.html +3 -3
- data/manual/html/allocate.html +3 -3
- data/manual/html/alphabet.html +11 -4
- data/manual/html/alternative.html +3 -3
- data/manual/html/author.html +3 -3
- data/manual/html/auxdir.html +7 -9
- data/manual/html/auxdir.report.html +69 -0
- data/manual/html/balance.html +5 -5
- data/manual/html/booking.resource.html +3 -3
- data/manual/html/booking.task.html +3 -3
- data/manual/html/caption.html +3 -3
- data/manual/html/cellcolor.column.html +4 -4
- data/manual/html/celltext.column.html +3 -3
- data/manual/html/center.html +3 -3
- data/manual/html/charge.html +3 -3
- data/manual/html/chargeset.html +3 -3
- data/manual/html/columnid.html +10 -6
- data/manual/html/columns.html +3 -3
- data/manual/html/complete.html +3 -3
- data/manual/html/copyright.html +3 -3
- data/manual/html/credits.html +3 -3
- data/manual/html/css/tjreport.css +4 -1
- data/manual/html/currency.html +3 -3
- data/manual/html/currencyformat.html +3 -3
- 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 +4 -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 +3 -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 +3 -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 +3 -3
- data/manual/html/end.timesheet.html +3 -3
- data/manual/html/endcredit.html +3 -3
- data/manual/html/epilog.html +3 -3
- data/manual/html/export.html +3 -3
- data/manual/html/extend.html +58 -13
- data/manual/html/fail.html +4 -4
- 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 +3 -3
- 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 +4 -4
- data/manual/html/footer.html +3 -3
- data/manual/html/formats.export.html +3 -3
- data/manual/html/formats.html +3 -3
- data/manual/html/functions.html +4 -4
- data/manual/html/gapduration.html +3 -3
- data/manual/html/gaplength.html +3 -3
- data/manual/html/halign.center.html +3 -3
- data/manual/html/halign.column.html +4 -4
- 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 +3 -3
- data/manual/html/headline.html +3 -3
- data/manual/html/height.html +3 -3
- data/manual/html/hideaccount.html +5 -4
- data/manual/html/hidejournalentry.html +3 -3
- data/manual/html/hidereport.html +4 -4
- data/manual/html/hideresource.html +5 -4
- data/manual/html/hidetask.html +5 -4
- data/manual/html/icalreport.html +3 -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 +2 -2
- data/manual/html/inherit.extend.html +4 -4
- 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 +3 -3
- data/manual/html/isresponsibilityof.html +3 -3
- data/manual/html/istask.html +5 -5
- data/manual/html/isvalid.html +66 -0
- data/manual/html/journalattributes.html +5 -5
- 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 +3 -3
- data/manual/html/length.html +5 -5
- data/manual/html/limits.allocate.html +3 -3
- 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 +3 -3
- data/manual/html/logicalexpression.html +14 -4
- 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 +10 -2
- data/manual/html/navigator.html +3 -3
- data/manual/html/newtask.html +4 -4
- data/manual/html/nikureport.html +3 -3
- data/manual/html/note.task.html +3 -3
- data/manual/html/now.html +5 -5
- data/manual/html/number.extend.html +77 -0
- data/manual/html/numberformat.html +5 -5
- data/manual/html/onend.html +3 -3
- data/manual/html/onstart.html +3 -3
- data/manual/html/opennodes.html +5 -5
- data/manual/html/outputdir.html +67 -0
- data/manual/html/overtime.booking.html +5 -5
- data/manual/html/period.column.html +3 -3
- data/manual/html/period.limit.html +3 -3
- data/manual/html/period.report.html +3 -3
- 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 +3 -3
- data/manual/html/prolog.html +3 -3
- data/manual/html/properties.html +10 -4
- data/manual/html/purge.html +3 -3
- data/manual/html/rate.html +3 -3
- data/manual/html/rate.resource.html +3 -3
- data/manual/html/rawhtmlhead.html +3 -3
- data/manual/html/reference.extend.html +3 -3
- data/manual/html/remaining.html +3 -3
- data/manual/html/replace.html +3 -3
- data/manual/html/reportprefix.html +3 -3
- data/manual/html/resource.html +3 -3
- data/manual/html/resourceattributes.html +3 -3
- data/manual/html/resourceprefix.html +3 -3
- data/manual/html/resourcereport.html +5 -5
- data/manual/html/resourceroot.html +3 -3
- data/manual/html/resources.limit.html +3 -3
- data/manual/html/responsible.html +3 -3
- data/manual/html/richtext.extend.html +3 -3
- data/manual/html/right.html +3 -3
- data/manual/html/rollupaccount.html +4 -4
- data/manual/html/rollupresource.html +4 -4
- 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 +3 -3
- data/manual/html/scenariospecific.extend.html +4 -4
- 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 +3 -3
- data/manual/html/shift.allocate.html +3 -3
- data/manual/html/shift.html +4 -4
- data/manual/html/shift.resource.html +3 -3
- data/manual/html/shift.task.html +3 -3
- data/manual/html/shift.timesheet.html +3 -3
- data/manual/html/shifts.allocate.html +3 -3
- 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 +3 -3
- data/manual/html/sloppy.projection.html +3 -3
- data/manual/html/sortaccounts.html +3 -3
- data/manual/html/sortjournalentries.html +3 -3
- data/manual/html/sortresources.html +3 -3
- data/manual/html/sorttasks.html +3 -3
- 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 +3 -3
- data/manual/html/startcredit.html +3 -3
- data/manual/html/status.statussheet.html +3 -3
- data/manual/html/status.timesheet.html +3 -3
- data/manual/html/statussheet.html +3 -3
- data/manual/html/statussheetreport.html +3 -3
- data/manual/html/strict.projection.html +3 -3
- data/manual/html/summary.html +3 -3
- data/manual/html/supplement.html +3 -3
- data/manual/html/supplement.resource.html +3 -3
- data/manual/html/supplement.task.html +3 -3
- 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 +5 -5
- data/manual/html/taskroot.export.html +3 -3
- data/manual/html/taskroot.html +3 -3
- data/manual/html/text.extend.html +3 -3
- data/manual/html/textreport.html +5 -5
- data/manual/html/timeformat.html +3 -3
- data/manual/html/timeformat1.html +3 -3
- data/manual/html/timeformat2.html +3 -3
- data/manual/html/timeoff.nikureport.html +3 -3
- data/manual/html/timesheet.html +3 -3
- data/manual/html/timesheetreport.html +3 -3
- data/manual/html/timezone.export.html +3 -3
- data/manual/html/timezone.html +3 -3
- data/manual/html/timezone.report.html +3 -3
- 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 +3 -3
- data/manual/html/toc.html +276 -248
- data/manual/html/tooltip.column.html +4 -4
- data/manual/html/tracereport.html +5 -5
- 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 +3 -3
- data/manual/html/vacation.shift.html +3 -3
- data/manual/html/warn.html +4 -4
- 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 +4 -4
- 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 +3 -3
- data/manual/html/workinghours.shift.html +3 -3
- data/manual/html/yearlyworkingdays.html +3 -3
- data/spec/Color_spec.rb +2 -2
- data/spec/ICalendar_spec.rb +1 -1
- data/spec/IntervalList_spec.rb +1 -1
- data/spec/ProjectBroker_spec.rb +1 -1
- data/spec/StatusSheets_spec.rb +1 -1
- data/spec/TableColumnSorter_spec.rb +2 -2
- data/spec/TernarySearchTree_spec.rb +1 -1
- data/spec/TimeSheets_spec.rb +1 -1
- data/spec/Tj3Daemon_spec.rb +1 -1
- data/spec/Tj3_spec.rb +1 -1
- data/spec/TraceReport_spec.rb +2 -2
- data/spec/support/DaemonControl.rb +1 -1
- data/spec/support/spec_helper.rb +1 -1
- data/tasks/gem.rake +7 -1
- data/tasks/rdoc.rake +5 -1
- data/test/MessageChecker.rb +1 -1
- data/test/ReferenceGenerator.rb +1 -1
- data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +14 -14
- data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +1 -1
- data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +62 -10
- data/test/TestSuite/Export-Reports/refs/Shift.tjp +1 -1
- data/test/TestSuite/Scheduler/Correct/DateAndDep.tjp +25 -0
- data/test/TestSuite/Scheduler/Correct/hammock.tjp +27 -0
- data/test/TestSuite/Scheduler/Errors/container_milestone.tjp +13 -0
- data/test/TestSuite/Scheduler/Errors/{weak_end_dep.tjp → impossible_end_dep.tjp} +2 -2
- data/test/TestSuite/Scheduler/Errors/{weak_start_dep.tjp → impossible_start_dep.tjp} +2 -2
- data/test/TestSuite/Scheduler/Errors/sched_runaway.tjp +20 -0
- data/test/TestSuite/Scheduler/Errors/{task_pred_before_gl.tjp → task_pred_before_1.tjp} +1 -1
- data/test/TestSuite/Scheduler/Errors/{task_pred_before_gd.tjp → task_pred_before_2.tjp} +1 -1
- data/test/TestSuite/Scheduler/Errors/{task_succ_after_gl.tjp → task_succ_after_1.tjp} +1 -1
- data/test/TestSuite/Scheduler/Errors/{task_succ_after_gd.tjp → task_succ_after_2.tjp} +1 -1
- data/test/TestSuite/Syntax/Correct/CustomAttributes.tjp +53 -9
- data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +11 -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 +1 -1
- 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 +1 -1
- data/test/test_Limits.rb +1 -1
- data/test/test_LogicalExpression.rb +1 -1
- data/test/test_MacroTable.rb +1 -1
- 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 +26 -14
data/lib/taskjuggler/Interval.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = Interval.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = IntervalList.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
data/lib/taskjuggler/Journal.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = Journal.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = KateSyntax.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = KeywordArray.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = KeywordDocumentation.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -688,7 +688,8 @@ class TaskJuggler
|
|
688
688
|
return nil if @pattern.supportLevel == :removed
|
689
689
|
|
690
690
|
if @pattern.exampleFile
|
691
|
-
exampleDir = AppConfig.dataDirs('test')[0]
|
691
|
+
exampleDir = File.join(AppConfig.dataDirs('test')[0], 'TestSuite',
|
692
|
+
'Syntax', 'Correct')
|
692
693
|
example = TjpExample.new
|
693
694
|
fileName = "#{exampleDir}/#{@pattern.exampleFile}.tjp"
|
694
695
|
example.open(fileName)
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = LeaveList.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
data/lib/taskjuggler/Limits.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = Limits.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
data/lib/taskjuggler/Log.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = Log.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = LogicalExpression.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = LogicalFunction.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -36,6 +36,7 @@ class TaskJuggler
|
|
36
36
|
'isresource' => 0,
|
37
37
|
'isresponsibilityof' => 2,
|
38
38
|
'istask' => 0,
|
39
|
+
'isvalid' => 1,
|
39
40
|
'treelevel' => 0
|
40
41
|
}
|
41
42
|
|
@@ -231,6 +232,27 @@ class TaskJuggler
|
|
231
232
|
property.is_a?(Task)
|
232
233
|
end
|
233
234
|
|
235
|
+
def isvalid(expr, args)
|
236
|
+
property = properties(expr)[0]
|
237
|
+
project = property.project
|
238
|
+
attr = args[0]
|
239
|
+
scenario, attr = args[0].split('.')
|
240
|
+
if attr.nil?
|
241
|
+
attr = scenario
|
242
|
+
scenario = nil
|
243
|
+
end
|
244
|
+
expr.error("Argument must not be empty") unless attr
|
245
|
+
if scenario && (scenarioIdx = project.scenarioIdx(scenario)).nil?
|
246
|
+
expr.error("Unknown scenario '#{scenario}' used for function " +
|
247
|
+
"isvalid()")
|
248
|
+
end
|
249
|
+
unless property.propertySet.knownAttribute?(attr)
|
250
|
+
expr.error("Unknown attribute '#{attr}' used for function " +
|
251
|
+
"isvalid()")
|
252
|
+
end
|
253
|
+
!property[attr, scenarioIdx].nil?
|
254
|
+
end
|
255
|
+
|
234
256
|
def treelevel(expr, args)
|
235
257
|
property = properties(expr)[0]
|
236
258
|
return 0 unless property
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = LogicalOperation.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -191,7 +191,7 @@ class TaskJuggler
|
|
191
191
|
# To evaluate a property attribute we use the Query mechanism to retrieve
|
192
192
|
# the value.
|
193
193
|
def eval(expr)
|
194
|
-
query = expr.query
|
194
|
+
query = expr.query.dup
|
195
195
|
query.scenarioIdx = @scenario.sequenceNo - 1
|
196
196
|
query.attributeId = @operand1
|
197
197
|
query.process
|
@@ -207,6 +207,9 @@ class TaskJuggler
|
|
207
207
|
# names are shown, otherwise their values.
|
208
208
|
def to_s(query)
|
209
209
|
if query
|
210
|
+
query = query.dup
|
211
|
+
query.scenarioIdx = @scenario.sequenceNo - 1
|
212
|
+
query.attributeId = @operand1
|
210
213
|
query.process
|
211
214
|
query.to_s
|
212
215
|
else
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = MessageHandler.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -136,6 +136,8 @@ class TaskJuggler
|
|
136
136
|
@logLevel = 3
|
137
137
|
# The full file name of the log file.
|
138
138
|
@logFile = nil
|
139
|
+
# Toggle if scenario ids are included in the messages or not.
|
140
|
+
@hideScenario = true
|
139
141
|
# The name of the current application
|
140
142
|
@appName = 'unknown'
|
141
143
|
# Set to true if program should be exited on warnings.
|
@@ -168,7 +170,6 @@ class TaskJuggler
|
|
168
170
|
@messages = []
|
169
171
|
end
|
170
172
|
|
171
|
-
|
172
173
|
# Set the console output level.
|
173
174
|
def outputLevel=(level)
|
174
175
|
@outputLevel = checkLevel(level)
|
@@ -179,6 +180,10 @@ class TaskJuggler
|
|
179
180
|
@logLevel = checkLevel(level)
|
180
181
|
end
|
181
182
|
|
183
|
+
def hideScenario=(yesNo)
|
184
|
+
@hideScenario = yesNo
|
185
|
+
end
|
186
|
+
|
182
187
|
# Generate a fatal message that will abort the application.
|
183
188
|
def fatal(id, message, sourceFileInfo = nil, line = nil, data = nil,
|
184
189
|
scenario = nil)
|
@@ -268,7 +273,8 @@ class TaskJuggler
|
|
268
273
|
# Treat criticals like errors but without generating another
|
269
274
|
# exception.
|
270
275
|
msg = Message.new(type == :critical ? :error : type, id, message,
|
271
|
-
sourceFileInfo, line, data,
|
276
|
+
sourceFileInfo, line, data,
|
277
|
+
@hideScenario ? nil : scenario)
|
272
278
|
@messages << msg
|
273
279
|
|
274
280
|
# Append the message to the log file if requested by the user.
|
data/lib/taskjuggler/PTNProxy.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = PTNProxy.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
data/lib/taskjuggler/Painter.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = Painter.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
data/lib/taskjuggler/Project.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = Project.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -71,6 +71,7 @@ class TaskJuggler
|
|
71
71
|
# members: the tjp syntax token, the user visible name and the
|
72
72
|
# associated color as RGB byte array.
|
73
73
|
'alertLevels' => AlertLevelDefinitions.new,
|
74
|
+
'auxdir' => '',
|
74
75
|
'copyright' => nil,
|
75
76
|
'costaccount' => nil,
|
76
77
|
'currency' => "EUR",
|
@@ -337,7 +338,7 @@ class TaskJuggler
|
|
337
338
|
[ 'accountroot', 'Account Root', PropertyAttribute,
|
338
339
|
true, false, false, nil ],
|
339
340
|
[ 'auxdir', 'Auxiliary files directory', StringAttribute,
|
340
|
-
true,
|
341
|
+
true, true, false, '' ],
|
341
342
|
[ 'bsi', 'BSI', StringAttribute,
|
342
343
|
false, false, false, '' ],
|
343
344
|
[ 'caption', 'Caption', RichTextAttribute,
|
@@ -477,7 +478,7 @@ class TaskJuggler
|
|
477
478
|
# context of enclosing reports needs to be preserved. Therefor we use a
|
478
479
|
# stack to implement this.
|
479
480
|
@reportContexts = []
|
480
|
-
@outputDir = ''
|
481
|
+
@outputDir = './'
|
481
482
|
@warnTsDeltas = false
|
482
483
|
end
|
483
484
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = ProjectFileParser.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -193,14 +193,17 @@ class TaskJuggler
|
|
193
193
|
# Register the new Attribute type with the Property set it should belong
|
194
194
|
# to.
|
195
195
|
@propertySet.addAttributeType(AttributeDefinition.new(
|
196
|
-
@val[1], @val[2], type, inherit, false, scenarioSpecific, default,
|
196
|
+
@val[1], @val[2], type, inherit, false, scenarioSpecific, default,
|
197
|
+
true))
|
197
198
|
|
198
199
|
# Add the new user-defined attribute as reportable attribute to the parser
|
199
200
|
# rule.
|
200
201
|
oldCurrentRule = @cr
|
201
202
|
@cr = @rules[:reportableAttributes]
|
202
|
-
|
203
|
-
|
203
|
+
unless @cr.include?(@val[1])
|
204
|
+
singlePattern('_' + @val[1])
|
205
|
+
descr(@val[2])
|
206
|
+
end
|
204
207
|
@cr = oldCurrentRule
|
205
208
|
|
206
209
|
scenarioSpecific
|
@@ -265,6 +268,14 @@ class TaskJuggler
|
|
265
268
|
@property.typeSpec = type
|
266
269
|
@property.sourceFileInfo = sourceFileInfo
|
267
270
|
@property.inheritAttributes
|
271
|
+
|
272
|
+
if block_given?
|
273
|
+
# The default attribute values for this report type have to be set in
|
274
|
+
# 'inherited' mode since they are not user provided.
|
275
|
+
AttributeBase.setMode(1)
|
276
|
+
yield
|
277
|
+
AttributeBase.setMode(0)
|
278
|
+
end
|
268
279
|
end
|
269
280
|
|
270
281
|
# If the @limitResources list is not empty, we have to create a Limits
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = ProjectFileScanner.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = PropertyList.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -191,7 +191,7 @@ class TaskJuggler
|
|
191
191
|
def index
|
192
192
|
i = 0
|
193
193
|
@items.each do |p|
|
194
|
-
p.
|
194
|
+
p.force('index', i += 1)
|
195
195
|
end
|
196
196
|
end
|
197
197
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = PropertySet.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -242,7 +242,7 @@ class TaskJuggler
|
|
242
242
|
end
|
243
243
|
bsi += idx.to_s
|
244
244
|
end
|
245
|
-
p.
|
245
|
+
p.force('bsi', bsi)
|
246
246
|
end
|
247
247
|
end
|
248
248
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# = PropertyTreeNode.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
|
7
7
|
# by Chris Schlaeger <chris@linux.com>
|
8
8
|
#
|
9
9
|
# This program is free software; you can redistribute it and/or modify
|
@@ -423,10 +423,28 @@ class TaskJuggler
|
|
423
423
|
end
|
424
424
|
end
|
425
425
|
|
426
|
+
# Set the non-scenario-specific attribute with ID _attributeId_ to
|
427
|
+
# _value_. No further checks are done.
|
428
|
+
def force(attributeId, value)
|
429
|
+
@attributes[attributeId].set(value)
|
430
|
+
end
|
431
|
+
|
426
432
|
# Set the non-scenario-specific attribute with ID _attributeId_ to _value_.
|
427
|
-
# In case
|
433
|
+
# In case an already provided value is overwritten again, an exeception is
|
434
|
+
# raised.
|
428
435
|
def set(attributeId, value)
|
429
|
-
@attributes[attributeId]
|
436
|
+
attr = @attributes[attributeId]
|
437
|
+
# Assignments to list attributes always append. We don't
|
438
|
+
# consider this an overwrite.
|
439
|
+
overwrite = attr.provided && !attr.isList?
|
440
|
+
attr.set(value)
|
441
|
+
|
442
|
+
# We only raise the overwrite error after the value has been set.
|
443
|
+
if overwrite
|
444
|
+
raise AttributeOverwrite,
|
445
|
+
"Overwriting a previously provided value for attribute " +
|
446
|
+
"#{attributeId}"
|
447
|
+
end
|
430
448
|
end
|
431
449
|
|
432
450
|
# Set the scenario specific attribute with ID _attributeId_ for the
|
@@ -434,36 +452,46 @@ class TaskJuggler
|
|
434
452
|
# attribute must not be scenario specific. In case the attribute does not
|
435
453
|
# exist, an exception is raised.
|
436
454
|
def []=(attributeId, scenario, value)
|
455
|
+
overwrite = false
|
456
|
+
|
437
457
|
if scenario
|
438
458
|
if AttributeBase.mode == 0
|
439
459
|
# If we get values in 'provided' mode, we copy them immedidately to
|
440
460
|
# all derived scenarios.
|
441
|
-
overwrite = false
|
442
461
|
@project.scenario(scenario).all.each do |sc|
|
443
462
|
scenarioIdx = @project.scenarioIdx(sc)
|
463
|
+
attr = @scenarioAttributes[scenarioIdx][attributeId]
|
444
464
|
|
445
|
-
if
|
465
|
+
if attr.provided && !attr.isList?
|
466
|
+
# Assignments to list attributes always append. We don't
|
467
|
+
# consider this an overwrite.
|
446
468
|
overwrite = true
|
447
469
|
end
|
448
470
|
|
449
471
|
if scenarioIdx == scenario
|
450
|
-
|
472
|
+
attr.set(value)
|
451
473
|
else
|
452
|
-
|
474
|
+
attr.inherit(value)
|
453
475
|
end
|
454
476
|
end
|
455
|
-
# We only raise the overwrite error after all scenarios have been
|
456
|
-
# set. For some attributes the overwrite is actually allowed.
|
457
|
-
if overwrite
|
458
|
-
raise AttributeOverwrite,
|
459
|
-
"Overwriting a previously provided value for attribute " +
|
460
|
-
"#{attributeId}"
|
461
|
-
end
|
462
477
|
else
|
463
|
-
@scenarioAttributes[scenario][attributeId]
|
478
|
+
attr = @scenarioAttributes[scenario][attributeId]
|
479
|
+
overwrite = attr.provided && !attr.isList?
|
480
|
+
|
481
|
+
attr.set(value)
|
464
482
|
end
|
465
483
|
else
|
466
|
-
@attributes[attributeId]
|
484
|
+
attr = @attributes[attributeId]
|
485
|
+
overwrite = attr.provided && !attr.isList?
|
486
|
+
attr.set(value)
|
487
|
+
end
|
488
|
+
|
489
|
+
# We only raise the overwrite error after all scenarios have been
|
490
|
+
# set. For some attributes the overwrite is actually allowed.
|
491
|
+
if overwrite
|
492
|
+
raise AttributeOverwrite,
|
493
|
+
"Overwriting a previously provided value for attribute " +
|
494
|
+
"#{attributeId}"
|
467
495
|
end
|
468
496
|
end
|
469
497
|
|