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/Booking.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = Booking.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/Charge.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = Charge.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/ChargeSet.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = ChargeSet.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/DataCache.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = DataCache.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
|
|
@@ -110,6 +111,19 @@ class TaskJuggler
|
|
|
110
111
|
end
|
|
111
112
|
end
|
|
112
113
|
|
|
114
|
+
# If we have a value for the _key_, return the value. Otherwise call the
|
|
115
|
+
# block to compute the value, store it and return it.
|
|
116
|
+
def cached(key)
|
|
117
|
+
if @entries.has_key?(key)
|
|
118
|
+
e = @entries[key]
|
|
119
|
+
@hits += 1
|
|
120
|
+
e.value
|
|
121
|
+
else
|
|
122
|
+
@misses += 1
|
|
123
|
+
store(yield, key)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
113
127
|
def to_s
|
|
114
128
|
<<"EOT"
|
|
115
129
|
Entries: #{@entries.size} Stores: #{@stores}
|
data/lib/FileList.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = FileList.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/HTMLDocument.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = HTMLDocument.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/Interval.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = Interval.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/IntervalList.rb
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#!/usr/bin/env ruby -w
|
|
2
|
+
# encoding: UTF-8
|
|
3
|
+
#
|
|
4
|
+
# = IntervalList.rb -- The TaskJuggler III Project Management Software
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
|
8
|
+
#
|
|
9
|
+
# This program is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of version 2 of the GNU General Public License as
|
|
11
|
+
# published by the Free Software Foundation.
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
require 'Interval'
|
|
15
|
+
|
|
16
|
+
class TaskJuggler
|
|
17
|
+
|
|
18
|
+
# A list of Intervals. The intervals in the list must not overlap and must
|
|
19
|
+
# be in ascending order.
|
|
20
|
+
class IntervalList < Array
|
|
21
|
+
|
|
22
|
+
alias append <<
|
|
23
|
+
|
|
24
|
+
def &(list)
|
|
25
|
+
res = IntervalList.new
|
|
26
|
+
si = li = 0
|
|
27
|
+
while si < length && li < list.length do
|
|
28
|
+
if self[si].start < list[li].start
|
|
29
|
+
# The current Interval of self starts earlier than the current
|
|
30
|
+
# Interval of list.
|
|
31
|
+
if self[si].end <= list[li].start
|
|
32
|
+
# self[si] does not overlap with list[li]. Ignore it.
|
|
33
|
+
si += 1
|
|
34
|
+
elsif self[si].end < list[li].end
|
|
35
|
+
# self[si] does overlap with list[li] but list[li] goes further
|
|
36
|
+
res << Interval.new(list[li].start, self[si].end)
|
|
37
|
+
si += 1
|
|
38
|
+
else
|
|
39
|
+
# self[si] does overlap with list[li] but self[si] goes further
|
|
40
|
+
res << Interval.new(list[li].start, list[li].end)
|
|
41
|
+
li += 1
|
|
42
|
+
end
|
|
43
|
+
elsif list[li].start < self[si].start
|
|
44
|
+
# The current Interval of list starts earlier than the current
|
|
45
|
+
# Interval of self.
|
|
46
|
+
if list[li].end <= self[si].start
|
|
47
|
+
# list[li] does not overlap with self[si]. Ignore it.
|
|
48
|
+
li += 1
|
|
49
|
+
elsif list[li].end < self[si].end
|
|
50
|
+
# list[li] does overlap with self[si] but self[si] goes further
|
|
51
|
+
res << Interval.new(self[si].start, list[li].end)
|
|
52
|
+
li += 1
|
|
53
|
+
else
|
|
54
|
+
# list[li] does overlap with self[si] but list[li] goes further
|
|
55
|
+
res << Interval.new(self[si].start, self[si].end)
|
|
56
|
+
si += 1
|
|
57
|
+
end
|
|
58
|
+
else
|
|
59
|
+
# self[si].start and list[li].start are identical
|
|
60
|
+
if self[si].end == list[li].end
|
|
61
|
+
# self[si] and list[li] are identical. Add the Interval and
|
|
62
|
+
# increase both pointers.
|
|
63
|
+
res << self[si]
|
|
64
|
+
li += 1
|
|
65
|
+
si += 1
|
|
66
|
+
elsif self[si].end < list[li].end
|
|
67
|
+
# self[si] ends earlier.
|
|
68
|
+
res << self[si]
|
|
69
|
+
si += 1
|
|
70
|
+
else
|
|
71
|
+
# list[li] ends earlier.
|
|
72
|
+
res << list[li]
|
|
73
|
+
li += 1
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
res
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Append the Interval _iv_. If the start of _iv_ matches the end of the
|
|
82
|
+
# list list item, _iv_ is merged with the last item.
|
|
83
|
+
def <<(iv)
|
|
84
|
+
if last
|
|
85
|
+
if last.end > iv.start
|
|
86
|
+
raise "Intervals may not overlap and must be added in " +
|
|
87
|
+
"ascending order."
|
|
88
|
+
elsif last.end == iv.start
|
|
89
|
+
self[-1] = Interval.new(last.start, iv.end)
|
|
90
|
+
return self
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
append(iv)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
|
data/lib/Journal.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = Journal.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
|
|
@@ -54,7 +55,7 @@ class TaskJuggler
|
|
|
54
55
|
|
|
55
56
|
# Just for debugging
|
|
56
57
|
def to_s # :nodoc:
|
|
57
|
-
"Headline: #{@headline}\nProperty: #{@property.class}"
|
|
58
|
+
"Headline: #{@headline}\nProperty: #{@property.class}: #{@property.fullId}"
|
|
58
59
|
end
|
|
59
60
|
|
|
60
61
|
end
|
|
@@ -375,6 +376,11 @@ class TaskJuggler
|
|
|
375
376
|
pEntries.first.date >= latestDate)
|
|
376
377
|
return pEntries
|
|
377
378
|
end
|
|
379
|
+
# Remove all child entries that are older than the current parent
|
|
380
|
+
# entries (if we have parent entries).
|
|
381
|
+
unless pEntries.empty?
|
|
382
|
+
entries.delete_if { |e| e.date <= pEntries.first.date }
|
|
383
|
+
end
|
|
378
384
|
# Otherwise return the list provided by the childen.
|
|
379
385
|
entries
|
|
380
386
|
end
|
data/lib/KeywordArray.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = KeywordArray.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/KeywordDocumentation.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = KeywordDocumentation.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
|
|
@@ -350,25 +351,28 @@ class TaskJuggler
|
|
|
350
351
|
if @args.empty?
|
|
351
352
|
tr << XMLNamedText.new('none', 'td', 'class' => 'descr')
|
|
352
353
|
else
|
|
353
|
-
tr << (td = XMLElement.new('td'
|
|
354
|
-
td << (tab1 = XMLElement.new('table', '
|
|
354
|
+
tr << (td = XMLElement.new('td'))
|
|
355
|
+
td << (tab1 = XMLElement.new('table', 'class' => 'attrtable',
|
|
356
|
+
'style' => 'width:100%;'))
|
|
355
357
|
@args.each do |arg|
|
|
356
358
|
tab1 << (tr1 = XMLElement.new('tr'))
|
|
357
359
|
if arg.typeSpec.nil? || ('<' + arg.name + '>') == arg.typeSpec
|
|
358
|
-
tr1 << XMLNamedText.new("#{arg.name}", 'td', '
|
|
360
|
+
tr1 << XMLNamedText.new("#{arg.name}", 'td', 'class' => 'attrtag',
|
|
361
|
+
'width' => '30%')
|
|
359
362
|
else
|
|
360
363
|
typeSpec = arg.typeSpec
|
|
361
364
|
typeName = typeSpec[1..-2]
|
|
362
365
|
typeSpec[0] = '['
|
|
363
366
|
typeSpec[-1] = ']'
|
|
364
|
-
tr1 << (td = XMLElement.new('td', '
|
|
367
|
+
tr1 << (td = XMLElement.new('td', 'class' => 'attrtag',
|
|
368
|
+
'width' => '30%'))
|
|
365
369
|
td << XMLText.new("#{arg.name} [")
|
|
366
370
|
td << XMLNamedText.new(
|
|
367
371
|
typeName, 'a', 'href' =>
|
|
368
372
|
"The_TaskJuggler_Syntax.html\##{typeName}")
|
|
369
373
|
td << XMLText.new(']')
|
|
370
374
|
end
|
|
371
|
-
tr1 << (td = XMLElement.new('td',
|
|
375
|
+
tr1 << (td = XMLElement.new('td', 'class' => 'attrdescr',
|
|
372
376
|
'style' => 'margin-top:2px; margin-bottom:2px;'))
|
|
373
377
|
td << newRichText(arg.text ||
|
|
374
378
|
"See [[#{arg.name}]] for details.").to_html
|
data/lib/Limits.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = Limits.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/Log.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = Log.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
|
|
@@ -121,7 +122,7 @@ class TaskJuggler
|
|
|
121
122
|
|
|
122
123
|
maxlen = 60
|
|
123
124
|
text = text.ljust(maxlen)
|
|
124
|
-
text = text[0..maxlen] if text.length > maxlen
|
|
125
|
+
text = text[0..maxlen - 1] if text.length > maxlen
|
|
125
126
|
@@progressMeter = text
|
|
126
127
|
$stdout.print("#{@@progressMeter} ...\r")
|
|
127
128
|
end
|
data/lib/LogFile.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = LogFile.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/LogicalExpression.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = LogicalExpression.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/LogicalFunction.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = LogicalFunction.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/LogicalOperation.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = LogicalOperation.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/MacroTable.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = MacroTable.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/MessageHandler.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = MessageHandler.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/Project.rb
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = Project.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
|
|
@@ -59,6 +60,7 @@ class TaskJuggler
|
|
|
59
60
|
# constructor will set default values for all project attributes.
|
|
60
61
|
def initialize(id, name, version, messageHandler)
|
|
61
62
|
@messageHandler = messageHandler
|
|
63
|
+
AttributeBase.setMode(0)
|
|
62
64
|
@attributes = {
|
|
63
65
|
# This nested Array defines the supported alert levels. The lowest
|
|
64
66
|
# level comes first at index 0 and the level rises from there on.
|
|
@@ -178,8 +180,8 @@ class TaskJuggler
|
|
|
178
180
|
false, false, true, 0 ],
|
|
179
181
|
[ 'email', 'Email', StringAttribute,
|
|
180
182
|
false, false, false, nil ],
|
|
181
|
-
[ 'fail', 'Failure
|
|
182
|
-
false, false, true,
|
|
183
|
+
[ 'fail', 'Failure Conditions', LogicalExpressionListAttribute,
|
|
184
|
+
false, false, true, [] ],
|
|
183
185
|
[ 'flags', 'Flags', FlagListAttribute,
|
|
184
186
|
true, false, true, [] ],
|
|
185
187
|
[ 'fte', 'FTE', FloatAttribute,
|
|
@@ -204,8 +206,8 @@ class TaskJuggler
|
|
|
204
206
|
false, false, false, "" ],
|
|
205
207
|
[ 'vacations', 'Vacations', IntervalListAttribute,
|
|
206
208
|
true, true, true, [] ],
|
|
207
|
-
[ 'warn', 'Warning Condition',
|
|
208
|
-
false, false, true,
|
|
209
|
+
[ 'warn', 'Warning Condition', LogicalExpressionListAttribute,
|
|
210
|
+
false, false, true, [] ],
|
|
209
211
|
[ 'wbs', 'WBS', StringAttribute,
|
|
210
212
|
false, false, false, "" ],
|
|
211
213
|
[ 'workinghours', 'Working Hours', WorkingHoursAttribute,
|
|
@@ -243,8 +245,8 @@ class TaskJuggler
|
|
|
243
245
|
false, false, true, [] ],
|
|
244
246
|
[ 'endsuccs', 'End Succs.', TaskListAttribute,
|
|
245
247
|
false, false, true, [] ],
|
|
246
|
-
[ 'fail', 'Failure
|
|
247
|
-
false, false, true,
|
|
248
|
+
[ 'fail', 'Failure Conditions', LogicalExpressionListAttribute,
|
|
249
|
+
false, false, true, [] ],
|
|
248
250
|
[ 'flags', 'Flags', FlagListAttribute,
|
|
249
251
|
true, false, true, [] ],
|
|
250
252
|
[ 'forward', 'Scheduling', BooleanAttribute,
|
|
@@ -291,8 +293,8 @@ class TaskJuggler
|
|
|
291
293
|
false, false, true, "" ],
|
|
292
294
|
[ 'tree', 'Tree Index', StringAttribute,
|
|
293
295
|
false, false, false, "" ],
|
|
294
|
-
[ 'warn', 'Warning Condition',
|
|
295
|
-
false, false, true,
|
|
296
|
+
[ 'warn', 'Warning Condition', LogicalExpressionListAttribute,
|
|
297
|
+
false, false, true, [] ],
|
|
296
298
|
[ 'wbs', 'WBS', StringAttribute,
|
|
297
299
|
false, false, false, "" ]
|
|
298
300
|
]
|
|
@@ -303,7 +305,7 @@ class TaskJuggler
|
|
|
303
305
|
# ID Name Type
|
|
304
306
|
# Inh. Inh.Prj Scen. Default
|
|
305
307
|
[ 'caption', 'Caption', RichTextAttribute,
|
|
306
|
-
|
|
308
|
+
true, false, false, nil ],
|
|
307
309
|
[ 'center', 'Center', RichTextAttribute,
|
|
308
310
|
true, false, false, nil ],
|
|
309
311
|
[ 'columns', 'Columns', ColumnListAttribute,
|
|
@@ -317,7 +319,7 @@ class TaskJuggler
|
|
|
317
319
|
[ 'end', 'End', DateAttribute,
|
|
318
320
|
true, true, false, nil ],
|
|
319
321
|
[ 'epilog', 'Epilog', RichTextAttribute,
|
|
320
|
-
|
|
322
|
+
true, false, false, nil ],
|
|
321
323
|
[ 'flags', 'Flags', FlagListAttribute,
|
|
322
324
|
true, false, true, [] ],
|
|
323
325
|
[ 'footer', 'Footer', RichTextAttribute,
|
|
@@ -329,7 +331,7 @@ class TaskJuggler
|
|
|
329
331
|
[ 'header', 'Header', RichTextAttribute,
|
|
330
332
|
true, false, false, nil ],
|
|
331
333
|
[ 'headline', 'Headline', RichTextAttribute,
|
|
332
|
-
|
|
334
|
+
true, false, false, nil ],
|
|
333
335
|
[ 'hideResource', 'Hide Resource', LogicalExpressionAttribute,
|
|
334
336
|
true, false, false, nil ],
|
|
335
337
|
[ 'hideTask', 'Hide Task', LogicalExpressionAttribute,
|
|
@@ -349,7 +351,7 @@ class TaskJuggler
|
|
|
349
351
|
[ 'openNodes', 'Open Nodes', NodeListAttribute,
|
|
350
352
|
false, false, false, nil ],
|
|
351
353
|
[ 'prolog', 'Prolog', RichTextAttribute,
|
|
352
|
-
|
|
354
|
+
true, false, false, nil],
|
|
353
355
|
[ 'resourceAttributes', 'Resource Attributes', FormatListAttribute,
|
|
354
356
|
true, false, false, KeywordArray.new([ '*' ]) ],
|
|
355
357
|
[ 'resourceRoot', 'resource Root', PropertyAttribute,
|
|
@@ -380,10 +382,14 @@ class TaskJuggler
|
|
|
380
382
|
true, false, false, nil ],
|
|
381
383
|
[ 'timeFormat', 'Time Format', StringAttribute,
|
|
382
384
|
true, true, false, nil ],
|
|
385
|
+
[ 'timeOffId', 'Time Off ID', StringAttribute,
|
|
386
|
+
false, false, false, nil ],
|
|
387
|
+
[ 'timeOffName', 'Time Off Name', StringAttribute,
|
|
388
|
+
false, false, false, nil ],
|
|
383
389
|
[ 'timezone', 'Time Zone', StringAttribute,
|
|
384
390
|
true, true, false, nil ],
|
|
385
391
|
[ 'title', 'Title', StringAttribute,
|
|
386
|
-
|
|
392
|
+
true, false, false, nil ],
|
|
387
393
|
[ 'tree', 'Tree Index', StringAttribute,
|
|
388
394
|
false, false, false, "" ],
|
|
389
395
|
[ 'wbs', 'WBS', StringAttribute,
|
|
@@ -400,6 +406,11 @@ class TaskJuggler
|
|
|
400
406
|
|
|
401
407
|
@timeSheets = TimeSheets.new
|
|
402
408
|
|
|
409
|
+
# A scoreboard that reflects the global working hours and vacations.
|
|
410
|
+
@scoreboard = nil
|
|
411
|
+
# A scoreboard that reflects the global working hours but no vacations.
|
|
412
|
+
@scoreboardNoVacations = nil
|
|
413
|
+
|
|
403
414
|
# The ReportContext provides additional settings to the report that can
|
|
404
415
|
# complement or replace the report attributes. Reports can include other
|
|
405
416
|
# reports. During report generation, only one context is active, but the
|
|
@@ -582,8 +593,9 @@ class TaskJuggler
|
|
|
582
593
|
# filled with data. It schedules all scenario and stores the result in the
|
|
583
594
|
# data structures again.
|
|
584
595
|
def schedule
|
|
596
|
+
initScoreboards
|
|
597
|
+
|
|
585
598
|
[ @shifts, @resources, @tasks ].each do |p|
|
|
586
|
-
p.inheritAttributesFromScenario
|
|
587
599
|
# Set all index counters to their proper values.
|
|
588
600
|
p.index
|
|
589
601
|
end
|
|
@@ -679,7 +691,8 @@ class TaskJuggler
|
|
|
679
691
|
end
|
|
680
692
|
end
|
|
681
693
|
|
|
682
|
-
def generateReport(reportId, regExpMode,
|
|
694
|
+
def generateReport(reportId, regExpMode, formats = nil,
|
|
695
|
+
dynamicAttributes = nil)
|
|
683
696
|
reportList = regExpMode ? reportList = matchingReports(reportId) :
|
|
684
697
|
[ reportId ]
|
|
685
698
|
reportList.each do |id|
|
|
@@ -687,7 +700,7 @@ class TaskJuggler
|
|
|
687
700
|
error('unknown_report_id',
|
|
688
701
|
"Request to generate unknown report #{id}")
|
|
689
702
|
end
|
|
690
|
-
if report.get('formats').empty?
|
|
703
|
+
if formats.nil? && report.get('formats').empty?
|
|
691
704
|
@messageHandler.error('formats_empty',
|
|
692
705
|
"The report #{report.fullId} has no 'formats' attribute. " +
|
|
693
706
|
"No output data will be generated.")
|
|
@@ -700,15 +713,17 @@ class TaskJuggler
|
|
|
700
713
|
# first, then parse the dynamicAttributes String replacing the
|
|
701
714
|
# original values.
|
|
702
715
|
if dynamicAttributes
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
716
|
+
unless dynamicAttributes.empty?
|
|
717
|
+
context.attributeBackup = report.backupAttributes
|
|
718
|
+
parser = ProjectFileParser.new(@messageHandler)
|
|
719
|
+
parser.parseReportAttributes(report, dynamicAttributes)
|
|
720
|
+
end
|
|
706
721
|
report.set('interactive', true)
|
|
707
722
|
end
|
|
708
723
|
|
|
709
|
-
report.generate
|
|
724
|
+
report.generate(formats)
|
|
710
725
|
|
|
711
|
-
if dynamicAttributes
|
|
726
|
+
if dynamicAttributes && !dynamicAttributes.empty?
|
|
712
727
|
report.restoreAttributes(context.attributeBackup)
|
|
713
728
|
end
|
|
714
729
|
@reportContexts.pop
|
|
@@ -840,6 +855,24 @@ class TaskJuggler
|
|
|
840
855
|
((date - @attributes['start']) / @attributes['scheduleGranularity']).to_i
|
|
841
856
|
end
|
|
842
857
|
|
|
858
|
+
def collectTimeOffIntervals(iv, minDuration)
|
|
859
|
+
@scoreboard.collectIntervals(iv, minDuration) do |val|
|
|
860
|
+
val.is_a?(Fixnum) && (val & 0x3E) != 0
|
|
861
|
+
end
|
|
862
|
+
end
|
|
863
|
+
|
|
864
|
+
# Return the number of working days (ignoring global vacations) during the
|
|
865
|
+
# given _interval_.
|
|
866
|
+
def workingDays(interval)
|
|
867
|
+
startIdx = dateToIdx(interval.start, true)
|
|
868
|
+
endIdx = dateToIdx(interval.end, true)
|
|
869
|
+
slots = 0
|
|
870
|
+
startIdx.upto(endIdx) do |idx|
|
|
871
|
+
slots += 1 unless @scoreboardNoVacations[idx]
|
|
872
|
+
end
|
|
873
|
+
slotsToDays(slots)
|
|
874
|
+
end
|
|
875
|
+
|
|
843
876
|
# TaskJuggler keeps all times in UTC. All time values must be multiples of
|
|
844
877
|
# the used scheduling granularity. If the local time zone is not
|
|
845
878
|
# hour-aligned to UTC, the maximum allowed schedule granularity is
|
|
@@ -927,12 +960,12 @@ class TaskJuggler
|
|
|
927
960
|
# Check for dependency loops in the task graph.
|
|
928
961
|
tasks.each { |task| task.resetLoopFlags(scIdx) }
|
|
929
962
|
tasks.each do |task|
|
|
930
|
-
task.checkForLoops(scIdx, [], false, true) if task.parent.nil?
|
|
963
|
+
task.checkForLoops(scIdx, [], false, true, true) if task.parent.nil?
|
|
931
964
|
end
|
|
932
965
|
Log.progress(0.85)
|
|
933
966
|
tasks.each { |task| task.resetLoopFlags(scIdx) }
|
|
934
967
|
tasks.each do |task|
|
|
935
|
-
task.checkForLoops(scIdx, [], true, true) if task.parent.nil?
|
|
968
|
+
task.checkForLoops(scIdx, [], true, true, false) if task.parent.nil?
|
|
936
969
|
end
|
|
937
970
|
Log.progress(0.87)
|
|
938
971
|
|
|
@@ -1068,7 +1101,41 @@ class TaskJuggler
|
|
|
1068
1101
|
true
|
|
1069
1102
|
end
|
|
1070
1103
|
|
|
1071
|
-
|
|
1104
|
+
private
|
|
1105
|
+
|
|
1106
|
+
def initScoreboards
|
|
1107
|
+
# Create scoreboard and mark all slots as unavailable
|
|
1108
|
+
@scoreboard = Scoreboard.new(@attributes['start'], @attributes['end'],
|
|
1109
|
+
@attributes['scheduleGranularity'], 2)
|
|
1110
|
+
# And the same for another scoreboard.
|
|
1111
|
+
@scoreboardNoVacations =
|
|
1112
|
+
Scoreboard.new(@attributes['start'], @attributes['end'],
|
|
1113
|
+
@attributes['scheduleGranularity'], 2)
|
|
1114
|
+
|
|
1115
|
+
workinghours = @attributes['workinghours']
|
|
1116
|
+
|
|
1117
|
+
# Change all work time slots to nil (available) again.
|
|
1118
|
+
date = @scoreboard.idxToDate(0)
|
|
1119
|
+
delta = @attributes['scheduleGranularity']
|
|
1120
|
+
scoreboardSize.times do |i|
|
|
1121
|
+
if workinghours.onShift?(date)
|
|
1122
|
+
@scoreboard[i] = nil
|
|
1123
|
+
@scoreboardNoVacations[i] = nil
|
|
1124
|
+
end
|
|
1125
|
+
date += delta
|
|
1126
|
+
end
|
|
1127
|
+
|
|
1128
|
+
# Mark all global vacation slots as such
|
|
1129
|
+
@attributes['vacations'].each do |vacation|
|
|
1130
|
+
startIdx = @scoreboard.dateToIdx(vacation.start, true)
|
|
1131
|
+
endIdx = @scoreboard.dateToIdx(vacation.end, true)
|
|
1132
|
+
startIdx.upto(endIdx - 1) do |i|
|
|
1133
|
+
# If the slot is nil or set to 4 then don't set the time-off bit.
|
|
1134
|
+
sb = @scoreboard[i]
|
|
1135
|
+
@scoreboard[i] = ((sb.nil? || sb == 4) ? 0 : 2) | (1 << 2)
|
|
1136
|
+
end
|
|
1137
|
+
end
|
|
1138
|
+
end
|
|
1072
1139
|
|
|
1073
1140
|
def matchingReports(reportId)
|
|
1074
1141
|
list = []
|