taskjuggler 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +1144 -2047
- data/README +1 -1
- data/Rakefile +6 -6
- data/data/css/tjmanual.css +20 -0
- data/data/css/tjreport.css +7 -6
- data/doc/AppConfig.html +136 -130
- data/doc/Arguments.html +46 -40
- data/doc/CHANGELOG.html +1162 -2057
- data/doc/COPYING.html +8 -2
- data/doc/Object.html +205 -199
- data/doc/README.html +9 -3
- data/doc/RuntimeConfig.html +75 -69
- data/doc/String.html +69 -63
- data/doc/TaskJuggler.html +350 -291
- data/doc/TaskJuggler/Account.html +26 -20
- data/doc/TaskJuggler/AccountAttribute.html +24 -18
- data/doc/TaskJuggler/AccountScenario.html +24 -18
- data/doc/TaskJuggler/Allocation.html +74 -68
- data/doc/TaskJuggler/AllocationAttribute.html +54 -48
- data/doc/TaskJuggler/AttributeBase.html +172 -93
- data/doc/TaskJuggler/AttributeDefinition.html +22 -16
- data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
- data/doc/TaskJuggler/BatchProcessor.html +263 -257
- data/doc/TaskJuggler/Booking.html +44 -38
- data/doc/TaskJuggler/BookingListAttribute.html +25 -21
- data/doc/TaskJuggler/BooleanAttribute.html +24 -18
- data/doc/TaskJuggler/CSVFile.html +193 -187
- data/doc/TaskJuggler/CellSettingPattern.html +13 -7
- data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
- data/doc/TaskJuggler/Charge.html +49 -43
- data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
- data/doc/TaskJuggler/ChargeSet.html +94 -88
- data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
- data/doc/TaskJuggler/CollisionDetector.html +142 -136
- data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
- data/doc/TaskJuggler/ColumnTable.html +50 -44
- data/doc/TaskJuggler/Daemon.html +71 -50
- data/doc/TaskJuggler/DataCache.html +110 -58
- data/doc/TaskJuggler/DataCacheEntry.html +22 -16
- data/doc/TaskJuggler/DateAttribute.html +24 -18
- data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
- data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
- data/doc/TaskJuggler/DurationAttribute.html +25 -19
- data/doc/TaskJuggler/FileList.html +25 -19
- data/doc/TaskJuggler/FileRecord.html +17 -11
- data/doc/TaskJuggler/FixnumAttribute.html +16 -10
- data/doc/TaskJuggler/FlagListAttribute.html +25 -21
- data/doc/TaskJuggler/FloatAttribute.html +20 -14
- data/doc/TaskJuggler/FormatListAttribute.html +17 -11
- data/doc/TaskJuggler/GanttChart.html +242 -236
- data/doc/TaskJuggler/GanttContainer.html +71 -67
- data/doc/TaskJuggler/GanttHeader.html +113 -107
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
- data/doc/TaskJuggler/GanttLine.html +217 -210
- data/doc/TaskJuggler/GanttLoadStack.html +89 -83
- data/doc/TaskJuggler/GanttMilestone.html +11 -6
- data/doc/TaskJuggler/GanttRouter.html +194 -186
- data/doc/TaskJuggler/GanttTaskBar.html +41 -34
- data/doc/TaskJuggler/HTMLDocument.html +52 -46
- data/doc/TaskJuggler/HTMLGraphics.html +58 -52
- data/doc/TaskJuggler/Interval.html +90 -84
- data/doc/TaskJuggler/IntervalList.html +777 -0
- data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
- data/doc/TaskJuggler/JobInfo.html +36 -30
- data/doc/TaskJuggler/Journal.html +188 -177
- data/doc/TaskJuggler/JournalEntry.html +36 -30
- data/doc/TaskJuggler/JournalEntryList.html +88 -82
- data/doc/TaskJuggler/KeywordArray.html +12 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
- data/doc/TaskJuggler/Limits.html +111 -105
- data/doc/TaskJuggler/Limits/Limit.html +71 -65
- data/doc/TaskJuggler/LimitsAttribute.html +21 -15
- data/doc/TaskJuggler/ListAttributeBase.html +16 -10
- data/doc/TaskJuggler/Log.html +111 -105
- data/doc/TaskJuggler/LogFile.html +54 -48
- data/doc/TaskJuggler/LogicalAttribute.html +35 -29
- data/doc/TaskJuggler/LogicalExpression.html +32 -26
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
- data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
- data/doc/TaskJuggler/LogicalFlag.html +24 -18
- data/doc/TaskJuggler/LogicalFunction.html +164 -158
- data/doc/TaskJuggler/LogicalOperation.html +138 -132
- data/doc/TaskJuggler/Macro.html +14 -8
- data/doc/TaskJuggler/MacroTable.html +42 -36
- data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
- data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
- data/doc/TaskJuggler/Message.html +56 -50
- data/doc/TaskJuggler/MessageHandler.html +73 -67
- data/doc/TaskJuggler/Navigator.html +92 -86
- data/doc/TaskJuggler/NavigatorElement.html +88 -82
- data/doc/TaskJuggler/NikuProject.html +15 -9
- data/doc/TaskJuggler/NikuReport.html +405 -370
- data/doc/TaskJuggler/NikuResource.html +13 -7
- data/doc/TaskJuggler/NodeListAttribute.html +13 -9
- data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
- data/doc/TaskJuggler/ProcessIntercom.html +116 -110
- data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
- data/doc/TaskJuggler/Project.html +1064 -895
- data/doc/TaskJuggler/ProjectBroker.html +439 -366
- data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
- data/doc/TaskJuggler/ProjectFileParser.html +329 -319
- data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
- data/doc/TaskJuggler/ProjectRecord.html +66 -60
- data/doc/TaskJuggler/ProjectServer.html +287 -280
- data/doc/TaskJuggler/ProjectServerIface.html +43 -37
- data/doc/TaskJuggler/PropertyAttribute.html +16 -10
- data/doc/TaskJuggler/PropertyList.html +205 -199
- data/doc/TaskJuggler/PropertySet.html +264 -296
- data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
- data/doc/TaskJuggler/Query.html +309 -524
- data/doc/TaskJuggler/RTFHandlers.html +17 -11
- data/doc/TaskJuggler/RTFNavigator.html +33 -27
- data/doc/TaskJuggler/RTFQuery.html +135 -129
- data/doc/TaskJuggler/RTFReport.html +63 -57
- data/doc/TaskJuggler/RTFReportLink.html +55 -49
- data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
- data/doc/TaskJuggler/RealFormat.html +64 -58
- data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
- data/doc/TaskJuggler/Report.html +294 -249
- data/doc/TaskJuggler/ReportBase.html +229 -223
- data/doc/TaskJuggler/ReportContext.html +52 -46
- data/doc/TaskJuggler/ReportServer.html +143 -137
- data/doc/TaskJuggler/ReportServerIface.html +51 -43
- data/doc/TaskJuggler/ReportServerRecord.html +36 -30
- data/doc/TaskJuggler/ReportServlet.html +167 -140
- data/doc/TaskJuggler/ReportTable.html +137 -131
- data/doc/TaskJuggler/ReportTableCell.html +332 -292
- data/doc/TaskJuggler/ReportTableColumn.html +46 -40
- data/doc/TaskJuggler/ReportTableLegend.html +43 -38
- data/doc/TaskJuggler/ReportTableLine.html +66 -60
- data/doc/TaskJuggler/Resource.html +166 -160
- data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
- data/doc/TaskJuggler/ResourceListRE.html +47 -41
- data/doc/TaskJuggler/ResourceScenario.html +671 -644
- data/doc/TaskJuggler/RichText.html +51 -45
- data/doc/TaskJuggler/RichTextAttribute.html +28 -22
- data/doc/TaskJuggler/RichTextDocument.html +96 -90
- data/doc/TaskJuggler/RichTextElement.html +503 -497
- data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
- data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
- data/doc/TaskJuggler/RichTextImage.html +14 -8
- data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
- data/doc/TaskJuggler/RichTextParser.html +59 -53
- data/doc/TaskJuggler/RichTextScanner.html +184 -178
- data/doc/TaskJuggler/RichTextSnip.html +69 -63
- data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
- data/doc/TaskJuggler/Scenario.html +13 -7
- data/doc/TaskJuggler/ScenarioData.html +40 -34
- data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
- data/doc/TaskJuggler/Scoreboard.html +129 -107
- data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
- data/doc/TaskJuggler/SheetReceiver.html +333 -327
- data/doc/TaskJuggler/SheetSender.html +227 -221
- data/doc/TaskJuggler/Shift.html +26 -20
- data/doc/TaskJuggler/ShiftAssignment.html +45 -39
- data/doc/TaskJuggler/ShiftAssignments.html +178 -172
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
- data/doc/TaskJuggler/ShiftScenario.html +29 -23
- data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
- data/doc/TaskJuggler/SortListAttribute.html +17 -13
- data/doc/TaskJuggler/SourceFileInfo.html +19 -13
- data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
- data/doc/TaskJuggler/StatusSheetReport.html +166 -159
- data/doc/TaskJuggler/StatusSheetSender.html +80 -74
- data/doc/TaskJuggler/StringAttribute.html +20 -14
- data/doc/TaskJuggler/SymbolAttribute.html +16 -10
- data/doc/TaskJuggler/SyntaxReference.html +231 -225
- data/doc/TaskJuggler/TOCEntry.html +46 -40
- data/doc/TaskJuggler/TSResourceRecord.html +15 -9
- data/doc/TaskJuggler/TSTaskRecord.html +16 -10
- data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
- data/doc/TaskJuggler/TableOfContents.html +28 -22
- data/doc/TaskJuggler/TableReport.html +906 -866
- data/doc/TaskJuggler/Task.html +99 -93
- data/doc/TaskJuggler/TaskDependency.html +24 -18
- data/doc/TaskJuggler/TaskListAttribute.html +29 -25
- data/doc/TaskJuggler/TaskListRE.html +46 -39
- data/doc/TaskJuggler/TaskScenario.html +2218 -1965
- data/doc/TaskJuggler/TextFormatter.html +154 -148
- data/doc/TaskJuggler/TextParser.html +362 -348
- data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
- data/doc/TaskJuggler/TextParser/Rule.html +147 -141
- data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
- data/doc/TaskJuggler/TextParser/State.html +88 -82
- data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
- data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
- data/doc/TaskJuggler/TextReport.html +80 -74
- data/doc/TaskJuggler/TextScanner.html +284 -272
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
- data/doc/TaskJuggler/TimeSheet.html +123 -117
- data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
- data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
- data/doc/TaskJuggler/TimeSheetReport.html +206 -199
- data/doc/TaskJuggler/TimeSheetSender.html +27 -21
- data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
- data/doc/TaskJuggler/TimeSheets.html +20 -14
- data/doc/TaskJuggler/Tj3AppBase.html +100 -94
- data/doc/TaskJuggler/Tj3Client.html +407 -483
- data/doc/TaskJuggler/Tj3Daemon.html +116 -107
- data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
- data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3SsSender.html +64 -58
- data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3TsSender.html +51 -45
- data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
- data/doc/TaskJuggler/TjException.html +13 -7
- data/doc/TaskJuggler/TjTime.html +444 -438
- data/doc/TaskJuggler/TjpExample.html +84 -78
- data/doc/TaskJuggler/TjpExportRE.html +356 -349
- data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
- data/doc/TaskJuggler/URLParameter.html +16 -10
- data/doc/TaskJuggler/UserManual.html +185 -179
- data/doc/TaskJuggler/VimSyntax.html +144 -138
- data/doc/TaskJuggler/WebServer.html +46 -39
- data/doc/TaskJuggler/WelcomePage.html +769 -0
- data/doc/TaskJuggler/WorkingHours.html +185 -179
- data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
- data/doc/TaskJuggler/XMLBlob.html +21 -15
- data/doc/TaskJuggler/XMLComment.html +17 -11
- data/doc/TaskJuggler/XMLDocument.html +33 -27
- data/doc/TaskJuggler/XMLElement.html +97 -91
- data/doc/TaskJuggler/XMLNamedText.html +13 -7
- data/doc/TaskJuggler/XMLText.html +32 -26
- data/doc/index.html +601 -563
- data/doc/lib/AccountScenario_rb.html +5 -3
- data/doc/lib/Account_rb.html +5 -3
- data/doc/lib/Allocation_rb.html +5 -3
- data/doc/lib/AppConfig_rb.html +5 -3
- data/doc/lib/AttributeBase_rb.html +5 -3
- data/doc/lib/AttributeDefinition_rb.html +5 -3
- data/doc/lib/Attributes_rb.html +5 -3
- data/doc/lib/BatchProcessor_rb.html +5 -3
- data/doc/lib/Booking_rb.html +5 -3
- data/doc/lib/ChargeSet_rb.html +5 -3
- data/doc/lib/Charge_rb.html +5 -3
- data/doc/lib/DataCache_rb.html +5 -3
- data/doc/lib/FileList_rb.html +5 -3
- data/doc/lib/HTMLDocument_rb.html +5 -3
- data/doc/lib/IntervalList_rb.html +69 -0
- data/doc/lib/Interval_rb.html +5 -3
- data/doc/lib/Journal_rb.html +5 -3
- data/doc/lib/KeywordArray_rb.html +5 -3
- data/doc/lib/KeywordDocumentation_rb.html +5 -3
- data/doc/lib/Limits_rb.html +5 -3
- data/doc/lib/LogFile_rb.html +5 -3
- data/doc/lib/Log_rb.html +5 -3
- data/doc/lib/LogicalExpression_rb.html +5 -3
- data/doc/lib/LogicalFunction_rb.html +5 -3
- data/doc/lib/LogicalOperation_rb.html +5 -3
- data/doc/lib/MacroTable_rb.html +5 -3
- data/doc/lib/MessageHandler_rb.html +5 -3
- data/doc/lib/ProjectFileParser_rb.html +5 -3
- data/doc/lib/ProjectFileScanner_rb.html +5 -3
- data/doc/lib/Project_rb.html +5 -3
- data/doc/lib/PropertyList_rb.html +5 -3
- data/doc/lib/PropertySet_rb.html +5 -3
- data/doc/lib/PropertyTreeNode_rb.html +5 -3
- data/doc/lib/Query_rb.html +5 -3
- data/doc/lib/RTFHandlers_rb.html +5 -3
- data/doc/lib/RTFNavigator_rb.html +5 -3
- data/doc/lib/RTFQuery_rb.html +5 -3
- data/doc/lib/RTFReportLink_rb.html +5 -3
- data/doc/lib/RTFReport_rb.html +5 -3
- data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
- data/doc/lib/RealFormat_rb.html +5 -3
- data/doc/lib/ResourceScenario_rb.html +5 -3
- data/doc/lib/Resource_rb.html +5 -3
- data/doc/lib/RichTextDocument_rb.html +5 -3
- data/doc/lib/RichTextElement_rb.html +5 -3
- data/doc/lib/RichTextFunctionExample_rb.html +5 -3
- data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
- data/doc/lib/RichTextParser_rb.html +5 -3
- data/doc/lib/RichTextScanner_rb.html +5 -3
- data/doc/lib/RichTextSnip_rb.html +5 -3
- data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
- data/doc/lib/RichText_rb.html +5 -3
- data/doc/lib/RuntimeConfig_rb.html +5 -3
- data/doc/lib/ScenarioData_rb.html +5 -3
- data/doc/lib/Scenario_rb.html +5 -3
- data/doc/lib/Scoreboard_rb.html +7 -3
- data/doc/lib/SheetHandlerBase_rb.html +5 -3
- data/doc/lib/SheetReceiver_rb.html +5 -3
- data/doc/lib/SheetSender_rb.html +5 -3
- data/doc/lib/ShiftAssignments_rb.html +5 -3
- data/doc/lib/ShiftScenario_rb.html +5 -3
- data/doc/lib/Shift_rb.html +5 -3
- data/doc/lib/SimpleQueryExpander_rb.html +5 -3
- data/doc/lib/SourceFileInfo_rb.html +5 -3
- data/doc/lib/StatusSheetReceiver_rb.html +5 -3
- data/doc/lib/StatusSheetSender_rb.html +5 -3
- data/doc/lib/SyntaxReference_rb.html +5 -3
- data/doc/lib/TOCEntry_rb.html +5 -3
- data/doc/lib/TableColumnDefinition_rb.html +5 -3
- data/doc/lib/TableOfContents_rb.html +5 -3
- data/doc/lib/TaskDependency_rb.html +5 -3
- data/doc/lib/TaskJuggler_rb.html +5 -3
- data/doc/lib/TaskScenario_rb.html +5 -3
- data/doc/lib/Task_rb.html +5 -3
- data/doc/lib/TextFormatter_rb.html +6 -4
- data/doc/lib/TextParser/Pattern_rb.html +5 -3
- data/doc/lib/TextParser/Rule_rb.html +5 -3
- data/doc/lib/TextParser/StackElement_rb.html +5 -3
- data/doc/lib/TextParser/State_rb.html +6 -4
- data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
- data/doc/lib/TextParser_rb.html +5 -3
- data/doc/lib/TextScanner_rb.html +5 -3
- data/doc/lib/TimeSheetReceiver_rb.html +5 -3
- data/doc/lib/TimeSheetSender_rb.html +5 -3
- data/doc/lib/TimeSheetSummary_rb.html +6 -4
- data/doc/lib/TimeSheets_rb.html +5 -3
- data/doc/lib/Tj3AppBase_rb.html +5 -3
- data/doc/lib/Tj3Config_rb.html +5 -3
- data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
- data/doc/lib/TjException_rb.html +5 -3
- data/doc/lib/TjTime_rb.html +5 -3
- data/doc/lib/TjpExample_rb.html +5 -3
- data/doc/lib/TjpSyntaxRules_rb.html +5 -3
- data/doc/lib/URLParameter_rb.html +5 -3
- data/doc/lib/UTF8String_rb.html +5 -3
- data/doc/lib/UserManual_rb.html +5 -3
- data/doc/lib/VimSyntax_rb.html +6 -4
- data/doc/lib/WorkingHours_rb.html +5 -3
- data/doc/lib/XMLDocument_rb.html +5 -3
- data/doc/lib/XMLElement_rb.html +5 -3
- data/doc/lib/daemon/Daemon_rb.html +5 -3
- data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
- data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
- data/doc/lib/daemon/ProjectServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServlet_rb.html +69 -0
- data/doc/lib/daemon/WebServer_rb.html +9 -3
- data/doc/lib/daemon/WelcomePage_rb.html +71 -0
- data/doc/lib/deep_copy_rb.html +5 -3
- data/doc/lib/reports/CSVFile_rb.html +5 -3
- data/doc/lib/reports/CollisionDetector_rb.html +5 -3
- data/doc/lib/reports/ColumnTable_rb.html +5 -3
- data/doc/lib/reports/GanttChart_rb.html +5 -3
- data/doc/lib/reports/GanttContainer_rb.html +5 -3
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
- data/doc/lib/reports/GanttHeader_rb.html +5 -3
- data/doc/lib/reports/GanttLine_rb.html +5 -3
- data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
- data/doc/lib/reports/GanttMilestone_rb.html +5 -3
- data/doc/lib/reports/GanttRouter_rb.html +5 -3
- data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
- data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
- data/doc/lib/reports/Navigator_rb.html +5 -3
- data/doc/lib/reports/NikuReport_rb.html +5 -3
- data/doc/lib/reports/ReportBase_rb.html +5 -3
- data/doc/lib/reports/ReportContext_rb.html +5 -3
- data/doc/lib/reports/ReportTableCell_rb.html +5 -3
- data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
- data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
- data/doc/lib/reports/ReportTableLine_rb.html +5 -3
- data/doc/lib/reports/ReportTable_rb.html +5 -3
- data/doc/lib/reports/Report_rb.html +5 -3
- data/doc/lib/reports/ResourceListRE_rb.html +5 -3
- data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
- data/doc/lib/reports/TableReport_rb.html +5 -3
- data/doc/lib/reports/TaskListRE_rb.html +5 -3
- data/doc/lib/reports/TextReport_rb.html +5 -3
- data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
- data/doc/lib/reports/TjpExportRE_rb.html +5 -3
- data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
- data/doc/lib/tj3client_rb.html +5 -3
- data/doc/lib/tj3d_rb.html +6 -4
- data/doc/lib/tj3man_rb.html +5 -3
- data/doc/lib/tj3ss_receiver_rb.html +5 -3
- data/doc/lib/tj3ss_sender_rb.html +5 -3
- data/doc/lib/tj3ts_receiver_rb.html +5 -3
- data/doc/lib/tj3ts_sender_rb.html +5 -3
- data/doc/lib/tj3ts_summary_rb.html +5 -3
- data/examples/tutorial.tjp +13 -5
- data/gem_spec.rb +3 -0
- data/lib/Account.rb +2 -1
- data/lib/AccountScenario.rb +2 -1
- data/lib/Allocation.rb +2 -1
- data/lib/AppConfig.rb +2 -1
- data/lib/AttributeBase.rb +19 -5
- data/lib/AttributeDefinition.rb +2 -1
- data/lib/Attributes.rb +49 -38
- data/lib/BatchProcessor.rb +2 -1
- data/lib/Booking.rb +2 -1
- data/lib/Charge.rb +2 -1
- data/lib/ChargeSet.rb +2 -1
- data/lib/DataCache.rb +15 -1
- data/lib/FileList.rb +2 -1
- data/lib/HTMLDocument.rb +2 -1
- data/lib/Interval.rb +2 -1
- data/lib/IntervalList.rb +100 -0
- data/lib/Journal.rb +8 -2
- data/lib/KeywordArray.rb +2 -1
- data/lib/KeywordDocumentation.rb +10 -6
- data/lib/Limits.rb +2 -1
- data/lib/Log.rb +3 -2
- data/lib/LogFile.rb +2 -1
- data/lib/LogicalExpression.rb +2 -1
- data/lib/LogicalFunction.rb +2 -1
- data/lib/LogicalOperation.rb +2 -1
- data/lib/MacroTable.rb +2 -1
- data/lib/MessageHandler.rb +2 -1
- data/lib/Project.rb +92 -25
- data/lib/ProjectFileParser.rb +7 -2
- data/lib/ProjectFileScanner.rb +2 -1
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +2 -6
- data/lib/PropertyTreeNode.rb +22 -44
- data/lib/Query.rb +32 -13
- data/lib/RTFHandlers.rb +2 -1
- data/lib/RTFNavigator.rb +2 -1
- data/lib/RTFQuery.rb +3 -2
- data/lib/RTFReport.rb +2 -1
- data/lib/RTFReportLink.rb +2 -1
- data/lib/RTFWithQuerySupport.rb +2 -1
- data/lib/RealFormat.rb +2 -1
- data/lib/Resource.rb +2 -1
- data/lib/ResourceScenario.rb +35 -14
- data/lib/RichText.rb +2 -1
- data/lib/RichTextDocument.rb +2 -1
- data/lib/RichTextElement.rb +2 -1
- data/lib/RichTextFunctionExample.rb +2 -1
- data/lib/RichTextFunctionHandler.rb +2 -1
- data/lib/RichTextParser.rb +2 -1
- data/lib/RichTextScanner.rb +2 -1
- data/lib/RichTextSnip.rb +2 -1
- data/lib/RichTextSyntaxRules.rb +2 -1
- data/lib/RuntimeConfig.rb +2 -1
- data/lib/Scenario.rb +2 -1
- data/lib/ScenarioData.rb +2 -1
- data/lib/Scoreboard.rb +27 -8
- data/lib/SheetHandlerBase.rb +2 -1
- data/lib/SheetReceiver.rb +2 -1
- data/lib/SheetSender.rb +2 -1
- data/lib/Shift.rb +2 -1
- data/lib/ShiftAssignments.rb +2 -1
- data/lib/ShiftScenario.rb +2 -1
- data/lib/SimpleQueryExpander.rb +2 -1
- data/lib/SourceFileInfo.rb +2 -1
- data/lib/StatusSheetReceiver.rb +2 -1
- data/lib/StatusSheetSender.rb +2 -1
- data/lib/SyntaxReference.rb +2 -1
- data/lib/TOCEntry.rb +2 -1
- data/lib/TableColumnDefinition.rb +9 -2
- data/lib/TableOfContents.rb +2 -1
- data/lib/Task.rb +2 -1
- data/lib/TaskDependency.rb +2 -1
- data/lib/TaskJuggler.rb +8 -6
- data/lib/TaskScenario.rb +337 -153
- data/lib/TextFormatter.rb +3 -2
- data/lib/TextParser.rb +7 -2
- data/lib/TextParser/Pattern.rb +2 -1
- data/lib/TextParser/Rule.rb +2 -1
- data/lib/TextParser/StackElement.rb +2 -1
- data/lib/TextParser/State.rb +3 -2
- data/lib/TextParser/TokenDoc.rb +2 -1
- data/lib/TextScanner.rb +12 -5
- data/lib/TimeSheetReceiver.rb +2 -1
- data/lib/TimeSheetSender.rb +2 -1
- data/lib/TimeSheetSummary.rb +3 -2
- data/lib/TimeSheets.rb +2 -1
- data/lib/Tj3AppBase.rb +6 -5
- data/lib/Tj3Config.rb +5 -4
- data/lib/Tj3SheetAppBase.rb +2 -1
- data/lib/TjException.rb +2 -1
- data/lib/TjTime.rb +2 -1
- data/lib/TjpExample.rb +2 -1
- data/lib/TjpSyntaxRules.rb +264 -65
- data/lib/URLParameter.rb +2 -1
- data/lib/UTF8String.rb +2 -1
- data/lib/UserManual.rb +2 -1
- data/lib/VimSyntax.rb +3 -2
- data/lib/WorkingHours.rb +2 -1
- data/lib/XMLDocument.rb +2 -1
- data/lib/XMLElement.rb +2 -1
- data/lib/daemon/Daemon.rb +3 -1
- data/lib/daemon/ProcessIntercom.rb +3 -1
- data/lib/daemon/ProjectBroker.rb +84 -32
- data/lib/daemon/ProjectServer.rb +5 -3
- data/lib/daemon/ReportServer.rb +8 -5
- data/lib/daemon/ReportServlet.rb +166 -0
- data/lib/daemon/WebServer.rb +6 -150
- data/lib/daemon/WelcomePage.rb +80 -0
- data/lib/deep_copy.rb +2 -1
- data/lib/reports/CSVFile.rb +2 -1
- data/lib/reports/CollisionDetector.rb +2 -1
- data/lib/reports/ColumnTable.rb +2 -1
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/GanttContainer.rb +3 -4
- data/lib/reports/GanttHeader.rb +2 -1
- data/lib/reports/GanttHeaderScaleItem.rb +2 -1
- data/lib/reports/GanttLine.rb +12 -10
- data/lib/reports/GanttLoadStack.rb +2 -1
- data/lib/reports/GanttMilestone.rb +3 -3
- data/lib/reports/GanttRouter.rb +4 -1
- data/lib/reports/GanttTaskBar.rb +9 -7
- data/lib/reports/HTMLGraphics.rb +2 -1
- data/lib/reports/Navigator.rb +2 -1
- data/lib/reports/NikuReport.rb +79 -49
- data/lib/reports/Report.rb +42 -10
- data/lib/reports/ReportBase.rb +2 -1
- data/lib/reports/ReportContext.rb +2 -1
- data/lib/reports/ReportTable.rb +2 -1
- data/lib/reports/ReportTableCell.rb +63 -28
- data/lib/reports/ReportTableColumn.rb +2 -1
- data/lib/reports/ReportTableLegend.rb +5 -5
- data/lib/reports/ReportTableLine.rb +2 -1
- data/lib/reports/ResourceListRE.rb +2 -1
- data/lib/reports/StatusSheetReport.rb +4 -2
- data/lib/reports/TableReport.rb +42 -38
- data/lib/reports/TaskListRE.rb +4 -2
- data/lib/reports/TextReport.rb +2 -1
- data/lib/reports/TimeSheetReport.rb +4 -2
- data/lib/reports/TjpExportRE.rb +4 -2
- data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
- data/lib/tj3client.rb +19 -36
- data/lib/tj3d.rb +6 -2
- data/lib/tj3man.rb +4 -3
- data/lib/tj3ss_receiver.rb +2 -1
- data/lib/tj3ss_sender.rb +2 -1
- data/lib/tj3ts_receiver.rb +2 -1
- data/lib/tj3ts_sender.rb +2 -1
- data/lib/tj3ts_summary.rb +2 -1
- data/manual/Day_To_Day_Juggling +36 -0
- data/manual/How_To_Contribute +9 -4
- data/manual/Installation +10 -3
- data/manual/TaskJuggler_Internals +0 -2
- data/manual/Tutorial +25 -3
- data/prj_cfg.rb +4 -2
- data/spec/IntervalList_spec.rb +138 -0
- data/spec/ProjectBroker_spec.rb +133 -0
- data/tasks/changelog.rake +41 -24
- data/tasks/csts.rake +1 -0
- data/tasks/gem.rake +1 -0
- data/tasks/rcov.rake +1 -1
- data/tasks/spec.rake +7 -0
- data/tasks/test.rake +1 -0
- data/test/MessageChecker.rb +2 -1
- data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
- data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
- data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
- data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
- data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
- data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
- data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
- data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
- data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
- data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
- data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
- data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
- data/test/TestSuite/StatusSheets/sender.log +256 -0
- data/test/TestSuite/StatusSheets/statussheets.log +9 -0
- data/test/TestSuite/StatusSheets/tj3d.log +395 -0
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
- data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
- data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
- data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
- data/test/all.rb +2 -4
- data/test/test_BatchProcessor.rb +2 -1
- data/test/test_CSV-Reports.rb +34 -23
- data/test/test_CSVFile.rb +2 -1
- data/test/test_CollisionDetector.rb +3 -2
- data/test/test_Journal.rb +2 -1
- data/test/test_Limits.rb +2 -1
- data/test/test_LogicalExpression.rb +2 -1
- data/test/test_MacroTable.rb +2 -1
- data/test/test_Project.rb +3 -2
- data/test/test_ProjectFileScanner.rb +2 -1
- data/test/test_PropertySet.rb +2 -1
- data/test/test_Query.rb +2 -1
- data/test/test_RealFormat.rb +2 -1
- data/test/test_ReportGenerator.rb +2 -1
- data/test/test_RichText.rb +2 -1
- data/test/test_Scheduler.rb +2 -1
- data/test/test_ShiftAssignments.rb +2 -1
- data/test/test_SimpleQueryExpander.rb +2 -1
- data/test/test_Syntax.rb +2 -1
- data/test/test_TextFormatter.rb +3 -2
- data/test/test_TjTime.rb +2 -1
- data/test/test_TjpExample.rb +2 -1
- data/test/test_URLParameter.rb +2 -1
- data/test/test_UTF8String.rb +2 -1
- data/test/test_WorkingHours.rb +2 -1
- data/test/test_deep_copy.rb +2 -1
- metadata +74 -20
- data/doc/StringIO.html +0 -595
- data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
- data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
- data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
data/lib/TextFormatter.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby -w
|
2
2
|
# encoding: UTF-8
|
3
3
|
#
|
4
|
-
# =
|
4
|
+
# = TextFormatter.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TextParser.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TextParser.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
@@ -383,7 +384,11 @@ class TaskJuggler
|
|
383
384
|
@val = stackEntry.val
|
384
385
|
@sourceFileInfo = stackEntry.sourceFileInfo
|
385
386
|
# Now call the pattern action to compute the value of the pattern.
|
386
|
-
|
387
|
+
begin
|
388
|
+
result = state.pattern.function.call
|
389
|
+
rescue AttributeOverwrite
|
390
|
+
@scanner.warning('attr_overwrite', $!.to_s)
|
391
|
+
end
|
387
392
|
end
|
388
393
|
|
389
394
|
# We use the SourceFileInfo of the first token of the pattern to store
|
data/lib/TextParser/Pattern.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = Pattern.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TextParser/Rule.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = Rule.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = StackElement.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TextParser/State.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby -w
|
2
2
|
# encoding: UTF-8
|
3
3
|
#
|
4
|
-
# =
|
4
|
+
# = State.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TextParser/TokenDoc.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TokenDoc.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TextScanner.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TextScanner.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
@@ -262,10 +263,10 @@ class TaskJuggler
|
|
262
263
|
def open(fileNameIsBuffer = false)
|
263
264
|
@fileNameIsBuffer = fileNameIsBuffer
|
264
265
|
if fileNameIsBuffer
|
265
|
-
@fileStack = [ [ @cf = BufferStreamHandle.new(@masterFile), nil ] ]
|
266
|
+
@fileStack = [ [ @cf = BufferStreamHandle.new(@masterFile), nil, nil ] ]
|
266
267
|
else
|
267
268
|
begin
|
268
|
-
@fileStack = [ [ @cf = FileStreamHandle.new(@masterFile), nil ] ]
|
269
|
+
@fileStack = [ [ @cf = FileStreamHandle.new(@masterFile), nil, nil ] ]
|
269
270
|
rescue StandardError
|
270
271
|
error('open_file', "Cannot open file #{@masterFile}")
|
271
272
|
end
|
@@ -288,7 +289,7 @@ class TaskJuggler
|
|
288
289
|
# this file is finished, we will continue in the old file after the
|
289
290
|
# location where we started with the new file. The method returns the full
|
290
291
|
# qualified name of the included file.
|
291
|
-
def include(includeFileName, sfi)
|
292
|
+
def include(includeFileName, sfi, &block)
|
292
293
|
if includeFileName[0] != '/'
|
293
294
|
pathOfCallingFile = @fileStack.last[0].dirname
|
294
295
|
path = pathOfCallingFile.empty? ? '' : pathOfCallingFile + '/'
|
@@ -313,7 +314,8 @@ class TaskJuggler
|
|
313
314
|
|
314
315
|
# Open the new file and push the handle on the @fileStack.
|
315
316
|
begin
|
316
|
-
@fileStack << [ (@cf = FileStreamHandle.new(includeFileName)),
|
317
|
+
@fileStack << [ (@cf = FileStreamHandle.new(includeFileName)),
|
318
|
+
nil, block ]
|
317
319
|
Log << "Parsing file #{includeFileName}"
|
318
320
|
rescue StandardError
|
319
321
|
error('bad_include', "Cannot open include file #{includeFileName}", sfi)
|
@@ -364,6 +366,11 @@ class TaskJuggler
|
|
364
366
|
# @fileStack.
|
365
367
|
@finishLastFile = false
|
366
368
|
#Log << "Completed file #{@cf.fileName}"
|
369
|
+
|
370
|
+
# If we have a block to be executed on EOF, we call it now.
|
371
|
+
onEof = @fileStack.last[2]
|
372
|
+
onEof.call if onEof
|
373
|
+
|
367
374
|
@cf.close if @cf
|
368
375
|
@fileStack.pop
|
369
376
|
|
data/lib/TimeSheetReceiver.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TimeSheetReceiver.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TimeSheetSender.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TimeSheetSender.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TimeSheetSummary.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby -w
|
2
2
|
# encoding: UTF-8
|
3
3
|
#
|
4
|
-
# =
|
4
|
+
# = TimeSheetSummary.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TimeSheets.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TimeSheets.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/Tj3AppBase.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = Tj3AppBase.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
@@ -39,8 +40,8 @@ class TaskJuggler
|
|
39
40
|
|
40
41
|
@opts.banner = "#{AppConfig.softwareName} v#{AppConfig.version} - " +
|
41
42
|
"#{AppConfig.packageInfo}\n\n" +
|
42
|
-
"Copyright (c) #{AppConfig.copyright.join(', ')}" +
|
43
|
-
"
|
43
|
+
"Copyright (c) #{AppConfig.copyright.join(', ')}\n" +
|
44
|
+
" by #{AppConfig.authors.join(', ')}\n\n" +
|
44
45
|
"#{AppConfig.license}\n" +
|
45
46
|
"For more info about #{AppConfig.softwareName} see " +
|
46
47
|
"#{AppConfig.contact}\n\n" +
|
@@ -98,8 +99,8 @@ class TaskJuggler
|
|
98
99
|
unless @silent
|
99
100
|
puts "#{AppConfig.softwareName} v#{AppConfig.version} - " +
|
100
101
|
"#{AppConfig.packageInfo}\n\n" +
|
101
|
-
"Copyright (c) #{AppConfig.copyright.join(', ')}" +
|
102
|
-
"
|
102
|
+
"Copyright (c) #{AppConfig.copyright.join(', ')}\n" +
|
103
|
+
" by #{AppConfig.authors.join(', ')}\n\n" +
|
103
104
|
"#{AppConfig.license}\n"
|
104
105
|
end
|
105
106
|
|
data/lib/Tj3Config.rb
CHANGED
@@ -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
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
@@ -13,12 +14,12 @@
|
|
13
14
|
require 'UTF8String'
|
14
15
|
require 'AppConfig'
|
15
16
|
|
16
|
-
AppConfig.version = '0.0.
|
17
|
+
AppConfig.version = '0.0.9'
|
17
18
|
AppConfig.packageName = 'taskjuggler'
|
18
19
|
AppConfig.softwareName = 'TaskJuggler III'
|
19
20
|
AppConfig.packageInfo = 'A Project Management Software'
|
20
|
-
AppConfig.copyright = [ (2006..
|
21
|
-
AppConfig.authors = [ 'Chris Schlaeger <
|
21
|
+
AppConfig.copyright = [ (2006..2011).to_a ]
|
22
|
+
AppConfig.authors = [ 'Chris Schlaeger <chris@linux.com>' ]
|
22
23
|
AppConfig.contact = 'http://www.taskjuggler.org'
|
23
24
|
AppConfig.license = <<'EOT'
|
24
25
|
This program is free software; you can redistribute it and/or modify it under
|
data/lib/Tj3SheetAppBase.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = Tj3SheetAppBase.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TjException.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TjException.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TjTime.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TjTime.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TjpExample.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TjpExample.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
data/lib/TjpSyntaxRules.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = TjpSyntaxRules.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
@@ -129,8 +130,12 @@ EOT
|
|
129
130
|
pattern(%w( _allocate !allocations ), lambda {
|
130
131
|
checkContainer('allocate')
|
131
132
|
# Don't use << operator here so the 'provided' flag gets set properly.
|
132
|
-
|
133
|
-
@property['allocate', @scenarioIdx]
|
133
|
+
begin
|
134
|
+
@property['allocate', @scenarioIdx] =
|
135
|
+
@property['allocate', @scenarioIdx] + @val[1]
|
136
|
+
rescue AttributeOverwrite
|
137
|
+
# Adding multiple allocates for a task is a pretty common idiom.
|
138
|
+
end
|
134
139
|
})
|
135
140
|
doc('allocate', <<'EOT'
|
136
141
|
Specify which resources should be allocated to the task. The
|
@@ -617,6 +622,27 @@ Specifies the horizontal alignment of the cell content. The logical expression
|
|
617
622
|
specifies for which cells the alignment setting should be used. If multiple
|
618
623
|
halign patterns are provided for a column, the first matching one is used for
|
619
624
|
each cell.
|
625
|
+
EOT
|
626
|
+
)
|
627
|
+
|
628
|
+
pattern(%w( _listmode $INTEGER ), lambda {
|
629
|
+
@column.listMode = @val[1]
|
630
|
+
})
|
631
|
+
also(%w( listtype.column ))
|
632
|
+
doc('listmode.column', <<'EOT'
|
633
|
+
Specifies how the list items look like. The result of this setting depends on
|
634
|
+
the actual column. Please refer to the [columnid|documentation for the
|
635
|
+
specific column] to learn more about the effect that this setting has.
|
636
|
+
EOT
|
637
|
+
)
|
638
|
+
|
639
|
+
pattern(%w( _listtype !listType ), lambda {
|
640
|
+
@column.listType = @val[1]
|
641
|
+
})
|
642
|
+
also(%w( listmode.column ))
|
643
|
+
doc('listtype.column', <<'EOT'
|
644
|
+
Specifies what type of list should be used. This attribute only affects
|
645
|
+
columns that contain a list of items.
|
620
646
|
EOT
|
621
647
|
)
|
622
648
|
|
@@ -1035,7 +1061,11 @@ EOT
|
|
1035
1061
|
|
1036
1062
|
def rule_fail
|
1037
1063
|
pattern(%w( _fail !logicalExpression ), lambda {
|
1038
|
-
|
1064
|
+
begin
|
1065
|
+
@property['fail', @scenarioIdx] =
|
1066
|
+
@property['fail', @scenarioIdx] + [ @val[1] ]
|
1067
|
+
rescue AttributeOverwrite
|
1068
|
+
end
|
1039
1069
|
})
|
1040
1070
|
doc('fail', <<'EOT'
|
1041
1071
|
The fail attribute adds a logical expression to the property. The condition
|
@@ -1326,7 +1356,9 @@ EOT
|
|
1326
1356
|
"You must declare the project header before you include other " +
|
1327
1357
|
"files.")
|
1328
1358
|
end
|
1329
|
-
@project.inputFiles << @scanner.include(@val[0], @sourceFileInfo[0])
|
1359
|
+
@project.inputFiles << @scanner.include(@val[0], @sourceFileInfo[0]) do
|
1360
|
+
popFileStack
|
1361
|
+
end
|
1330
1362
|
})
|
1331
1363
|
end
|
1332
1364
|
|
@@ -1350,8 +1382,9 @@ EOT
|
|
1350
1382
|
|
1351
1383
|
def rule_includeProperties
|
1352
1384
|
pattern(%w( !includeFileName !includeAttributes ), lambda {
|
1353
|
-
|
1354
|
-
|
1385
|
+
@project.inputFiles << @scanner.include(@val[0], @sourceFileInfo[0]) do
|
1386
|
+
popFileStack
|
1387
|
+
end
|
1355
1388
|
})
|
1356
1389
|
end
|
1357
1390
|
|
@@ -1716,6 +1749,17 @@ EOT
|
|
1716
1749
|
})
|
1717
1750
|
end
|
1718
1751
|
|
1752
|
+
def rule_listType
|
1753
|
+
pattern([ '_bullets' ], lambda { :bullets })
|
1754
|
+
descr('List items as bullet list')
|
1755
|
+
|
1756
|
+
pattern([ '_comma' ], lambda { :comma })
|
1757
|
+
descr('List items as comma separated list')
|
1758
|
+
|
1759
|
+
pattern([ '_numbered' ], lambda { :numbered })
|
1760
|
+
descr('List items as numbered list')
|
1761
|
+
end
|
1762
|
+
|
1719
1763
|
def rule_loadunit
|
1720
1764
|
pattern([ '_days' ], lambda { :days })
|
1721
1765
|
descr('Display all load and duration values as days.')
|
@@ -1935,6 +1979,16 @@ EOT
|
|
1935
1979
|
pattern(%w( !reportPeriod ))
|
1936
1980
|
pattern(%w( !reportStart ))
|
1937
1981
|
pattern(%w( !reportTitle ))
|
1982
|
+
pattern(%w( _timeoff $STRING $STRING ), lambda {
|
1983
|
+
@property.set('timeOffId', @val[1])
|
1984
|
+
@property.set('timeOffName', @val[2])
|
1985
|
+
})
|
1986
|
+
doc('timeoff.nikureport', <<EOF
|
1987
|
+
Set the Clarity project ID and name that the vacation time will be reported to.
|
1988
|
+
EOF
|
1989
|
+
)
|
1990
|
+
arg(1, 'ID', 'The Clarity project ID')
|
1991
|
+
arg(2, 'Name', 'The Clarity project name')
|
1938
1992
|
end
|
1939
1993
|
|
1940
1994
|
def rule_nikuReportBody
|
@@ -2063,6 +2117,9 @@ EOT
|
|
2063
2117
|
pattern(%w( $INTEGER ), lambda {
|
2064
2118
|
LogicalOperation.new(@val[0])
|
2065
2119
|
})
|
2120
|
+
pattern(%w( $FLOAT ), lambda {
|
2121
|
+
LogicalOperation.new(@val[0])
|
2122
|
+
})
|
2066
2123
|
pattern(%w( $STRING ), lambda {
|
2067
2124
|
LogicalOperation.new(@val[0])
|
2068
2125
|
})
|
@@ -2469,9 +2526,7 @@ EOT
|
|
2469
2526
|
end
|
2470
2527
|
|
2471
2528
|
def rule_projectBodyInclude
|
2472
|
-
pattern(%w( _include !includeFile !projectBodyAttributes . )
|
2473
|
-
popFileStack
|
2474
|
-
})
|
2529
|
+
pattern(%w( _include !includeFile !projectBodyAttributes . ))
|
2475
2530
|
lastSyntaxToken(1)
|
2476
2531
|
doc('include.project', <<'EOT'
|
2477
2532
|
Includes the specified file name as if its contents would be written
|
@@ -2489,9 +2544,7 @@ EOT
|
|
2489
2544
|
end
|
2490
2545
|
|
2491
2546
|
def rule_prologInclude
|
2492
|
-
pattern(%w( _include !includeFile !projectProlog . )
|
2493
|
-
popFileStack
|
2494
|
-
})
|
2547
|
+
pattern(%w( _include !includeFile !projectProlog . ))
|
2495
2548
|
lastSyntaxToken(1)
|
2496
2549
|
doc('include.macro', <<'EOT'
|
2497
2550
|
Includes the specified file name as if its contents would be written
|
@@ -2607,16 +2660,20 @@ task or resource is split over several files. E. g. the vacation dates for the
|
|
2607
2660
|
resources may be in a separate file that was generated by some other tool.
|
2608
2661
|
EOT
|
2609
2662
|
)
|
2663
|
+
example('Supplement')
|
2610
2664
|
|
2611
2665
|
pattern(%w( !task ))
|
2612
2666
|
pattern(%w( !timeSheet ))
|
2613
2667
|
pattern(%w( !timeSheetReport ))
|
2614
2668
|
pattern(%w( _vacation !vacationName !intervals ), lambda {
|
2615
|
-
|
2669
|
+
begin
|
2670
|
+
@project['vacations'] = @project['vacations'] + @val[2]
|
2671
|
+
rescue AttributeOverwrite
|
2672
|
+
end
|
2616
2673
|
})
|
2617
2674
|
doc('vacation', <<'EOT'
|
2618
2675
|
Specify a global vacation period for all subsequently defined resources. A
|
2619
|
-
vacation can also be used to block out the time before a resource
|
2676
|
+
vacation can also be used to block out the time before a resource joined or
|
2620
2677
|
after it left. For employees changing their work schedule from full-time to
|
2621
2678
|
part-time, or vice versa, please refer to the 'Shift' property.
|
2622
2679
|
EOT
|
@@ -2674,11 +2731,7 @@ EOT
|
|
2674
2731
|
"#{@val[1]} is not a list attribute. Only those can be purged.",
|
2675
2732
|
@sourceFileInfo[1])
|
2676
2733
|
end
|
2677
|
-
|
2678
|
-
@property[@val[1], @scenarioIdx] = attributeDefinition.default.dup
|
2679
|
-
else
|
2680
|
-
@property.set(@val[1], attributeDefinition.default.dup)
|
2681
|
-
end
|
2734
|
+
@property.getAttr(@val[1], @scenarioIdx).reset
|
2682
2735
|
})
|
2683
2736
|
doc('purge', <<'EOT'
|
2684
2737
|
List attributes, like regular attributes, can inherit their values from the
|
@@ -2810,7 +2863,18 @@ EOT
|
|
2810
2863
|
descr('A group of columns with one column for each day')
|
2811
2864
|
|
2812
2865
|
singlePattern('_directreports')
|
2813
|
-
descr('
|
2866
|
+
descr(<<'EOT'
|
2867
|
+
The resources that have this resource assigned as manager.
|
2868
|
+
|
2869
|
+
The list can be customized by the [listmode.column listmode] attribute. The
|
2870
|
+
following modes are supported:
|
2871
|
+
|
2872
|
+
# ID
|
2873
|
+
# Name ''(This is the default)''
|
2874
|
+
# Name (ID)
|
2875
|
+
# ID: Name
|
2876
|
+
EOT
|
2877
|
+
)
|
2814
2878
|
|
2815
2879
|
singlePattern('_duration')
|
2816
2880
|
descr('The duration of a task')
|
@@ -2843,12 +2907,28 @@ EOT
|
|
2843
2907
|
descr(<<'EOT'
|
2844
2908
|
A list of tasks that depend on the current task. The list contains the names,
|
2845
2909
|
the IDs, the date and the type of dependency. For the type the following
|
2846
|
-
symbols are used
|
2910
|
+
symbols are used for <nowiki><dep></nowiki>.
|
2847
2911
|
|
2848
2912
|
* '''<nowiki>]->[</nowiki>''': End-to-Start dependency
|
2849
2913
|
* '''<nowiki>[->[</nowiki>''': Start-to-Start dependency
|
2850
2914
|
* '''<nowiki>]->]</nowiki>''': End-to-End dependency
|
2851
2915
|
* '''<nowiki>[->]</nowiki>''': Start-to-End dependency
|
2916
|
+
|
2917
|
+
The list can be customized by the [listmode.column listmode] attribute. The
|
2918
|
+
following modes are supported:
|
2919
|
+
|
2920
|
+
# ID <nowiki><dep></nowiki> Date
|
2921
|
+
# Name <nowiki><dep></nowiki> Date
|
2922
|
+
# Name (ID) <nowiki><dep></nowiki> Date
|
2923
|
+
# ID: Name <nowiki><dep></nowiki> Date
|
2924
|
+
# ID <nowiki><dep></nowiki>
|
2925
|
+
# Name <nowiki><dep></nowiki>
|
2926
|
+
# Name (ID) <nowiki><dep></nowiki>
|
2927
|
+
# ID: Name <nowiki><dep></nowiki>
|
2928
|
+
# ID
|
2929
|
+
# Name
|
2930
|
+
# Name (ID)
|
2931
|
+
# ID: Name
|
2852
2932
|
EOT
|
2853
2933
|
)
|
2854
2934
|
|
@@ -2916,6 +2996,20 @@ EOT
|
|
2916
2996
|
singlePattern('_line')
|
2917
2997
|
descr('The line number in the report')
|
2918
2998
|
|
2999
|
+
singlePattern('_managers')
|
3000
|
+
descr(<<'EOT'
|
3001
|
+
A list of managers that the resource reports to.
|
3002
|
+
|
3003
|
+
The list can be customized by the [listmode.column listmode] attribute. The
|
3004
|
+
following modes are supported:
|
3005
|
+
|
3006
|
+
# ID
|
3007
|
+
# Name ''(This is the default)''
|
3008
|
+
# Name (ID)
|
3009
|
+
# ID: Name
|
3010
|
+
EOT
|
3011
|
+
)
|
3012
|
+
|
2919
3013
|
singlePattern('_maxend')
|
2920
3014
|
descr('The latest allowed end of a task')
|
2921
3015
|
|
@@ -2945,7 +3039,7 @@ EOT
|
|
2945
3039
|
'it is a part of.')
|
2946
3040
|
|
2947
3041
|
singlePattern('_precursors')
|
2948
|
-
descr(<<EOT
|
3042
|
+
descr(<<'EOT'
|
2949
3043
|
A list of tasks the current task depends on. The list contains the names, the
|
2950
3044
|
IDs, the date and the type of dependency. For the type the following symbols
|
2951
3045
|
are used
|
@@ -2954,6 +3048,22 @@ are used
|
|
2954
3048
|
* '''<nowiki>[->[</nowiki>''': Start-to-Start dependency
|
2955
3049
|
* '''<nowiki>]->]</nowiki>''': End-to-End dependency
|
2956
3050
|
* '''<nowiki>[->]</nowiki>''': Start-to-End dependency
|
3051
|
+
|
3052
|
+
The list can be customized by the [listmode.column listmode] attribute. The
|
3053
|
+
following modes are supported:
|
3054
|
+
|
3055
|
+
# ID <nowiki><dep></nowiki> Date
|
3056
|
+
# Name <nowiki><dep></nowiki> Date
|
3057
|
+
# Name (ID) <nowiki><dep></nowiki> Date
|
3058
|
+
# ID: Name <nowiki><dep></nowiki> Date
|
3059
|
+
# ID <nowiki><dep></nowiki>
|
3060
|
+
# Name <nowiki><dep></nowiki>
|
3061
|
+
# Name (ID) <nowiki><dep></nowiki>
|
3062
|
+
# ID: Name <nowiki><dep></nowiki>
|
3063
|
+
# ID
|
3064
|
+
# Name
|
3065
|
+
# Name (ID)
|
3066
|
+
# ID: Name
|
2957
3067
|
EOT
|
2958
3068
|
)
|
2959
3069
|
|
@@ -2969,15 +3079,44 @@ EOT
|
|
2969
3079
|
singlePattern('_reports')
|
2970
3080
|
descr(<<'EOT'
|
2971
3081
|
All resources that have this resource assigned as a direct or indirect manager.
|
3082
|
+
|
3083
|
+
The list can be customized by the [listmode.column listmode] attribute. The
|
3084
|
+
following modes are supported:
|
3085
|
+
|
3086
|
+
# ID
|
3087
|
+
# Name ''(This is the default)''
|
3088
|
+
# Name (ID)
|
3089
|
+
# ID: Name
|
2972
3090
|
EOT
|
2973
3091
|
)
|
2974
3092
|
|
2975
3093
|
singlePattern('_resources')
|
2976
|
-
descr('
|
2977
|
-
|
3094
|
+
descr(<<'EOT'
|
3095
|
+
A list of resources that are assigned to the task in the report time frame.
|
3096
|
+
|
3097
|
+
The list can be customized by the [listmode.column listmode] attribute. The
|
3098
|
+
following modes are supported:
|
3099
|
+
|
3100
|
+
# ID
|
3101
|
+
# Name ''(This is the default)''
|
3102
|
+
# Name (ID)
|
3103
|
+
# ID: Name
|
3104
|
+
EOT
|
3105
|
+
)
|
2978
3106
|
|
2979
3107
|
singlePattern('_responsible')
|
2980
|
-
descr('
|
3108
|
+
descr(<<'EOT'
|
3109
|
+
The responsible people for this task.
|
3110
|
+
|
3111
|
+
The list can be customized by the [listmode.column listmode] attribute. The
|
3112
|
+
following modes are supported:
|
3113
|
+
|
3114
|
+
# ID
|
3115
|
+
# Name ''(This is the default)''
|
3116
|
+
# Name (ID)
|
3117
|
+
# ID: Name
|
3118
|
+
EOT
|
3119
|
+
)
|
2981
3120
|
|
2982
3121
|
singlePattern('_revenue')
|
2983
3122
|
descr(<<'EOT'
|
@@ -3005,8 +3144,19 @@ EOT
|
|
3005
3144
|
singlePattern('_targets')
|
3006
3145
|
descr(<<'EOT'
|
3007
3146
|
A list of milestones that depend on the current task. For container tasks it
|
3008
|
-
will also include the targets of the child tasks.
|
3009
|
-
|
3147
|
+
will also include the targets of the child tasks.
|
3148
|
+
|
3149
|
+
The list can be customized by the [listmode.column listmode] attribute. The
|
3150
|
+
following modes are supported:
|
3151
|
+
|
3152
|
+
# ID
|
3153
|
+
# Name
|
3154
|
+
# Name (ID)
|
3155
|
+
# ID: Name
|
3156
|
+
# ID (Date)
|
3157
|
+
# Name (Date) ''(This is the default)''
|
3158
|
+
# Name (ID) Date
|
3159
|
+
# ID: Name Date
|
3010
3160
|
EOT
|
3011
3161
|
)
|
3012
3162
|
|
@@ -3486,6 +3636,7 @@ resource is split over several files. E. g. the vacation dates for the
|
|
3486
3636
|
resources may be in a separate file that was generated by some other tool.
|
3487
3637
|
EOT
|
3488
3638
|
)
|
3639
|
+
example('Supplement', 'resource')
|
3489
3640
|
|
3490
3641
|
# Other attributes will be added automatically.
|
3491
3642
|
end
|
@@ -3583,9 +3734,9 @@ EOT
|
|
3583
3734
|
doc('booking', <<'EOT'
|
3584
3735
|
The booking attribute can be used to report completed work. This can be part
|
3585
3736
|
of the necessary effort or the whole effort. When the scenario is scheduled in
|
3586
|
-
projection mode, TaskJuggler assumes that only the work reported with
|
3587
|
-
has been done up to now. It then schedules a plan for the still
|
3588
|
-
effort. All task with bookings must be scheduled in ''''asap'''' mode.
|
3737
|
+
[[projection]] mode, TaskJuggler assumes that only the work reported with
|
3738
|
+
bookings has been done up to now. It then schedules a plan for the still
|
3739
|
+
missing effort. All task with bookings must be scheduled in ''''asap'''' mode.
|
3589
3740
|
|
3590
3741
|
This attribute is also used within export reports to describe the details of a
|
3591
3742
|
scheduled project.
|
@@ -3594,7 +3745,7 @@ The sloppy attribute can be used when you want to skip non-working time or
|
|
3594
3745
|
other allocations automatically. If it's not given, all bookings must only
|
3595
3746
|
cover working time for the resource.
|
3596
3747
|
|
3597
|
-
The booking attributes is
|
3748
|
+
The booking attributes is designed to capture the exact amount of completed
|
3598
3749
|
work. This attribute is not really intended to specify completed effort by
|
3599
3750
|
hand. Usually, booking statements are generated by [[export]] reports. The
|
3600
3751
|
[[sloppy.booking|sloppy]] and [[overtime.booking|overtime]] attributes are
|
@@ -3613,6 +3764,7 @@ EOT
|
|
3613
3764
|
Set per-interval usage limits for the resource.
|
3614
3765
|
EOT
|
3615
3766
|
)
|
3767
|
+
example('Limits-1', '6')
|
3616
3768
|
|
3617
3769
|
pattern(%w( _managers !resourceList ), lambda {
|
3618
3770
|
@property['managers', @scenarioIdx] =
|
@@ -3659,12 +3811,15 @@ EOT
|
|
3659
3811
|
)
|
3660
3812
|
|
3661
3813
|
pattern(%w( _vacation !vacationName !intervals ), lambda {
|
3662
|
-
|
3663
|
-
@property['vacations', @scenarioIdx
|
3814
|
+
begin
|
3815
|
+
@property['vacations', @scenarioIdx] =
|
3816
|
+
@property['vacations', @scenarioIdx ] + @val[2]
|
3817
|
+
rescue AttributeOverwrite
|
3818
|
+
end
|
3664
3819
|
})
|
3665
3820
|
doc('vacation.resource', <<'EOT'
|
3666
3821
|
Specify a vacation period for the resource. It can also be used to block out
|
3667
|
-
the time before a resource
|
3822
|
+
the time before a resource joined or after it left. For employees changing
|
3668
3823
|
their work schedule from full-time to part-time, or vice versa, please refer
|
3669
3824
|
to the 'Shift' property.
|
3670
3825
|
EOT
|
@@ -3681,18 +3836,23 @@ EOT
|
|
3681
3836
|
@property = @property.parent
|
3682
3837
|
})
|
3683
3838
|
doc('scenario', <<'EOT'
|
3684
|
-
|
3685
|
-
|
3686
|
-
can
|
3687
|
-
|
3688
|
-
scenario
|
3689
|
-
|
3690
|
-
|
3691
|
-
|
3839
|
+
Defines a new project scenario. By default, the project has only one scenario
|
3840
|
+
called ''''plan''''. To do plan vs. actual comparisons or to do a
|
3841
|
+
what-if-analysis, you can define a set of scenarios. There can only be one
|
3842
|
+
top-level scenario. Additional scenarios are either derived from this
|
3843
|
+
top-level scenario or other scenarios.
|
3844
|
+
|
3845
|
+
Each nested scenario is a variation of the enclosing scenario. All scenarios
|
3846
|
+
share the same set of properties (task, resources, etc.) but the attributes
|
3847
|
+
that are listed as scenario specific may differ between the various
|
3848
|
+
scenarios. A nested scenario uses all attributes from the enclosing scenario
|
3849
|
+
unless the user has specified a different value for this attribute.
|
3692
3850
|
|
3693
|
-
By
|
3694
|
-
|
3695
|
-
|
3851
|
+
By default, the scheduler assigns resources to task beginning with the project
|
3852
|
+
start date. If the scenario is switched to projection mode, no assignments
|
3853
|
+
will be made prior to the current date or the date specified by [[now]]. In
|
3854
|
+
this case, TaskJuggler assumes, that all assignements prior to the
|
3855
|
+
current date have been provided by [[booking]] statements.
|
3696
3856
|
EOT
|
3697
3857
|
)
|
3698
3858
|
end
|
@@ -3834,10 +3994,8 @@ EOT
|
|
3834
3994
|
def rule_shiftAssignment
|
3835
3995
|
pattern(%w( !shiftId !intervalsOptional ), lambda {
|
3836
3996
|
# Make sure we have a ShiftAssignment for the property.
|
3837
|
-
|
3838
|
-
|
3839
|
-
@property['shifts', @scenarioIdx].project = @project
|
3840
|
-
end
|
3997
|
+
sa = @property['shifts', @scenarioIdx] || ShiftAssignments.new
|
3998
|
+
sa.project = @project
|
3841
3999
|
|
3842
4000
|
if @val[1].nil?
|
3843
4001
|
intervals = [ Interval.new(@project['start'], @project['end']) ]
|
@@ -3845,16 +4003,20 @@ EOT
|
|
3845
4003
|
intervals = @val[1]
|
3846
4004
|
end
|
3847
4005
|
intervals.each do |interval|
|
3848
|
-
if
|
3849
|
-
|
3850
|
-
interval))
|
4006
|
+
if !sa.addAssignment(ShiftAssignment.new(@val[0].scenario(@scenarioIdx),
|
4007
|
+
interval))
|
3851
4008
|
error('shift_assignment_overlap',
|
3852
4009
|
'Shifts may not overlap each other.',
|
3853
4010
|
@sourceFileInfo[0], @property)
|
3854
4011
|
end
|
3855
4012
|
end
|
3856
4013
|
# Set same value again to set the 'provided' state for the attribute.
|
3857
|
-
|
4014
|
+
begin
|
4015
|
+
@property['shifts', @scenarioIdx] = sa
|
4016
|
+
rescue AttributeOverwrite
|
4017
|
+
# Multiple shift assignments are a common idiom, so don't warn about
|
4018
|
+
# them.
|
4019
|
+
end
|
3858
4020
|
})
|
3859
4021
|
end
|
3860
4022
|
|
@@ -4351,6 +4513,7 @@ task is split over several files. E. g. the vacation dates for the
|
|
4351
4513
|
resources may be in a separate file that was generated by some other tool.
|
4352
4514
|
EOT
|
4353
4515
|
)
|
4516
|
+
example('Supplement', 'task')
|
4354
4517
|
|
4355
4518
|
pattern(%w( !task ))
|
4356
4519
|
pattern(%w( !taskScenarioAttributes ))
|
@@ -4635,7 +4798,10 @@ EOT
|
|
4635
4798
|
checkContainer('depends')
|
4636
4799
|
@property['depends', @scenarioIdx] =
|
4637
4800
|
@property['depends', @scenarioIdx] + @val[1]
|
4638
|
-
|
4801
|
+
begin
|
4802
|
+
@property['forward', @scenarioIdx] = true
|
4803
|
+
rescue AttributeOverwrite
|
4804
|
+
end
|
4639
4805
|
})
|
4640
4806
|
doc('depends', <<'EOT'
|
4641
4807
|
Specifies that the task cannot start before the specified tasks have been
|
@@ -4649,6 +4815,8 @@ EOT
|
|
4649
4815
|
pattern(%w( _duration !calendarDuration ), lambda {
|
4650
4816
|
checkContainer('duration')
|
4651
4817
|
@property['duration', @scenarioIdx] = @val[1]
|
4818
|
+
@property['effort', @scenarioIdx] = 0
|
4819
|
+
@property['length', @scenarioIdx] = 0
|
4652
4820
|
})
|
4653
4821
|
doc('duration', <<'EOT'
|
4654
4822
|
Specifies the time the task should last. This is calendar time, not working
|
@@ -4656,7 +4824,8 @@ time. 7d means one week. If resources are specified they are allocated when
|
|
4656
4824
|
available. Availability of resources has no impact on the duration of the
|
4657
4825
|
task. It will always be the specified duration.
|
4658
4826
|
|
4659
|
-
Tasks may not have subtasks if this attribute is used.
|
4827
|
+
Tasks may not have subtasks if this attribute is used. Setting this attribute
|
4828
|
+
will reset the [[effort]] and [[length]] attributes.
|
4660
4829
|
EOT
|
4661
4830
|
)
|
4662
4831
|
example('Durations')
|
@@ -4669,6 +4838,8 @@ EOT
|
|
4669
4838
|
@sourceFileInfo[1], @property)
|
4670
4839
|
end
|
4671
4840
|
@property['effort', @scenarioIdx] = @val[1]
|
4841
|
+
@property['duration', @scenarioIdx] = 0
|
4842
|
+
@property['length', @scenarioIdx] = 0
|
4672
4843
|
})
|
4673
4844
|
doc('effort', <<'EOT'
|
4674
4845
|
Specifies the effort needed to complete the task. An effort of 4d can be done
|
@@ -4681,7 +4852,8 @@ and resources. This is only true if the task can be partitioned without adding
|
|
4681
4852
|
any overhead. For more information about this read ''The Mythical Man-Month'' by
|
4682
4853
|
Frederick P. Brooks, Jr.
|
4683
4854
|
|
4684
|
-
Tasks may not have subtasks if this attribute is used.
|
4855
|
+
Tasks may not have subtasks if this attribute is used. Setting this attribute
|
4856
|
+
will reset the [[duration]] and [[length]] attributes.
|
4685
4857
|
EOT
|
4686
4858
|
)
|
4687
4859
|
example('Durations')
|
@@ -4689,7 +4861,10 @@ EOT
|
|
4689
4861
|
|
4690
4862
|
pattern(%w( _end !valDate ), lambda {
|
4691
4863
|
@property['end', @scenarioIdx] = @val[1]
|
4692
|
-
|
4864
|
+
begin
|
4865
|
+
@property['forward', @scenarioIdx] = false
|
4866
|
+
rescue AttributeOverwrite
|
4867
|
+
end
|
4693
4868
|
})
|
4694
4869
|
doc('end', <<'EOT'
|
4695
4870
|
The end date of the task. When specified for the top-level (default) scenario
|
@@ -4726,6 +4901,8 @@ EOT
|
|
4726
4901
|
pattern(%w( _length !workingDuration ), lambda {
|
4727
4902
|
checkContainer('length')
|
4728
4903
|
@property['length', @scenarioIdx] = @val[1]
|
4904
|
+
@property['duration', @scenarioIdx] = 0
|
4905
|
+
@property['effort', @scenarioIdx] = 0
|
4729
4906
|
})
|
4730
4907
|
doc('length', <<'EOT'
|
4731
4908
|
Specifies the time the task occupies the resources. This is working time, not
|
@@ -4737,7 +4914,8 @@ has no impact on the duration of the task. A day where none of the specified
|
|
4737
4914
|
resources is available is still considered a working day, if there is no
|
4738
4915
|
global vacation or global working time defined.
|
4739
4916
|
|
4740
|
-
Tasks may not have subtasks if this attribute is used.
|
4917
|
+
Tasks may not have subtasks if this attribute is used. Setting this attribute
|
4918
|
+
will reset the [[duration]] and [[effort]] attributes.
|
4741
4919
|
EOT
|
4742
4920
|
)
|
4743
4921
|
also(%w( duration effort ))
|
@@ -4750,6 +4928,7 @@ EOT
|
|
4750
4928
|
Set per-interval allocation limits for the task. This setting affects all allocations for this task.
|
4751
4929
|
EOT
|
4752
4930
|
)
|
4931
|
+
example('Limits-1', '2')
|
4753
4932
|
|
4754
4933
|
pattern(%w( _maxend !valDate ), lambda {
|
4755
4934
|
@property['maxend', @scenarioIdx] = @val[1]
|
@@ -4825,7 +5004,10 @@ EOT
|
|
4825
5004
|
checkContainer('precedes')
|
4826
5005
|
@property['precedes', @scenarioIdx] =
|
4827
5006
|
@property['precedes', @scenarioIdx] + @val[1]
|
4828
|
-
|
5007
|
+
begin
|
5008
|
+
@property['forward', @scenarioIdx] = false
|
5009
|
+
rescue AttributeOverwrite
|
5010
|
+
end
|
4829
5011
|
})
|
4830
5012
|
doc('precedes', <<'EOT'
|
4831
5013
|
Specifies that the tasks with the specified IDs cannot start before the task
|
@@ -4871,7 +5053,11 @@ EOT
|
|
4871
5053
|
error('unknown_projectid', "Unknown project ID #{@val[1]}",
|
4872
5054
|
@sourceFileInfo[1])
|
4873
5055
|
end
|
4874
|
-
|
5056
|
+
begin
|
5057
|
+
@property['projectid', @scenarioIdx] = @val[1]
|
5058
|
+
rescue AttributeOverwrite
|
5059
|
+
# This attribute always overwrites the implicitely provided ID.
|
5060
|
+
end
|
4875
5061
|
})
|
4876
5062
|
doc('projectid.task', <<'EOT'
|
4877
5063
|
In larger projects it may be desireable to work with different project IDs for
|
@@ -4912,9 +5098,15 @@ EOT
|
|
4912
5098
|
|
4913
5099
|
pattern(%w( _scheduling !schedulingDirection ), lambda {
|
4914
5100
|
if @val[1] == 'alap'
|
4915
|
-
|
5101
|
+
begin
|
5102
|
+
@property['forward', @scenarioIdx] = false
|
5103
|
+
rescue AttributeOverwrite
|
5104
|
+
end
|
4916
5105
|
elsif @val[1] == 'asap'
|
4917
|
-
|
5106
|
+
begin
|
5107
|
+
@property['forward', @scenarioIdx] = true
|
5108
|
+
rescue AttributeOverwrite
|
5109
|
+
end
|
4918
5110
|
end
|
4919
5111
|
})
|
4920
5112
|
doc('scheduling', <<'EOT'
|
@@ -4974,7 +5166,10 @@ EOT
|
|
4974
5166
|
|
4975
5167
|
pattern(%w( _start !valDate), lambda {
|
4976
5168
|
@property['start', @scenarioIdx] = @val[1]
|
4977
|
-
|
5169
|
+
begin
|
5170
|
+
@property['forward', @scenarioIdx] = true
|
5171
|
+
rescue AttributeOverwrite
|
5172
|
+
end
|
4978
5173
|
})
|
4979
5174
|
doc('start', <<'EOT'
|
4980
5175
|
The start date of the task. When specified for the top-level (default)
|
@@ -5603,7 +5798,11 @@ EOT
|
|
5603
5798
|
|
5604
5799
|
def rule_warn
|
5605
5800
|
pattern(%w( _warn !logicalExpression ), lambda {
|
5606
|
-
|
5801
|
+
begin
|
5802
|
+
@property['warn', @scenarioIdx] =
|
5803
|
+
@property['warn', @scenarioIdx] + [ @val[1] ]
|
5804
|
+
rescue AttributeOverwrite
|
5805
|
+
end
|
5607
5806
|
})
|
5608
5807
|
doc('warn', <<'EOT'
|
5609
5808
|
The warn attribute adds a logical expression to the property. The condition
|