taskjuggler 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +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
|