taskjuggler 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2086 -0
- data/benchmarks/666tasks.tjp +3183 -0
- data/benchmarks/booking.tjp +14 -10
- data/doc/AppConfig.html +95 -73
- data/doc/Arguments.html +22 -2
- data/doc/CHANGELOG.html +2587 -0
- data/doc/COPYING.html +21 -1
- data/doc/Object.html +161 -122
- data/doc/README.html +21 -1
- data/doc/RuntimeConfig.html +26 -6
- data/doc/String.html +38 -18
- data/doc/StringIO.html +579 -0
- data/doc/TaskJuggler.html +251 -143
- data/doc/TaskJuggler/Account.html +26 -6
- data/doc/TaskJuggler/AccountAttribute.html +28 -8
- data/doc/TaskJuggler/AccountScenario.html +24 -4
- data/doc/TaskJuggler/Allocation.html +30 -10
- data/doc/TaskJuggler/AllocationAttribute.html +28 -8
- data/doc/TaskJuggler/AttributeBase.html +46 -26
- data/doc/TaskJuggler/AttributeDefinition.html +22 -2
- data/doc/TaskJuggler/BatchProcessor.html +40 -20
- data/doc/TaskJuggler/Booking.html +26 -6
- data/doc/TaskJuggler/BookingListAttribute.html +28 -8
- data/doc/TaskJuggler/BooleanAttribute.html +28 -8
- data/doc/TaskJuggler/CSVFile.html +308 -146
- data/doc/TaskJuggler/CellSettingPattern.html +22 -2
- data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
- data/doc/TaskJuggler/Charge.html +26 -6
- data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
- data/doc/TaskJuggler/ChargeSet.html +33 -13
- data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
- data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
- data/doc/TaskJuggler/ColumnTable.html +24 -4
- data/doc/TaskJuggler/Daemon.html +26 -6
- data/doc/TaskJuggler/DateAttribute.html +26 -6
- data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
- data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
- data/doc/TaskJuggler/DurationAttribute.html +28 -8
- data/doc/TaskJuggler/FixnumAttribute.html +24 -4
- data/doc/TaskJuggler/FlagListAttribute.html +28 -8
- data/doc/TaskJuggler/FloatAttribute.html +26 -6
- data/doc/TaskJuggler/FormatListAttribute.html +24 -4
- data/doc/TaskJuggler/GanttChart.html +147 -126
- data/doc/TaskJuggler/GanttContainer.html +34 -14
- data/doc/TaskJuggler/GanttHeader.html +28 -8
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
- data/doc/TaskJuggler/GanttLine.html +38 -18
- data/doc/TaskJuggler/GanttLoadStack.html +26 -6
- data/doc/TaskJuggler/GanttMilestone.html +34 -14
- data/doc/TaskJuggler/GanttRouter.html +50 -30
- data/doc/TaskJuggler/GanttTaskBar.html +34 -14
- data/doc/TaskJuggler/HTMLDocument.html +26 -6
- data/doc/TaskJuggler/HTMLGraphics.html +30 -10
- data/doc/TaskJuggler/Interval.html +40 -22
- data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
- data/doc/TaskJuggler/JobInfo.html +24 -4
- data/doc/TaskJuggler/Journal.html +226 -147
- data/doc/TaskJuggler/JournalEntry.html +22 -2
- data/doc/TaskJuggler/JournalEntryList.html +129 -112
- data/doc/TaskJuggler/KeywordArray.html +26 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
- data/doc/TaskJuggler/Limits.html +152 -123
- data/doc/TaskJuggler/Limits/Limit.html +149 -70
- data/doc/TaskJuggler/LimitsAttribute.html +36 -51
- data/doc/TaskJuggler/ListAttributeBase.html +24 -4
- data/doc/TaskJuggler/Log.html +50 -32
- data/doc/TaskJuggler/LogFile.html +37 -17
- data/doc/TaskJuggler/LogicalAttribute.html +53 -33
- data/doc/TaskJuggler/LogicalExpression.html +26 -6
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
- data/doc/TaskJuggler/LogicalFlag.html +42 -22
- data/doc/TaskJuggler/LogicalFunction.html +204 -140
- data/doc/TaskJuggler/LogicalOperation.html +135 -111
- data/doc/TaskJuggler/Macro.html +22 -2
- data/doc/TaskJuggler/MacroParser.html +32 -12
- data/doc/TaskJuggler/MacroTable.html +32 -12
- data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
- data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
- data/doc/TaskJuggler/Message.html +24 -4
- data/doc/TaskJuggler/MessageHandler.html +24 -4
- data/doc/TaskJuggler/Navigator.html +104 -71
- data/doc/TaskJuggler/NavigatorElement.html +32 -12
- data/doc/TaskJuggler/NikuProject.html +22 -2
- data/doc/TaskJuggler/NikuReport.html +310 -228
- data/doc/TaskJuggler/NikuResource.html +22 -2
- data/doc/TaskJuggler/NodeListAttribute.html +615 -0
- data/doc/TaskJuggler/OnShiftCache.html +32 -12
- data/doc/TaskJuggler/ProcessIntercom.html +205 -78
- data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
- data/doc/TaskJuggler/Project.html +708 -660
- data/doc/TaskJuggler/ProjectBroker.html +506 -304
- data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
- data/doc/TaskJuggler/ProjectFileParser.html +429 -373
- data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
- data/doc/TaskJuggler/ProjectRecord.html +80 -60
- data/doc/TaskJuggler/ProjectServer.html +312 -237
- data/doc/TaskJuggler/ProjectServerIface.html +101 -43
- data/doc/TaskJuggler/PropertyAttribute.html +32 -12
- data/doc/TaskJuggler/PropertyList.html +166 -145
- data/doc/TaskJuggler/PropertySet.html +254 -224
- data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
- data/doc/TaskJuggler/Query.html +169 -148
- data/doc/TaskJuggler/RTFHandlers.html +622 -0
- data/doc/TaskJuggler/RTFNavigator.html +28 -8
- data/doc/TaskJuggler/RTFQuery.html +40 -20
- data/doc/TaskJuggler/RTFReport.html +62 -25
- data/doc/TaskJuggler/RTFReportLink.html +765 -0
- data/doc/TaskJuggler/RealFormat.html +26 -6
- data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
- data/doc/TaskJuggler/Report.html +402 -251
- data/doc/TaskJuggler/ReportBase.html +162 -137
- data/doc/TaskJuggler/ReportContext.html +112 -29
- data/doc/TaskJuggler/ReportServer.html +89 -64
- data/doc/TaskJuggler/ReportServerIface.html +75 -55
- data/doc/TaskJuggler/ReportServerRecord.html +54 -31
- data/doc/TaskJuggler/ReportServlet.html +980 -0
- data/doc/TaskJuggler/ReportTable.html +41 -21
- data/doc/TaskJuggler/ReportTableCell.html +214 -170
- data/doc/TaskJuggler/ReportTableColumn.html +30 -10
- data/doc/TaskJuggler/ReportTableLegend.html +36 -16
- data/doc/TaskJuggler/ReportTableLine.html +32 -12
- data/doc/TaskJuggler/Resource.html +99 -87
- data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
- data/doc/TaskJuggler/ResourceListRE.html +47 -26
- data/doc/TaskJuggler/ResourceScenario.html +403 -437
- data/doc/TaskJuggler/RichText.html +26 -6
- data/doc/TaskJuggler/RichTextAttribute.html +50 -30
- data/doc/TaskJuggler/RichTextDocument.html +37 -17
- data/doc/TaskJuggler/RichTextElement.html +475 -413
- data/doc/TaskJuggler/RichTextException.html +22 -2
- data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
- data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
- data/doc/TaskJuggler/RichTextImage.html +22 -2
- data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
- data/doc/TaskJuggler/RichTextParser.html +56 -34
- data/doc/TaskJuggler/RichTextScanner.html +82 -61
- data/doc/TaskJuggler/RichTextSnip.html +34 -14
- data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
- data/doc/TaskJuggler/Scenario.html +22 -2
- data/doc/TaskJuggler/ScenarioData.html +30 -46
- data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
- data/doc/TaskJuggler/Scoreboard.html +42 -22
- data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
- data/doc/TaskJuggler/SheetReceiver.html +333 -295
- data/doc/TaskJuggler/SheetSender.html +253 -230
- data/doc/TaskJuggler/Shift.html +26 -6
- data/doc/TaskJuggler/ShiftAssignment.html +89 -73
- data/doc/TaskJuggler/ShiftAssignments.html +226 -234
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
- data/doc/TaskJuggler/ShiftScenario.html +28 -8
- data/doc/TaskJuggler/SortListAttribute.html +34 -14
- data/doc/TaskJuggler/SourceFileInfo.html +24 -4
- data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
- data/doc/TaskJuggler/StatusSheetReport.html +168 -153
- data/doc/TaskJuggler/StatusSheetSender.html +24 -3
- data/doc/TaskJuggler/StringAttribute.html +38 -18
- data/doc/TaskJuggler/SymbolAttribute.html +32 -12
- data/doc/TaskJuggler/SyntaxReference.html +40 -20
- data/doc/TaskJuggler/TOCEntry.html +26 -6
- data/doc/TaskJuggler/TSResourceRecord.html +22 -2
- data/doc/TaskJuggler/TSTaskRecord.html +22 -2
- data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
- data/doc/TaskJuggler/TableOfContents.html +26 -6
- data/doc/TaskJuggler/TableReport.html +937 -904
- data/doc/TaskJuggler/Task.html +55 -36
- data/doc/TaskJuggler/TaskDependency.html +24 -4
- data/doc/TaskJuggler/TaskListAttribute.html +50 -30
- data/doc/TaskJuggler/TaskListRE.html +27 -7
- data/doc/TaskJuggler/TaskScenario.html +1273 -1153
- data/doc/TaskJuggler/TextFormatter.html +28 -8
- data/doc/TaskJuggler/TextParser.html +585 -338
- data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
- data/doc/TaskJuggler/TextParser/Rule.html +95 -73
- data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
- data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
- data/doc/TaskJuggler/TextReport.html +28 -8
- data/doc/TaskJuggler/TextScanner.html +400 -1404
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
- data/doc/TaskJuggler/TimeSheet.html +48 -28
- data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
- data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
- data/doc/TaskJuggler/TimeSheetReport.html +154 -133
- data/doc/TaskJuggler/TimeSheetSender.html +24 -3
- data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
- data/doc/TaskJuggler/TimeSheets.html +26 -6
- data/doc/TaskJuggler/Tj3AppBase.html +85 -58
- data/doc/TaskJuggler/Tj3Client.html +292 -238
- data/doc/TaskJuggler/Tj3Daemon.html +159 -74
- data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
- data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
- data/doc/TaskJuggler/Tj3SsSender.html +53 -26
- data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
- data/doc/TaskJuggler/Tj3TsSender.html +26 -6
- data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
- data/doc/TaskJuggler/TjException.html +22 -2
- data/doc/TaskJuggler/TjTime.html +216 -160
- data/doc/TaskJuggler/TjpExample.html +34 -14
- data/doc/TaskJuggler/TjpExportRE.html +403 -407
- data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
- data/doc/TaskJuggler/URLParameter.html +649 -0
- data/doc/TaskJuggler/UserManual.html +42 -22
- data/doc/TaskJuggler/WebServer.html +702 -0
- data/doc/TaskJuggler/WorkingHours.html +38 -18
- data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
- data/doc/TaskJuggler/XMLBlob.html +24 -4
- data/doc/TaskJuggler/XMLComment.html +24 -4
- data/doc/TaskJuggler/XMLDocument.html +30 -10
- data/doc/TaskJuggler/XMLElement.html +34 -14
- data/doc/TaskJuggler/XMLNamedText.html +22 -2
- data/doc/TaskJuggler/XMLText.html +24 -4
- data/doc/index.html +1841 -1666
- data/doc/lib/AccountScenario_rb.html +1 -1
- data/doc/lib/Account_rb.html +1 -1
- data/doc/lib/Allocation_rb.html +1 -1
- data/doc/lib/AppConfig_rb.html +2 -2
- data/doc/lib/AttributeBase_rb.html +1 -1
- data/doc/lib/AttributeDefinition_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +2 -2
- data/doc/lib/BatchProcessor_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/ChargeSet_rb.html +1 -1
- data/doc/lib/Charge_rb.html +1 -1
- data/doc/lib/HTMLDocument_rb.html +1 -1
- data/doc/lib/Interval_rb.html +1 -1
- data/doc/lib/Journal_rb.html +2 -2
- data/doc/lib/KeywordArray_rb.html +1 -1
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/Limits_rb.html +2 -2
- data/doc/lib/LogFile_rb.html +2 -2
- data/doc/lib/Log_rb.html +1 -1
- data/doc/lib/LogicalExpression_rb.html +1 -1
- data/doc/lib/LogicalFunction_rb.html +2 -2
- data/doc/lib/LogicalOperation_rb.html +2 -2
- data/doc/lib/MacroParser_rb.html +1 -1
- data/doc/lib/MacroTable_rb.html +1 -1
- data/doc/lib/MessageHandler_rb.html +1 -1
- data/doc/lib/Message_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +4 -8
- data/doc/lib/ProjectFileScanner_rb.html +67 -0
- data/doc/lib/Project_rb.html +2 -2
- data/doc/lib/PropertyList_rb.html +2 -2
- data/doc/lib/PropertySet_rb.html +2 -2
- data/doc/lib/PropertyTreeNode_rb.html +2 -2
- data/doc/lib/Query_rb.html +2 -2
- data/doc/lib/RTFHandlers_rb.html +73 -0
- data/doc/lib/RTFNavigator_rb.html +1 -1
- data/doc/lib/RTFQuery_rb.html +1 -1
- data/doc/lib/RTFReportLink_rb.html +71 -0
- data/doc/lib/RTFReport_rb.html +2 -2
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +2 -2
- data/doc/lib/Resource_rb.html +2 -2
- data/doc/lib/RichTextDocument_rb.html +1 -1
- data/doc/lib/RichTextElement_rb.html +2 -2
- data/doc/lib/RichTextFunctionExample_rb.html +1 -1
- data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +2 -2
- data/doc/lib/RichTextScanner_rb.html +2 -2
- data/doc/lib/RichTextSnip_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
- data/doc/lib/RichText_rb.html +1 -1
- data/doc/lib/RuntimeConfig_rb.html +1 -1
- data/doc/lib/ScenarioData_rb.html +2 -2
- data/doc/lib/Scenario_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/SheetHandlerBase_rb.html +1 -1
- data/doc/lib/SheetReceiver_rb.html +2 -2
- data/doc/lib/SheetSender_rb.html +4 -2
- data/doc/lib/ShiftAssignments_rb.html +4 -2
- data/doc/lib/ShiftScenario_rb.html +1 -1
- data/doc/lib/Shift_rb.html +1 -1
- data/doc/lib/SourceFileInfo_rb.html +1 -1
- data/doc/lib/StatusSheetReceiver_rb.html +2 -2
- data/doc/lib/StatusSheetSender_rb.html +2 -2
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TOCEntry_rb.html +1 -1
- data/doc/lib/TableColumnDefinition_rb.html +2 -2
- data/doc/lib/TableOfContents_rb.html +1 -1
- data/doc/lib/TaskDependency_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +2 -2
- data/doc/lib/TaskScenario_rb.html +2 -2
- data/doc/lib/Task_rb.html +2 -2
- data/doc/lib/TextFormatter_rb.html +1 -1
- data/doc/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/TextParser/Rule_rb.html +2 -2
- data/doc/lib/TextParser/StackElement_rb.html +2 -2
- data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/TextParser_rb.html +2 -2
- data/doc/lib/TextScanner_rb.html +6 -2
- data/doc/lib/TimeSheetReceiver_rb.html +2 -2
- data/doc/lib/TimeSheetSender_rb.html +2 -2
- data/doc/lib/TimeSheetSummary_rb.html +2 -2
- data/doc/lib/TimeSheets_rb.html +2 -2
- data/doc/lib/Tj3AppBase_rb.html +2 -2
- data/doc/lib/Tj3Config_rb.html +2 -2
- data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
- data/doc/lib/TjException_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +2 -2
- data/doc/lib/TjpExample_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +2 -2
- data/doc/lib/URLParameter_rb.html +67 -0
- data/doc/lib/UTF8String_rb.html +1 -1
- data/doc/lib/UserManual_rb.html +1 -1
- data/doc/lib/WorkingHours_rb.html +1 -1
- data/doc/lib/XMLDocument_rb.html +2 -2
- data/doc/lib/XMLElement_rb.html +1 -1
- data/doc/lib/daemon/Daemon_rb.html +1 -1
- data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
- data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
- data/doc/lib/daemon/ProjectServer_rb.html +2 -2
- data/doc/lib/daemon/ReportServer_rb.html +2 -2
- data/doc/lib/daemon/WebServer_rb.html +75 -0
- data/doc/lib/deep_copy_rb.html +2 -2
- data/doc/lib/reports/CSVFile_rb.html +2 -2
- data/doc/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/reports/GanttChart_rb.html +2 -2
- data/doc/lib/reports/GanttContainer_rb.html +1 -1
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/lib/reports/GanttHeader_rb.html +1 -1
- data/doc/lib/reports/GanttLine_rb.html +1 -1
- data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
- data/doc/lib/reports/GanttMilestone_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +1 -1
- data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
- data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
- data/doc/lib/reports/Navigator_rb.html +2 -2
- data/doc/lib/reports/NikuReport_rb.html +2 -2
- data/doc/lib/reports/ReportBase_rb.html +2 -2
- data/doc/lib/reports/ReportContext_rb.html +2 -2
- data/doc/lib/reports/ReportTableCell_rb.html +2 -2
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +2 -2
- data/doc/lib/reports/Report_rb.html +2 -2
- data/doc/lib/reports/ResourceListRE_rb.html +2 -2
- data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
- data/doc/lib/reports/TableReport_rb.html +2 -2
- data/doc/lib/reports/TaskListRE_rb.html +2 -2
- data/doc/lib/reports/TextReport_rb.html +1 -1
- data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
- data/doc/lib/reports/TjpExportRE_rb.html +2 -2
- data/doc/lib/ruby-signal-bug_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +2 -2
- data/doc/lib/tj3client_rb.html +2 -2
- data/doc/lib/tj3d_rb.html +2 -2
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +2 -2
- data/doc/lib/tj3ts_receiver_rb.html +2 -2
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/doc/rdoc.css +9 -4
- data/examples/tutorial.tjp +17 -15
- data/gem_spec.rb +3 -0
- data/lib/AppConfig.rb +3 -1
- data/lib/Attributes.rb +10 -8
- data/lib/Journal.rb +55 -20
- data/lib/Limits.rb +72 -46
- data/lib/LogFile.rb +3 -3
- data/lib/LogicalFunction.rb +19 -6
- data/lib/LogicalOperation.rb +5 -1
- data/lib/Project.rb +37 -9
- data/lib/ProjectFileParser.rb +25 -22
- data/lib/ProjectFileScanner.rb +365 -0
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +14 -4
- data/lib/PropertyTreeNode.rb +42 -29
- data/lib/Query.rb +3 -1
- data/lib/RTFHandlers.rb +35 -0
- data/lib/RTFReport.rb +23 -6
- data/lib/RTFReportLink.rb +72 -0
- data/lib/Resource.rb +8 -16
- data/lib/ResourceScenario.rb +1 -22
- data/lib/RichTextElement.rb +42 -0
- data/lib/RichTextParser.rb +6 -4
- data/lib/RichTextScanner.rb +5 -5
- data/lib/RichTextSyntaxRules.rb +48 -10
- data/lib/ScenarioData.rb +5 -3
- data/lib/SheetReceiver.rb +24 -6
- data/lib/SheetSender.rb +17 -13
- data/lib/ShiftAssignments.rb +56 -52
- data/lib/StatusSheetReceiver.rb +1 -0
- data/lib/StatusSheetSender.rb +1 -0
- data/lib/TableColumnDefinition.rb +4 -2
- data/lib/Task.rb +8 -9
- data/lib/TaskJuggler.rb +21 -11
- data/lib/TaskScenario.rb +61 -26
- data/lib/TextParser.rb +268 -106
- data/lib/TextParser/Rule.rb +4 -2
- data/lib/TextParser/StackElement.rb +6 -4
- data/lib/TextScanner.rb +283 -700
- data/lib/TimeSheetReceiver.rb +1 -0
- data/lib/TimeSheetSender.rb +1 -0
- data/lib/TimeSheetSummary.rb +51 -26
- data/lib/TimeSheets.rb +1 -1
- data/lib/Tj3AppBase.rb +8 -1
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +5 -0
- data/lib/TjpSyntaxRules.rb +360 -144
- data/lib/URLParameter.rb +30 -0
- data/lib/XMLDocument.rb +2 -2
- data/lib/daemon/ProcessIntercom.rb +50 -9
- data/lib/daemon/ProjectBroker.rb +63 -10
- data/lib/daemon/ProjectServer.rb +47 -16
- data/lib/daemon/ReportServer.rb +9 -4
- data/lib/daemon/WebServer.rb +204 -0
- data/lib/deep_copy.rb +4 -1
- data/lib/reports/CSVFile.rb +150 -66
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/Navigator.rb +18 -5
- data/lib/reports/NikuReport.rb +32 -2
- data/lib/reports/Report.rb +65 -37
- data/lib/reports/ReportBase.rb +14 -9
- data/lib/reports/ReportContext.rb +19 -4
- data/lib/reports/ReportTable.rb +2 -2
- data/lib/reports/ReportTableCell.rb +54 -30
- data/lib/reports/ResourceListRE.rb +4 -3
- data/lib/reports/StatusSheetReport.rb +8 -13
- data/lib/reports/TableReport.rb +47 -32
- data/lib/reports/TaskListRE.rb +3 -3
- data/lib/reports/TimeSheetReport.rb +14 -5
- data/lib/reports/TjpExportRE.rb +14 -19
- data/lib/taskjuggler3.rb +15 -0
- data/lib/tj3client.rb +9 -7
- data/lib/tj3d.rb +38 -10
- data/lib/tj3ss_sender.rb +7 -0
- data/lib/tj3ts_receiver.rb +1 -0
- data/manual/Day_To_Day_Juggling +1 -1
- data/manual/Rich_Text_Attributes +8 -0
- data/manual/TaskJuggler_2x_Migration +7 -0
- data/manual/The_TaskJuggler_Syntax +20 -6
- data/prj_cfg.rb +3 -2
- data/tasks/changelog.rake +36 -0
- data/tasks/csts.rake +2 -3
- data/tasks/gem.rake +10 -0
- data/tasks/missing.rake +0 -17
- data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
- data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
- data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
- data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
- data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
- data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
- data/test/TestSuite/StatusSheets/run +3 -2
- data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
- data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
- data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
- data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
- data/test/TestSuite/TimeSheets/run +5 -5
- data/test/test_CSVFile.rb +75 -0
- data/test/test_Limits.rb +63 -5
- data/test/test_ProjectFileScanner.rb +163 -0
- data/test/test_ReportGenerator.rb +81 -0
- data/test/test_RichText.rb +21 -3
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +4 -4
- data/test/test_Syntax.rb +1 -1
- data/test/test_URLParameter.rb +30 -0
- metadata +126 -32
- data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
- data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
- data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
- data/test/TestSuite/TimeSheets/receiver.log +0 -102
- data/test/TestSuite/TimeSheets/sender.log +0 -794
- data/test/TestSuite/TimeSheets/summary.log +0 -884
- data/test/TestSuite/TimeSheets/timesheets.log +0 -45
- data/test/TestSuite/TimeSheets/tj3d.log +0 -292
- data/test/test_TextScanner.rb +0 -95
@@ -69,9 +69,9 @@
|
|
69
69
|
<h3 class="section-header">Methods</h3>
|
70
70
|
<ul class="link-list">
|
71
71
|
|
72
|
-
<li><a href="#
|
72
|
+
<li><a href="#method-c-new">::new</a></li>
|
73
73
|
|
74
|
-
<li><a href="#
|
74
|
+
<li><a href="#method-i-generateIntermediateFormat">#generateIntermediateFormat</a></li>
|
75
75
|
|
76
76
|
</ul>
|
77
77
|
</div>
|
@@ -88,6 +88,8 @@
|
|
88
88
|
<h3 class="section-header">Files</h3>
|
89
89
|
<ul>
|
90
90
|
|
91
|
+
<li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
|
92
|
+
|
91
93
|
<li class="file"><a href="../COPYING.html">COPYING</a></li>
|
92
94
|
|
93
95
|
<li class="file"><a href="../README.html">README</a></li>
|
@@ -257,6 +259,8 @@
|
|
257
259
|
|
258
260
|
<li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
|
259
261
|
|
262
|
+
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
263
|
+
|
260
264
|
<li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
|
261
265
|
|
262
266
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
@@ -271,6 +275,8 @@
|
|
271
275
|
|
272
276
|
<li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
|
273
277
|
|
278
|
+
<li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
|
279
|
+
|
274
280
|
<li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
|
275
281
|
|
276
282
|
<li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
|
@@ -287,12 +293,16 @@
|
|
287
293
|
|
288
294
|
<li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
|
289
295
|
|
296
|
+
<li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
|
297
|
+
|
290
298
|
<li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
|
291
299
|
|
292
300
|
<li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
|
293
301
|
|
294
302
|
<li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
|
295
303
|
|
304
|
+
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
|
305
|
+
|
296
306
|
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
297
307
|
|
298
308
|
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
@@ -311,6 +321,8 @@
|
|
311
321
|
|
312
322
|
<li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
|
313
323
|
|
324
|
+
<li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
|
325
|
+
|
314
326
|
<li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
|
315
327
|
|
316
328
|
<li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
|
@@ -439,6 +451,8 @@
|
|
439
451
|
|
440
452
|
<li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
441
453
|
|
454
|
+
<li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
|
455
|
+
|
442
456
|
<li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
443
457
|
|
444
458
|
<li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
|
@@ -483,8 +497,12 @@
|
|
483
497
|
|
484
498
|
<li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
|
485
499
|
|
500
|
+
<li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
|
501
|
+
|
486
502
|
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
487
503
|
|
504
|
+
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
505
|
+
|
488
506
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
489
507
|
|
490
508
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
@@ -511,6 +529,8 @@
|
|
511
529
|
|
512
530
|
<li><a href="../String.html">String</a></li>
|
513
531
|
|
532
|
+
<li><a href="../StringIO.html">StringIO</a></li>
|
533
|
+
|
514
534
|
</ul>
|
515
535
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
516
536
|
</div>
|
@@ -544,7 +564,7 @@ have the allocated resources nested underneath each task line.
|
|
544
564
|
|
545
565
|
|
546
566
|
<div id="new-method" class="method-detail ">
|
547
|
-
<a name="
|
567
|
+
<a name="method-c-new"></a>
|
548
568
|
|
549
569
|
<div class="method-heading">
|
550
570
|
|
@@ -587,7 +607,7 @@ Create a new object and set some default values.
|
|
587
607
|
|
588
608
|
|
589
609
|
<div id="generate-ntermediate-ormat-method" class="method-detail ">
|
590
|
-
<a name="
|
610
|
+
<a name="method-i-generateIntermediateFormat"></a>
|
591
611
|
|
592
612
|
<div class="method-heading">
|
593
613
|
|
@@ -618,15 +638,15 @@ Generate the table in the intermediate format.
|
|
618
638
|
38: <span class="ruby-identifier">taskList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>)
|
619
639
|
39: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortTasks'</span>))
|
620
640
|
40: <span class="ruby-identifier">taskList</span> = <span class="ruby-identifier">filterTaskList</span>(<span class="ruby-identifier">taskList</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideTask'</span>),
|
621
|
-
41: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupTask'</span>))
|
622
|
-
42: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">query</span> = <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">project</span>.<span class="ruby-identifier">
|
641
|
+
41: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupTask'</span>), <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'openNodes'</span>))
|
642
|
+
42: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">query</span> = <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">project</span>.<span class="ruby-identifier">reportContexts</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">query</span>
|
623
643
|
43: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">sort!</span>
|
624
644
|
44:
|
625
645
|
45: <span class="ruby-comment cmt"># Prepare the resource list. Don't filter it yet! It would break the</span>
|
626
646
|
46: <span class="ruby-comment cmt"># *_() LogicalFunctions.</span>
|
627
647
|
47: <span class="ruby-identifier">resourceList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resources</span>)
|
628
648
|
48: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortResources'</span>))
|
629
|
-
49: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">query</span> = <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">project</span>.<span class="ruby-identifier">
|
649
|
+
49: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">query</span> = <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">project</span>.<span class="ruby-identifier">reportContexts</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">query</span>
|
630
650
|
50: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">sort!</span>
|
631
651
|
51:
|
632
652
|
52: <span class="ruby-identifier">adjustReportPeriod</span>(<span class="ruby-identifier">taskList</span>, <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'scenarios'</span>),
|
@@ -69,117 +69,121 @@
|
|
69
69
|
<h3 class="section-header">Methods</h3>
|
70
70
|
<ul class="link-list">
|
71
71
|
|
72
|
-
<li><a href="#
|
72
|
+
<li><a href="#method-c-new">::new</a></li>
|
73
73
|
|
74
|
-
<li><a href="#
|
74
|
+
<li><a href="#method-i-Xref">#Xref</a></li>
|
75
75
|
|
76
|
-
<li><a href="#
|
76
|
+
<li><a href="#method-i-addBooking">#addBooking</a></li>
|
77
77
|
|
78
|
-
<li><a href="#
|
78
|
+
<li><a href="#method-i-bookBookings">#bookBookings</a></li>
|
79
79
|
|
80
|
-
<li><a href="#
|
80
|
+
<li><a href="#method-i-bookResource">#bookResource</a></li>
|
81
81
|
|
82
|
-
<li><a href="#
|
82
|
+
<li><a href="#method-i-bookResources">#bookResources</a></li>
|
83
83
|
|
84
|
-
<li><a href="#
|
84
|
+
<li><a href="#method-i-calcCompletion">#calcCompletion</a></li>
|
85
85
|
|
86
|
-
<li><a href="#
|
86
|
+
<li><a href="#method-i-calcCriticalness">#calcCriticalness</a></li>
|
87
87
|
|
88
|
-
<li><a href="#
|
88
|
+
<li><a href="#method-i-calcPathCriticalness">#calcPathCriticalness</a></li>
|
89
89
|
|
90
|
-
<li><a href="#
|
90
|
+
<li><a href="#method-i-calcPathCriticalnessEndSuccs">#calcPathCriticalnessEndSuccs</a></li>
|
91
91
|
|
92
|
-
<li><a href="#
|
92
|
+
<li><a href="#method-i-calcStatus">#calcStatus</a></li>
|
93
93
|
|
94
|
-
<li><a href="#
|
94
|
+
<li><a href="#method-i-canInheritDate%3F">#canInheritDate?</a></li>
|
95
95
|
|
96
|
-
<li><a href="#
|
96
|
+
<li><a href="#method-i-candidates">#candidates</a></li>
|
97
97
|
|
98
|
-
<li><a href="#
|
98
|
+
<li><a href="#method-i-checkDependency">#checkDependency</a></li>
|
99
99
|
|
100
|
-
<li><a href="#
|
100
|
+
<li><a href="#method-i-checkForLoops">#checkForLoops</a></li>
|
101
101
|
|
102
|
-
<li><a href="#
|
102
|
+
<li><a href="#method-i-collectTimeOffIntervals">#collectTimeOffIntervals</a></li>
|
103
103
|
|
104
|
-
<li><a href="#
|
104
|
+
<li><a href="#method-i-countResourceAllocations">#countResourceAllocations</a></li>
|
105
105
|
|
106
|
-
<li><a href="#
|
106
|
+
<li><a href="#method-i-earliestStart">#earliestStart</a></li>
|
107
107
|
|
108
|
-
<li><a href="#
|
108
|
+
<li><a href="#method-i-finishScheduling">#finishScheduling</a></li>
|
109
109
|
|
110
|
-
<li><a href="#
|
110
|
+
<li><a href="#method-i-getAllocatedTime">#getAllocatedTime</a></li>
|
111
111
|
|
112
|
-
<li><a href="#
|
112
|
+
<li><a href="#method-i-getEffectiveWork">#getEffectiveWork</a></li>
|
113
113
|
|
114
|
-
<li><a href="#
|
114
|
+
<li><a href="#method-i-hasDependencies">#hasDependencies</a></li>
|
115
115
|
|
116
|
-
<li><a href="#
|
116
|
+
<li><a href="#method-i-hasDependency%3F">#hasDependency?</a></li>
|
117
117
|
|
118
|
-
<li><a href="#
|
118
|
+
<li><a href="#method-i-hasDurationSpec%3F">#hasDurationSpec?</a></li>
|
119
119
|
|
120
|
-
<li><a href="#
|
120
|
+
<li><a href="#method-i-hasResourceAllocated%3F">#hasResourceAllocated?</a></li>
|
121
121
|
|
122
|
-
<li><a href="#
|
122
|
+
<li><a href="#method-i-hasSuccessors">#hasSuccessors</a></li>
|
123
123
|
|
124
|
-
<li><a href="#
|
124
|
+
<li><a href="#method-i-isDependencyOf">#isDependencyOf</a></li>
|
125
125
|
|
126
|
-
<li><a href="#
|
126
|
+
<li><a href="#method-i-isFeatureOf">#isFeatureOf</a></li>
|
127
127
|
|
128
|
-
<li><a href="#
|
128
|
+
<li><a href="#method-i-latestEnd">#latestEnd</a></li>
|
129
129
|
|
130
|
-
<li><a href="#
|
130
|
+
<li><a href="#method-i-limitsOk%3F">#limitsOk?</a></li>
|
131
131
|
|
132
|
-
<li><a href="#
|
132
|
+
<li><a href="#method-i-markAsRunaway">#markAsRunaway</a></li>
|
133
133
|
|
134
|
-
<li><a href="#
|
134
|
+
<li><a href="#method-i-markMilestone">#markMilestone</a></li>
|
135
135
|
|
136
|
-
<li><a href="#
|
136
|
+
<li><a href="#method-i-nextSlot">#nextSlot</a></li>
|
137
137
|
|
138
|
-
<li><a href="#
|
138
|
+
<li><a href="#method-i-postScheduleCheck">#postScheduleCheck</a></li>
|
139
139
|
|
140
|
-
<li><a href="#
|
140
|
+
<li><a href="#method-i-preScheduleCheck">#preScheduleCheck</a></li>
|
141
141
|
|
142
|
-
<li><a href="#
|
142
|
+
<li><a href="#method-i-prepareScheduling">#prepareScheduling</a></li>
|
143
143
|
|
144
|
-
<li><a href="#
|
144
|
+
<li><a href="#method-i-propagateDate">#propagateDate</a></li>
|
145
145
|
|
146
|
-
<li><a href="#
|
146
|
+
<li><a href="#method-i-propagateDateToDep">#propagateDateToDep</a></li>
|
147
147
|
|
148
|
-
<li><a href="#
|
148
|
+
<li><a href="#method-i-propagateInitialValues">#propagateInitialValues</a></li>
|
149
149
|
|
150
|
-
<li><a href="#
|
150
|
+
<li><a href="#method-i-query_complete">#query_complete</a></li>
|
151
151
|
|
152
|
-
<li><a href="#
|
152
|
+
<li><a href="#method-i-query_cost">#query_cost</a></li>
|
153
153
|
|
154
|
-
<li><a href="#
|
154
|
+
<li><a href="#method-i-query_duration">#query_duration</a></li>
|
155
155
|
|
156
|
-
<li><a href="#
|
156
|
+
<li><a href="#method-i-query_effort">#query_effort</a></li>
|
157
157
|
|
158
|
-
<li><a href="#
|
158
|
+
<li><a href="#method-i-query_effortdone">#query_effortdone</a></li>
|
159
159
|
|
160
|
-
<li><a href="#
|
160
|
+
<li><a href="#method-i-query_effortleft">#query_effortleft</a></li>
|
161
161
|
|
162
|
-
<li><a href="#
|
162
|
+
<li><a href="#method-i-query_followers">#query_followers</a></li>
|
163
163
|
|
164
|
-
<li><a href="#
|
164
|
+
<li><a href="#method-i-query_precursors">#query_precursors</a></li>
|
165
165
|
|
166
|
-
<li><a href="#
|
166
|
+
<li><a href="#method-i-query_resources">#query_resources</a></li>
|
167
167
|
|
168
|
-
<li><a href="#
|
168
|
+
<li><a href="#method-i-query_revenue">#query_revenue</a></li>
|
169
169
|
|
170
|
-
<li><a href="#
|
170
|
+
<li><a href="#method-i-query_targets">#query_targets</a></li>
|
171
171
|
|
172
|
-
<li><a href="#
|
172
|
+
<li><a href="#method-i-readyForScheduling%3F">#readyForScheduling?</a></li>
|
173
173
|
|
174
|
-
<li><a href="#
|
174
|
+
<li><a href="#method-i-resetLoopFlags">#resetLoopFlags</a></li>
|
175
175
|
|
176
|
-
<li><a href="#
|
176
|
+
<li><a href="#method-i-schedule">#schedule</a></li>
|
177
177
|
|
178
|
-
<li><a href="#
|
178
|
+
<li><a href="#method-i-scheduleContainer">#scheduleContainer</a></li>
|
179
179
|
|
180
|
-
<li><a href="#
|
180
|
+
<li><a href="#method-i-scheduleSlot">#scheduleSlot</a></li>
|
181
181
|
|
182
|
-
<li><a href="#
|
182
|
+
<li><a href="#method-i-setDetermination">#setDetermination</a></li>
|
183
|
+
|
184
|
+
<li><a href="#method-i-targets">#targets</a></li>
|
185
|
+
|
186
|
+
<li><a href="#method-i-turnover">#turnover</a></li>
|
183
187
|
|
184
188
|
</ul>
|
185
189
|
</div>
|
@@ -196,6 +200,8 @@
|
|
196
200
|
<h3 class="section-header">Files</h3>
|
197
201
|
<ul>
|
198
202
|
|
203
|
+
<li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
|
204
|
+
|
199
205
|
<li class="file"><a href="../COPYING.html">COPYING</a></li>
|
200
206
|
|
201
207
|
<li class="file"><a href="../README.html">README</a></li>
|
@@ -365,6 +371,8 @@
|
|
365
371
|
|
366
372
|
<li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
|
367
373
|
|
374
|
+
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
375
|
+
|
368
376
|
<li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
|
369
377
|
|
370
378
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
@@ -379,6 +387,8 @@
|
|
379
387
|
|
380
388
|
<li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
|
381
389
|
|
390
|
+
<li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
|
391
|
+
|
382
392
|
<li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
|
383
393
|
|
384
394
|
<li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
|
@@ -395,12 +405,16 @@
|
|
395
405
|
|
396
406
|
<li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
|
397
407
|
|
408
|
+
<li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
|
409
|
+
|
398
410
|
<li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
|
399
411
|
|
400
412
|
<li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
|
401
413
|
|
402
414
|
<li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
|
403
415
|
|
416
|
+
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
|
417
|
+
|
404
418
|
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
405
419
|
|
406
420
|
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
@@ -419,6 +433,8 @@
|
|
419
433
|
|
420
434
|
<li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
|
421
435
|
|
436
|
+
<li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
|
437
|
+
|
422
438
|
<li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
|
423
439
|
|
424
440
|
<li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
|
@@ -547,6 +563,8 @@
|
|
547
563
|
|
548
564
|
<li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
549
565
|
|
566
|
+
<li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
|
567
|
+
|
550
568
|
<li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
551
569
|
|
552
570
|
<li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
|
@@ -591,8 +609,12 @@
|
|
591
609
|
|
592
610
|
<li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
|
593
611
|
|
612
|
+
<li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
|
613
|
+
|
594
614
|
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
595
615
|
|
616
|
+
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
617
|
+
|
596
618
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
597
619
|
|
598
620
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
@@ -619,6 +641,8 @@
|
|
619
641
|
|
620
642
|
<li><a href="../String.html">String</a></li>
|
621
643
|
|
644
|
+
<li><a href="../StringIO.html">StringIO</a></li>
|
645
|
+
|
622
646
|
</ul>
|
623
647
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
624
648
|
</div>
|
@@ -668,7 +692,7 @@
|
|
668
692
|
|
669
693
|
|
670
694
|
<div id="new-method" class="method-detail ">
|
671
|
-
<a name="
|
695
|
+
<a name="method-c-new"></a>
|
672
696
|
|
673
697
|
<div class="method-heading">
|
674
698
|
|
@@ -713,7 +737,7 @@ Create a new <a href="TaskScenario.html">TaskScenario</a> object.
|
|
713
737
|
|
714
738
|
|
715
739
|
<div id="-ref-method" class="method-detail ">
|
716
|
-
<a name="
|
740
|
+
<a name="method-i-Xref"></a>
|
717
741
|
|
718
742
|
<div class="method-heading">
|
719
743
|
|
@@ -769,7 +793,7 @@ the dependency originates from the end of the task or not.
|
|
769
793
|
|
770
794
|
|
771
795
|
<div id="add-ooking-method" class="method-detail ">
|
772
|
-
<a name="
|
796
|
+
<a name="method-i-addBooking"></a>
|
773
797
|
|
774
798
|
<div class="method-heading">
|
775
799
|
|
@@ -788,16 +812,16 @@ the dependency originates from the end of the task or not.
|
|
788
812
|
<div class="method-source-code"
|
789
813
|
id="add-ooking-source">
|
790
814
|
<pre>
|
791
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
815
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1090</span>
|
816
|
+
1090: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addBooking</span>(<span class="ruby-identifier">booking</span>)
|
817
|
+
1091: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'booking'</span>).<span class="ruby-identifier">empty?</span>
|
818
|
+
1092: <span class="ruby-comment cmt"># For the first item use the assignment form so that the 'provided'</span>
|
819
|
+
1093: <span class="ruby-comment cmt"># attribute is set properly.</span>
|
820
|
+
1094: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'booking'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = [ <span class="ruby-identifier">booking</span> ]
|
821
|
+
1095: <span class="ruby-keyword kw">else</span>
|
822
|
+
1096: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'booking'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">booking</span>
|
823
|
+
1097: <span class="ruby-keyword kw">end</span>
|
824
|
+
1098: <span class="ruby-keyword kw">end</span></pre>
|
801
825
|
</div>
|
802
826
|
|
803
827
|
</div>
|
@@ -809,7 +833,7 @@ the dependency originates from the end of the task or not.
|
|
809
833
|
|
810
834
|
|
811
835
|
<div id="calc-riticalness-method" class="method-detail ">
|
812
|
-
<a name="
|
836
|
+
<a name="method-i-calcCriticalness"></a>
|
813
837
|
|
814
838
|
<div class="method-heading">
|
815
839
|
|
@@ -873,7 +897,7 @@ on their priority.
|
|
873
897
|
|
874
898
|
|
875
899
|
<div id="calc-ath-riticalness-method" class="method-detail ">
|
876
|
-
<a name="
|
900
|
+
<a name="method-i-calcPathCriticalness"></a>
|
877
901
|
|
878
902
|
<div class="method-heading">
|
879
903
|
|
@@ -959,7 +983,7 @@ criticalnesses of the tasks.
|
|
959
983
|
|
960
984
|
|
961
985
|
<div id="can-nherit-ate--method" class="method-detail ">
|
962
|
-
<a name="
|
986
|
+
<a name="method-i-canInheritDate%3F"></a>
|
963
987
|
|
964
988
|
<div class="method-heading">
|
965
989
|
|
@@ -982,59 +1006,59 @@ check should be done for the task end (true) or task start (false).
|
|
982
1006
|
<div class="method-source-code"
|
983
1007
|
id="can-nherit-ate--source">
|
984
1008
|
<pre>
|
985
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
904:
|
1019
|
-
905: <span class="ruby-identifier">thatEnd</span> = <span class="ruby-identifier">atEnd</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'start'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'end'</span>
|
1020
|
-
906: <span class="ruby-identifier">hasThatDeps</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-identifier">thatEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'preds'</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-identifier">thatEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'succs'</span>).<span class="ruby-identifier">empty?</span>
|
1021
|
-
907: <span class="ruby-identifier">hasThatSpec</span> = <span class="ruby-identifier">a</span>(<span class="ruby-identifier">thatEnd</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">hasThatDeps</span>
|
1009
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 876</span>
|
1010
|
+
876: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">canInheritDate?</span>(<span class="ruby-identifier">atEnd</span>)
|
1011
|
+
877: <span class="ruby-comment cmt"># Inheriting a start or end date from the enclosing task or the project</span>
|
1012
|
+
878: <span class="ruby-comment cmt"># is allowed for the following scenarios:</span>
|
1013
|
+
879: <span class="ruby-comment cmt"># - --> - inherit start and end when no bookings but allocations</span>
|
1014
|
+
880: <span class="ruby-comment cmt"># present</span>
|
1015
|
+
881: <span class="ruby-comment cmt"># - <-- - dito</span>
|
1016
|
+
882: <span class="ruby-comment cmt">#</span>
|
1017
|
+
883: <span class="ruby-comment cmt"># - x-> - inhS</span>
|
1018
|
+
884: <span class="ruby-comment cmt"># - x-> | inhS</span>
|
1019
|
+
885: <span class="ruby-comment cmt"># - x-> -D inhS</span>
|
1020
|
+
886: <span class="ruby-comment cmt"># - x-> |D inhS</span>
|
1021
|
+
887: <span class="ruby-comment cmt"># - --> | inhS</span>
|
1022
|
+
888: <span class="ruby-comment cmt"># - --> -D inhS</span>
|
1023
|
+
889: <span class="ruby-comment cmt"># - --> |D inhS</span>
|
1024
|
+
890: <span class="ruby-comment cmt"># - <-- | inhS</span>
|
1025
|
+
891: <span class="ruby-comment cmt"># | --> - inhE</span>
|
1026
|
+
892: <span class="ruby-comment cmt"># | <-x - inhE</span>
|
1027
|
+
893: <span class="ruby-comment cmt"># |D <-x - inhE</span>
|
1028
|
+
894: <span class="ruby-comment cmt"># - <-x - inhE</span>
|
1029
|
+
895: <span class="ruby-comment cmt"># -D <-x - inhE</span>
|
1030
|
+
896: <span class="ruby-comment cmt"># | <-- - inhE</span>
|
1031
|
+
897: <span class="ruby-comment cmt"># |D <-- - inhE</span>
|
1032
|
+
898: <span class="ruby-comment cmt"># -D <-- - inhE</span>
|
1033
|
+
899: <span class="ruby-comment cmt"># Return false if we already have a date or if we have a dependency for</span>
|
1034
|
+
900: <span class="ruby-comment cmt"># this end.</span>
|
1035
|
+
901: <span class="ruby-identifier">thisEnd</span> = <span class="ruby-identifier">atEnd</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'end'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'start'</span>
|
1036
|
+
902: <span class="ruby-identifier">hasThisDeps</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-identifier">thisEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'preds'</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-identifier">thisEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'succs'</span>).<span class="ruby-identifier">empty?</span>
|
1037
|
+
903: <span class="ruby-identifier">hasThisSpec</span> = <span class="ruby-identifier">a</span>(<span class="ruby-identifier">thisEnd</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">hasThisDeps</span>
|
1038
|
+
904: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hasThisSpec</span>
|
1039
|
+
905:
|
1040
|
+
906: <span class="ruby-comment cmt"># Containter task can inherit the date if they have no dependencies.</span>
|
1041
|
+
907: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
|
1022
1042
|
908:
|
1023
|
-
909: <span class="ruby-
|
1024
|
-
910: <span class="ruby-
|
1025
|
-
911: <span class="ruby-
|
1043
|
+
909: <span class="ruby-identifier">thatEnd</span> = <span class="ruby-identifier">atEnd</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'start'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'end'</span>
|
1044
|
+
910: <span class="ruby-identifier">hasThatDeps</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-identifier">thatEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'preds'</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-identifier">thatEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'succs'</span>).<span class="ruby-identifier">empty?</span>
|
1045
|
+
911: <span class="ruby-identifier">hasThatSpec</span> = <span class="ruby-identifier">a</span>(<span class="ruby-identifier">thatEnd</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">hasThatDeps</span>
|
1026
1046
|
912:
|
1027
|
-
913: <span class="ruby-
|
1028
|
-
914:
|
1029
|
-
915:
|
1047
|
+
913: <span class="ruby-comment cmt"># Check for tasks that have no start and end spec, no duration spec but</span>
|
1048
|
+
914: <span class="ruby-comment cmt"># allocates. They can inherit the start and end date.</span>
|
1049
|
+
915: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hasThatSpec</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">hasDurationSpec?</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'allocate'</span>).<span class="ruby-identifier">empty?</span>
|
1030
1050
|
916:
|
1031
|
-
917:
|
1032
|
-
918:
|
1033
|
-
919: <span class="ruby-
|
1034
|
-
920:
|
1035
|
-
921:
|
1036
|
-
922: <span class="ruby-keyword kw">
|
1037
|
-
923:
|
1051
|
+
917: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>) <span class="ruby-operator">^</span> <span class="ruby-identifier">atEnd</span>
|
1052
|
+
918: <span class="ruby-comment cmt"># the scheduling direction is pointing away from this end</span>
|
1053
|
+
919: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hasDurationSpec?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'booking'</span>).<span class="ruby-identifier">empty?</span>
|
1054
|
+
920:
|
1055
|
+
921: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">hasThatSpec</span>
|
1056
|
+
922: <span class="ruby-keyword kw">else</span>
|
1057
|
+
923: <span class="ruby-comment cmt"># the scheduling direction is pointing towards this end</span>
|
1058
|
+
924: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">a</span>(<span class="ruby-identifier">thatEnd</span>) <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">hasDurationSpec?</span> <span class="ruby-operator">&&</span>
|
1059
|
+
925: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'booking'</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-comment cmt">#&& a('allocate').empty?</span>
|
1060
|
+
926: <span class="ruby-keyword kw">end</span>
|
1061
|
+
927: <span class="ruby-keyword kw">end</span></pre>
|
1038
1062
|
</div>
|
1039
1063
|
|
1040
1064
|
</div>
|
@@ -1046,7 +1070,7 @@ check should be done for the task end (true) or task start (false).
|
|
1046
1070
|
|
1047
1071
|
|
1048
1072
|
<div id="candidates-method" class="method-detail ">
|
1049
|
-
<a name="
|
1073
|
+
<a name="method-i-candidates"></a>
|
1050
1074
|
|
1051
1075
|
<div class="method-heading">
|
1052
1076
|
|
@@ -1091,7 +1115,7 @@ list of leaf resources that are allocated to this task.
|
|
1091
1115
|
|
1092
1116
|
|
1093
1117
|
<div id="check-or-oops-method" class="method-detail ">
|
1094
|
-
<a name="
|
1118
|
+
<a name="method-i-checkForLoops"></a>
|
1095
1119
|
|
1096
1120
|
<div class="method-heading">
|
1097
1121
|
|
@@ -1278,7 +1302,7 @@ list of leaf resources that are allocated to this task.
|
|
1278
1302
|
|
1279
1303
|
|
1280
1304
|
<div id="collect-ime-ff-ntervals-method" class="method-detail ">
|
1281
|
-
<a name="
|
1305
|
+
<a name="method-i-collectTimeOffIntervals"></a>
|
1282
1306
|
|
1283
1307
|
<div class="method-heading">
|
1284
1308
|
|
@@ -1300,14 +1324,14 @@ minDuration long and contain no working time.
|
|
1300
1324
|
<div class="method-source-code"
|
1301
1325
|
id="collect-ime-ff-ntervals-source">
|
1302
1326
|
<pre>
|
1303
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1327
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1332</span>
|
1328
|
+
1332: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collectTimeOffIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>)
|
1329
|
+
1333: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'shifts'</span>)
|
1330
|
+
1334: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'shifts'</span>).<span class="ruby-identifier">collectTimeOffIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>)
|
1331
|
+
1335: <span class="ruby-keyword kw">else</span>
|
1332
|
+
1336: []
|
1333
|
+
1337: <span class="ruby-keyword kw">end</span>
|
1334
|
+
1338: <span class="ruby-keyword kw">end</span></pre>
|
1311
1335
|
</div>
|
1312
1336
|
|
1313
1337
|
</div>
|
@@ -1319,7 +1343,7 @@ minDuration long and contain no working time.
|
|
1319
1343
|
|
1320
1344
|
|
1321
1345
|
<div id="count-esource-llocations-method" class="method-detail ">
|
1322
|
-
<a name="
|
1346
|
+
<a name="method-i-countResourceAllocations"></a>
|
1323
1347
|
|
1324
1348
|
<div class="method-heading">
|
1325
1349
|
|
@@ -1363,7 +1387,7 @@ stores it in @candidates. It also adds the allocated effort to the
|
|
1363
1387
|
|
1364
1388
|
|
1365
1389
|
<div id="earliest-tart-method" class="method-detail ">
|
1366
|
-
<a name="
|
1390
|
+
<a name="method-i-earliestStart"></a>
|
1367
1391
|
|
1368
1392
|
<div class="method-heading">
|
1369
1393
|
|
@@ -1386,60 +1410,60 @@ also require a minimum gap between the tasks.
|
|
1386
1410
|
<div class="method-source-code"
|
1387
1411
|
id="earliest-tart-source">
|
1388
1412
|
<pre>
|
1389
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1397
|
-
|
1398
|
-
|
1399
|
-
|
1400
|
-
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
1411
|
-
|
1412
|
-
|
1413
|
-
|
1414
|
-
|
1415
|
-
|
1416
|
-
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1442
|
-
|
1413
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 979</span>
|
1414
|
+
979: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">earliestStart</span>
|
1415
|
+
980: <span class="ruby-comment cmt"># This is the date that we will return.</span>
|
1416
|
+
981: <span class="ruby-identifier">startDate</span> = <span class="ruby-keyword kw">nil</span>
|
1417
|
+
982: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'depends'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">dependency</span><span class="ruby-operator">|</span>
|
1418
|
+
983: <span class="ruby-identifier">potentialStartDate</span> =
|
1419
|
+
984: <span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">task</span>[<span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">onEnd</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'end'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
1420
|
+
985: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">potentialStartDate</span>.<span class="ruby-identifier">nil?</span>
|
1421
|
+
986:
|
1422
|
+
987: <span class="ruby-comment cmt"># Determine the end date of a 'length' gap.</span>
|
1423
|
+
988: <span class="ruby-identifier">dateAfterLengthGap</span> = <span class="ruby-identifier">potentialStartDate</span>
|
1424
|
+
989: <span class="ruby-identifier">gapLength</span> = <span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">gapLength</span>
|
1425
|
+
990: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">gapLength</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">dateAfterLengthGap</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>] <span class="ruby-keyword kw">do</span>
|
1426
|
+
991: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">isWorkingTime</span>(<span class="ruby-identifier">dateAfterLengthGap</span>)
|
1427
|
+
992: <span class="ruby-identifier">gapLength</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
1428
|
+
993: <span class="ruby-keyword kw">end</span>
|
1429
|
+
994: <span class="ruby-identifier">dateAfterLengthGap</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
|
1430
|
+
995: <span class="ruby-keyword kw">end</span>
|
1431
|
+
996:
|
1432
|
+
997: <span class="ruby-comment cmt"># Determine the end date of a 'duration' gap.</span>
|
1433
|
+
998: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dateAfterLengthGap</span> <span class="ruby-operator">></span> <span class="ruby-identifier">potentialStartDate</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">gapDuration</span>
|
1434
|
+
999: <span class="ruby-identifier">potentialStartDate</span> = <span class="ruby-identifier">dateAfterLengthGap</span>
|
1435
|
+
1000: <span class="ruby-keyword kw">else</span>
|
1436
|
+
1001: <span class="ruby-identifier">potentialStartDate</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">gapDuration</span>
|
1437
|
+
1002: <span class="ruby-keyword kw">end</span>
|
1438
|
+
1003:
|
1439
|
+
1004: <span class="ruby-identifier">startDate</span> = <span class="ruby-identifier">potentialStartDate</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startDate</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span>
|
1440
|
+
1005: <span class="ruby-identifier">startDate</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">potentialStartDate</span>
|
1441
|
+
1006: <span class="ruby-keyword kw">end</span>
|
1442
|
+
1007:
|
1443
|
+
1008: <span class="ruby-comment cmt"># If any of the parent tasks has an explicit start date, the task must</span>
|
1444
|
+
1009: <span class="ruby-comment cmt"># start at or after this date.</span>
|
1445
|
+
1010: <span class="ruby-identifier">task</span> = <span class="ruby-ivar">@property</span>
|
1446
|
+
1011: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">task</span> = <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>) <span class="ruby-keyword kw">do</span>
|
1447
|
+
1012: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">&&</span>
|
1448
|
+
1013: (<span class="ruby-identifier">startDate</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">></span> <span class="ruby-identifier">startDate</span>)
|
1449
|
+
1014: <span class="ruby-identifier">startDate</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
1450
|
+
1015: <span class="ruby-keyword kw">break</span>
|
1451
|
+
1016: <span class="ruby-keyword kw">end</span>
|
1452
|
+
1017: <span class="ruby-keyword kw">end</span>
|
1453
|
+
1018:
|
1454
|
+
1019: <span class="ruby-comment cmt"># When the computed start date is after the already determined end date</span>
|
1455
|
+
1020: <span class="ruby-comment cmt"># of the task, the start dependencies were too weak. This happens when</span>
|
1456
|
+
1021: <span class="ruby-comment cmt"># task B depends on A and they are specified this way:</span>
|
1457
|
+
1022: <span class="ruby-comment cmt"># task A: | --> D-</span>
|
1458
|
+
1023: <span class="ruby-comment cmt"># task B: -D <-- |</span>
|
1459
|
+
1024: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">startDate</span> <span class="ruby-operator">></span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)
|
1460
|
+
1025: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'weak_start_dep'</span>,
|
1461
|
+
1026: <span class="ruby-node">"Task #{@property.fullId} has a too weak start dependencies "</span> <span class="ruby-operator">+</span>
|
1462
|
+
1027: <span class="ruby-value str">"to be scheduled properly."</span>)
|
1463
|
+
1028: <span class="ruby-keyword kw">end</span>
|
1464
|
+
1029:
|
1465
|
+
1030: <span class="ruby-identifier">startDate</span>
|
1466
|
+
1031: <span class="ruby-keyword kw">end</span></pre>
|
1443
1467
|
</div>
|
1444
1468
|
|
1445
1469
|
</div>
|
@@ -1451,7 +1475,7 @@ also require a minimum gap between the tasks.
|
|
1451
1475
|
|
1452
1476
|
|
1453
1477
|
<div id="finish-cheduling-method" class="method-detail ">
|
1454
|
-
<a name="
|
1478
|
+
<a name="method-i-finishScheduling"></a>
|
1455
1479
|
|
1456
1480
|
<div class="method-heading">
|
1457
1481
|
|
@@ -1492,7 +1516,7 @@ on the just scheduled values.
|
|
1492
1516
|
|
1493
1517
|
|
1494
1518
|
<div id="get-llocated-ime-method" class="method-detail ">
|
1495
|
-
<a name="
|
1519
|
+
<a name="method-i-getAllocatedTime"></a>
|
1496
1520
|
|
1497
1521
|
<div class="method-heading">
|
1498
1522
|
|
@@ -1514,30 +1538,30 @@ during interval specified by <em>startIdx</em> and <em>endIdx</em>.
|
|
1514
1538
|
<div class="method-source-code"
|
1515
1539
|
id="get-llocated-ime-source">
|
1516
1540
|
<pre>
|
1517
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1521
|
-
|
1522
|
-
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1528
|
-
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
|
1538
|
-
|
1539
|
-
|
1540
|
-
|
1541
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1280</span>
|
1542
|
+
1280: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getAllocatedTime</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
|
1543
|
+
1281: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0.0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'milestone'</span>)
|
1544
|
+
1282:
|
1545
|
+
1283: <span class="ruby-identifier">allocatedTime</span> = <span class="ruby-value">0.0</span>
|
1546
|
+
1284: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
|
1547
|
+
1285: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
|
1548
|
+
1286: <span class="ruby-identifier">allocatedTime</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">getAllocatedTime</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
|
1549
|
+
1287: <span class="ruby-identifier">resource</span>)
|
1550
|
+
1288: <span class="ruby-keyword kw">end</span>
|
1551
|
+
1289: <span class="ruby-keyword kw">else</span>
|
1552
|
+
1290: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resource</span>
|
1553
|
+
1291: <span class="ruby-identifier">allocatedTime</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getAllocatedTime</span>(<span class="ruby-ivar">@scenarioIdx</span>,
|
1554
|
+
1292: <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
|
1555
|
+
1293: <span class="ruby-ivar">@property</span>)
|
1556
|
+
1294: <span class="ruby-keyword kw">else</span>
|
1557
|
+
1295: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'assignedresources'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
|
1558
|
+
1296: <span class="ruby-identifier">allocatedTime</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">getAllocatedTime</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
|
1559
|
+
1297: <span class="ruby-ivar">@property</span>)
|
1560
|
+
1298: <span class="ruby-keyword kw">end</span>
|
1561
|
+
1299: <span class="ruby-keyword kw">end</span>
|
1562
|
+
1300: <span class="ruby-keyword kw">end</span>
|
1563
|
+
1301: <span class="ruby-identifier">allocatedTime</span>
|
1564
|
+
1302: <span class="ruby-keyword kw">end</span></pre>
|
1541
1565
|
</div>
|
1542
1566
|
|
1543
1567
|
</div>
|
@@ -1549,7 +1573,7 @@ during interval specified by <em>startIdx</em> and <em>endIdx</em>.
|
|
1549
1573
|
|
1550
1574
|
|
1551
1575
|
<div id="get-ffective-ork-method" class="method-detail ">
|
1552
|
-
<a name="
|
1576
|
+
<a name="method-i-getEffectiveWork"></a>
|
1553
1577
|
|
1554
1578
|
<div class="method-heading">
|
1555
1579
|
|
@@ -1573,29 +1597,29 @@ resource.
|
|
1573
1597
|
<div class="method-source-code"
|
1574
1598
|
id="get-ffective-ork-source">
|
1575
1599
|
<pre>
|
1576
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
|
1587
|
-
|
1588
|
-
|
1589
|
-
|
1590
|
-
|
1591
|
-
|
1592
|
-
|
1593
|
-
|
1594
|
-
|
1595
|
-
|
1596
|
-
|
1597
|
-
|
1598
|
-
|
1600
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1307</span>
|
1601
|
+
1307: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
|
1602
|
+
1308: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0.0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'milestone'</span>)
|
1603
|
+
1309:
|
1604
|
+
1310: <span class="ruby-identifier">workLoad</span> = <span class="ruby-value">0.0</span>
|
1605
|
+
1311: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
|
1606
|
+
1312: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
|
1607
|
+
1313: <span class="ruby-identifier">workLoad</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
|
1608
|
+
1314: <span class="ruby-identifier">resource</span>)
|
1609
|
+
1315: <span class="ruby-keyword kw">end</span>
|
1610
|
+
1316: <span class="ruby-keyword kw">else</span>
|
1611
|
+
1317: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resource</span>
|
1612
|
+
1318: <span class="ruby-identifier">workLoad</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
|
1613
|
+
1319: <span class="ruby-ivar">@property</span>)
|
1614
|
+
1320: <span class="ruby-keyword kw">else</span>
|
1615
|
+
1321: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'assignedresources'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
|
1616
|
+
1322: <span class="ruby-identifier">workLoad</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
|
1617
|
+
1323: <span class="ruby-ivar">@property</span>)
|
1618
|
+
1324: <span class="ruby-keyword kw">end</span>
|
1619
|
+
1325: <span class="ruby-keyword kw">end</span>
|
1620
|
+
1326: <span class="ruby-keyword kw">end</span>
|
1621
|
+
1327: <span class="ruby-identifier">workLoad</span>
|
1622
|
+
1328: <span class="ruby-keyword kw">end</span></pre>
|
1599
1623
|
</div>
|
1600
1624
|
|
1601
1625
|
</div>
|
@@ -1607,7 +1631,7 @@ resource.
|
|
1607
1631
|
|
1608
1632
|
|
1609
1633
|
<div id="has-ependency--method" class="method-detail ">
|
1610
|
-
<a name="
|
1634
|
+
<a name="method-i-hasDependency%3F"></a>
|
1611
1635
|
|
1612
1636
|
<div class="method-heading">
|
1613
1637
|
|
@@ -1645,7 +1669,7 @@ Return true of this <a href="Task.html">Task</a> has a dependency [
|
|
1645
1669
|
|
1646
1670
|
|
1647
1671
|
<div id="has-uration-pec--method" class="method-detail ">
|
1648
|
-
<a name="
|
1672
|
+
<a name="method-i-hasDurationSpec%3F"></a>
|
1649
1673
|
|
1650
1674
|
<div class="method-heading">
|
1651
1675
|
|
@@ -1666,10 +1690,10 @@ Return true if the task has a effort, length or duration setting.
|
|
1666
1690
|
<div class="method-source-code"
|
1667
1691
|
id="has-uration-pec--source">
|
1668
1692
|
<pre>
|
1669
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
1670
|
-
|
1671
|
-
|
1672
|
-
|
1693
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 972</span>
|
1694
|
+
972: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hasDurationSpec?</span>
|
1695
|
+
973: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'length'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duration'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'effort'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'milestone'</span>)
|
1696
|
+
974: <span class="ruby-keyword kw">end</span></pre>
|
1673
1697
|
</div>
|
1674
1698
|
|
1675
1699
|
</div>
|
@@ -1681,7 +1705,7 @@ Return true if the task has a effort, length or duration setting.
|
|
1681
1705
|
|
1682
1706
|
|
1683
1707
|
<div id="has-esource-llocated--method" class="method-detail ">
|
1684
|
-
<a name="
|
1708
|
+
<a name="method-i-hasResourceAllocated%3F"></a>
|
1685
1709
|
|
1686
1710
|
<div class="method-heading">
|
1687
1711
|
|
@@ -1703,18 +1727,18 @@ its children.
|
|
1703
1727
|
<div class="method-source-code"
|
1704
1728
|
id="has-esource-llocated--source">
|
1705
1729
|
<pre>
|
1706
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
1707
|
-
|
1708
|
-
|
1709
|
-
|
1710
|
-
|
1711
|
-
|
1712
|
-
|
1713
|
-
|
1714
|
-
|
1715
|
-
|
1716
|
-
|
1717
|
-
|
1730
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1391</span>
|
1731
|
+
1391: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hasResourceAllocated?</span>(<span class="ruby-identifier">interval</span>, <span class="ruby-identifier">resource</span>)
|
1732
|
+
1392: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">leaf?</span>
|
1733
|
+
1393: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">allocated?</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">interval</span>, <span class="ruby-ivar">@property</span>)
|
1734
|
+
1394: <span class="ruby-keyword kw">else</span>
|
1735
|
+
1395: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
|
1736
|
+
1396: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">hasResourceAllocated?</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">interval</span>,
|
1737
|
+
1397: <span class="ruby-identifier">resource</span>)
|
1738
|
+
1398: <span class="ruby-keyword kw">end</span>
|
1739
|
+
1399: <span class="ruby-keyword kw">end</span>
|
1740
|
+
1400: <span class="ruby-keyword kw">false</span>
|
1741
|
+
1401: <span class="ruby-keyword kw">end</span></pre>
|
1718
1742
|
</div>
|
1719
1743
|
|
1720
1744
|
</div>
|
@@ -1726,7 +1750,7 @@ its children.
|
|
1726
1750
|
|
1727
1751
|
|
1728
1752
|
<div id="is-ependency-f-method" class="method-detail ">
|
1729
|
-
<a name="
|
1753
|
+
<a name="method-i-isDependencyOf"></a>
|
1730
1754
|
|
1731
1755
|
<div class="method-heading">
|
1732
1756
|
|
@@ -1741,7 +1765,8 @@ its children.
|
|
1741
1765
|
<p>
|
1742
1766
|
Check if the <a href="Task.html">Task</a> <em>task</em> depends on this
|
1743
1767
|
task. <em>depth</em> specifies how many dependent task are traversed at
|
1744
|
-
max. A value of 0 means no limit.
|
1768
|
+
max. A value of 0 means no limit. TODO: Change this to a non-recursive
|
1769
|
+
implementation.
|
1745
1770
|
</p>
|
1746
1771
|
|
1747
1772
|
|
@@ -1749,37 +1774,83 @@ max. A value of 0 means no limit.
|
|
1749
1774
|
<div class="method-source-code"
|
1750
1775
|
id="is-ependency-f-source">
|
1751
1776
|
<pre>
|
1752
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
1753
|
-
|
1754
|
-
|
1755
|
-
|
1756
|
-
|
1757
|
-
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
1761
|
-
|
1762
|
-
|
1763
|
-
|
1764
|
-
1347:
|
1765
|
-
1348: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'startsuccs'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">dep</span><span class="ruby-operator">|</span>
|
1766
|
-
1349: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">dep</span>[<span class="ruby-value">1</span>]
|
1767
|
-
1350: <span class="ruby-comment cmt"># must be a start->start dependency</span>
|
1768
|
-
1351: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dep</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">isDependencyOf</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">task</span>, <span class="ruby-identifier">depth</span>)
|
1769
|
-
1352: <span class="ruby-keyword kw">end</span>
|
1770
|
-
1353: <span class="ruby-keyword kw">end</span>
|
1777
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1343</span>
|
1778
|
+
1343: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isDependencyOf</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">depth</span>)
|
1779
|
+
1344: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@property</span>
|
1780
|
+
1345:
|
1781
|
+
1346: <span class="ruby-comment cmt"># Check if any of the parent tasks is a dependency of _task_.</span>
|
1782
|
+
1347: <span class="ruby-identifier">t</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>
|
1783
|
+
1348: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">t</span>
|
1784
|
+
1349: <span class="ruby-comment cmt"># If the parent is a dependency, than all childs are as well.</span>
|
1785
|
+
1350: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">isDependencyOf</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">task</span>, <span class="ruby-identifier">depth</span>)
|
1786
|
+
1351: <span class="ruby-identifier">t</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">parent</span>
|
1787
|
+
1352: <span class="ruby-keyword kw">end</span>
|
1788
|
+
1353:
|
1771
1789
|
1354:
|
1772
|
-
1355: <span class="ruby-
|
1773
|
-
1356:
|
1774
|
-
1357:
|
1775
|
-
1358:
|
1776
|
-
1359:
|
1777
|
-
1360:
|
1778
|
-
1361:
|
1779
|
-
1362: <span class="ruby-keyword kw">
|
1790
|
+
1355: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'startsuccs'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">dep</span><span class="ruby-operator">|</span>
|
1791
|
+
1356: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">dep</span>[<span class="ruby-value">1</span>]
|
1792
|
+
1357: <span class="ruby-comment cmt"># must be a start->start dependency</span>
|
1793
|
+
1358: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dep</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">isDependencyOf</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">task</span>, <span class="ruby-identifier">depth</span>)
|
1794
|
+
1359: <span class="ruby-keyword kw">end</span>
|
1795
|
+
1360: <span class="ruby-keyword kw">end</span>
|
1796
|
+
1361:
|
1797
|
+
1362: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">depth</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
1780
1798
|
1363:
|
1781
|
-
1364: <span class="ruby-keyword kw">
|
1782
|
-
1365:
|
1799
|
+
1364: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'endsuccs'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">dep</span><span class="ruby-operator">|</span>
|
1800
|
+
1365: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">dep</span>[<span class="ruby-value">1</span>]
|
1801
|
+
1366: <span class="ruby-comment cmt"># must be an end->start dependency</span>
|
1802
|
+
1367: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dep</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">isDependencyOf</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">task</span>, <span class="ruby-identifier">depth</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
|
1803
|
+
1368: <span class="ruby-keyword kw">end</span>
|
1804
|
+
1369: <span class="ruby-keyword kw">end</span>
|
1805
|
+
1370:
|
1806
|
+
1371: <span class="ruby-keyword kw">false</span>
|
1807
|
+
1372: <span class="ruby-keyword kw">end</span></pre>
|
1808
|
+
</div>
|
1809
|
+
|
1810
|
+
</div>
|
1811
|
+
|
1812
|
+
|
1813
|
+
|
1814
|
+
|
1815
|
+
</div>
|
1816
|
+
|
1817
|
+
|
1818
|
+
<div id="is-eature-f-method" class="method-detail ">
|
1819
|
+
<a name="method-i-isFeatureOf"></a>
|
1820
|
+
|
1821
|
+
<div class="method-heading">
|
1822
|
+
|
1823
|
+
<span class="method-name">isFeatureOf</span><span
|
1824
|
+
class="method-args">(task)</span>
|
1825
|
+
<span class="method-click-advice">click to toggle source</span>
|
1826
|
+
|
1827
|
+
</div>
|
1828
|
+
|
1829
|
+
<div class="method-description">
|
1830
|
+
|
1831
|
+
<p>
|
1832
|
+
If <em>task</em> or any of its sub-tasks depend on this task or any of its
|
1833
|
+
sub-tasks, we call this task a feature of <em>task</em>.
|
1834
|
+
</p>
|
1835
|
+
|
1836
|
+
|
1837
|
+
|
1838
|
+
<div class="method-source-code"
|
1839
|
+
id="is-eature-f-source">
|
1840
|
+
<pre>
|
1841
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1376</span>
|
1842
|
+
1376: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isFeatureOf</span>(<span class="ruby-identifier">task</span>)
|
1843
|
+
1377: <span class="ruby-identifier">sources</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">all</span>
|
1844
|
+
1378: <span class="ruby-identifier">destinations</span> = <span class="ruby-identifier">task</span>.<span class="ruby-identifier">all</span>
|
1845
|
+
1379:
|
1846
|
+
1380: <span class="ruby-identifier">sources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
|
1847
|
+
1381: <span class="ruby-identifier">destinations</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
|
1848
|
+
1382: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">isDependencyOf</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">d</span>, <span class="ruby-value">0</span>)
|
1849
|
+
1383: <span class="ruby-keyword kw">end</span>
|
1850
|
+
1384: <span class="ruby-keyword kw">end</span>
|
1851
|
+
1385:
|
1852
|
+
1386: <span class="ruby-keyword kw">false</span>
|
1853
|
+
1387: <span class="ruby-keyword kw">end</span></pre>
|
1783
1854
|
</div>
|
1784
1855
|
|
1785
1856
|
</div>
|
@@ -1791,7 +1862,7 @@ max. A value of 0 means no limit.
|
|
1791
1862
|
|
1792
1863
|
|
1793
1864
|
<div id="latest-nd-method" class="method-detail ">
|
1794
|
-
<a name="
|
1865
|
+
<a name="method-i-latestEnd"></a>
|
1795
1866
|
|
1796
1867
|
<div class="method-heading">
|
1797
1868
|
|
@@ -1814,60 +1885,60 @@ also require a minimum gap between the tasks.
|
|
1814
1885
|
<div class="method-source-code"
|
1815
1886
|
id="latest-nd-source">
|
1816
1887
|
<pre>
|
1817
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
1818
|
-
|
1819
|
-
|
1820
|
-
|
1821
|
-
|
1822
|
-
|
1823
|
-
|
1824
|
-
|
1825
|
-
|
1826
|
-
|
1827
|
-
|
1828
|
-
|
1829
|
-
|
1830
|
-
|
1831
|
-
|
1832
|
-
|
1833
|
-
|
1834
|
-
|
1835
|
-
|
1836
|
-
|
1837
|
-
|
1838
|
-
|
1839
|
-
|
1840
|
-
|
1841
|
-
|
1842
|
-
|
1843
|
-
|
1844
|
-
|
1845
|
-
|
1846
|
-
|
1847
|
-
|
1848
|
-
|
1849
|
-
|
1850
|
-
|
1851
|
-
|
1852
|
-
|
1853
|
-
|
1854
|
-
|
1855
|
-
|
1856
|
-
|
1857
|
-
|
1858
|
-
|
1859
|
-
|
1860
|
-
|
1861
|
-
|
1862
|
-
|
1863
|
-
|
1864
|
-
|
1865
|
-
|
1866
|
-
|
1867
|
-
|
1868
|
-
|
1869
|
-
|
1870
|
-
|
1888
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1036</span>
|
1889
|
+
1036: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">latestEnd</span>
|
1890
|
+
1037: <span class="ruby-comment cmt"># This is the date that we will return.</span>
|
1891
|
+
1038: <span class="ruby-identifier">endDate</span> = <span class="ruby-keyword kw">nil</span>
|
1892
|
+
1039: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'precedes'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">dependency</span><span class="ruby-operator">|</span>
|
1893
|
+
1040: <span class="ruby-identifier">potentialEndDate</span> =
|
1894
|
+
1041: <span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">task</span>[<span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">onEnd</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'end'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
1895
|
+
1042: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">potentialEndDate</span>.<span class="ruby-identifier">nil?</span>
|
1896
|
+
1043:
|
1897
|
+
1044: <span class="ruby-comment cmt"># Determine the end date of a 'length' gap.</span>
|
1898
|
+
1045: <span class="ruby-identifier">dateBeforeLengthGap</span> = <span class="ruby-identifier">potentialEndDate</span>
|
1899
|
+
1046: <span class="ruby-identifier">gapLength</span> = <span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">gapLength</span>
|
1900
|
+
1047: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">gapLength</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">dateBeforeLengthGap</span> <span class="ruby-operator">></span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-keyword kw">do</span>
|
1901
|
+
1048: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">isWorkingTime</span>(<span class="ruby-identifier">dateBeforeLengthGap</span> <span class="ruby-operator">-</span>
|
1902
|
+
1049: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
|
1903
|
+
1050: <span class="ruby-identifier">gapLength</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
1904
|
+
1051: <span class="ruby-keyword kw">end</span>
|
1905
|
+
1052: <span class="ruby-identifier">dateBeforeLengthGap</span> <span class="ruby-operator">-=</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
|
1906
|
+
1053: <span class="ruby-keyword kw">end</span>
|
1907
|
+
1054:
|
1908
|
+
1055: <span class="ruby-comment cmt"># Determine the end date of a 'duration' gap.</span>
|
1909
|
+
1056: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dateBeforeLengthGap</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">potentialEndDate</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">gapDuration</span>
|
1910
|
+
1057: <span class="ruby-identifier">potentialEndDate</span> = <span class="ruby-identifier">dateBeforeLengthGap</span>
|
1911
|
+
1058: <span class="ruby-keyword kw">else</span>
|
1912
|
+
1059: <span class="ruby-identifier">potentialEndDate</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">gapDuration</span>
|
1913
|
+
1060: <span class="ruby-keyword kw">end</span>
|
1914
|
+
1061:
|
1915
|
+
1062: <span class="ruby-identifier">endDate</span> = <span class="ruby-identifier">potentialEndDate</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">endDate</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">endDate</span> <span class="ruby-operator">></span> <span class="ruby-identifier">potentialEndDate</span>
|
1916
|
+
1063: <span class="ruby-keyword kw">end</span>
|
1917
|
+
1064:
|
1918
|
+
1065: <span class="ruby-comment cmt"># If any of the parent tasks has an explicit end date, the task must end</span>
|
1919
|
+
1066: <span class="ruby-comment cmt"># at or before this date.</span>
|
1920
|
+
1067: <span class="ruby-identifier">task</span> = <span class="ruby-ivar">@property</span>
|
1921
|
+
1068: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">task</span> = <span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>) <span class="ruby-keyword kw">do</span>
|
1922
|
+
1069: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">&&</span>
|
1923
|
+
1070: (<span class="ruby-identifier">endDate</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator"><</span> <span class="ruby-identifier">endDate</span>)
|
1924
|
+
1071: <span class="ruby-identifier">endDate</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
1925
|
+
1072: <span class="ruby-keyword kw">break</span>
|
1926
|
+
1073: <span class="ruby-keyword kw">end</span>
|
1927
|
+
1074: <span class="ruby-keyword kw">end</span>
|
1928
|
+
1075:
|
1929
|
+
1076: <span class="ruby-comment cmt"># When the computed end date is before the already determined start date</span>
|
1930
|
+
1077: <span class="ruby-comment cmt"># of the task, the end dependencies were too weak. This happens when</span>
|
1931
|
+
1078: <span class="ruby-comment cmt"># task A precedes B and they are specified this way:</span>
|
1932
|
+
1079: <span class="ruby-comment cmt"># task A: | --> D-</span>
|
1933
|
+
1080: <span class="ruby-comment cmt"># task B: -D <-- |</span>
|
1934
|
+
1081: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">endDate</span> <span class="ruby-operator">></span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>)
|
1935
|
+
1082: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'weak_end_dep'</span>,
|
1936
|
+
1083: <span class="ruby-node">"Task #{@property.fullId} has a too weak end dependencies "</span> <span class="ruby-operator">+</span>
|
1937
|
+
1084: <span class="ruby-value str">"to be scheduled properly."</span>)
|
1938
|
+
1085: <span class="ruby-keyword kw">end</span>
|
1939
|
+
1086:
|
1940
|
+
1087: <span class="ruby-identifier">endDate</span>
|
1941
|
+
1088: <span class="ruby-keyword kw">end</span></pre>
|
1871
1942
|
</div>
|
1872
1943
|
|
1873
1944
|
</div>
|
@@ -1879,7 +1950,7 @@ also require a minimum gap between the tasks.
|
|
1879
1950
|
|
1880
1951
|
|
1881
1952
|
<div id="post-chedule-heck-method" class="method-detail ">
|
1882
|
-
<a name="
|
1953
|
+
<a name="method-i-postScheduleCheck"></a>
|
1883
1954
|
|
1884
1955
|
<div class="method-heading">
|
1885
1956
|
|
@@ -2070,7 +2141,7 @@ finished.
|
|
2070
2141
|
|
2071
2142
|
|
2072
2143
|
<div id="pre-chedule-heck-method" class="method-detail ">
|
2073
|
-
<a name="
|
2144
|
+
<a name="method-i-preScheduleCheck"></a>
|
2074
2145
|
|
2075
2146
|
<div class="method-heading">
|
2076
2147
|
|
@@ -2247,7 +2318,7 @@ consistency checks on the task.
|
|
2247
2318
|
304: <span class="ruby-keyword kw">if</span> ((<span class="ruby-identifier">startSpeced</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">endSpeced</span>) <span class="ruby-operator">||</span>
|
2248
2319
|
305: (<span class="ruby-identifier">hasDependencies</span>(<span class="ruby-keyword kw">false</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">endSpeced</span>) <span class="ruby-operator">||</span>
|
2249
2320
|
306: (<span class="ruby-identifier">hasDependencies</span>(<span class="ruby-keyword kw">true</span>) <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">startSpeced</span>)) <span class="ruby-operator">&&</span>
|
2250
|
-
307: <span class="ruby-identifier">durationSpecs</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">
|
2321
|
+
307: <span class="ruby-identifier">durationSpecs</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@property</span>.<span class="ruby-identifier">provided</span>(<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>)
|
2251
2322
|
308: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'task_overspecified'</span>,
|
2252
2323
|
309: <span class="ruby-node">"Task #{@property.fullId} has a start, an end and a "</span> <span class="ruby-operator">+</span>
|
2253
2324
|
310: <span class="ruby-value str">'duration specification.'</span>)
|
@@ -2273,7 +2344,7 @@ consistency checks on the task.
|
|
2273
2344
|
|
2274
2345
|
|
2275
2346
|
<div id="prepare-cheduling-method" class="method-detail ">
|
2276
|
-
<a name="
|
2347
|
+
<a name="method-i-prepareScheduling"></a>
|
2277
2348
|
|
2278
2349
|
<div class="method-heading">
|
2279
2350
|
|
@@ -2373,7 +2444,7 @@ scheduling.
|
|
2373
2444
|
|
2374
2445
|
|
2375
2446
|
<div id="propagate-ate-method" class="method-detail ">
|
2376
|
-
<a name="
|
2447
|
+
<a name="method-i-propagateDate"></a>
|
2377
2448
|
|
2378
2449
|
<div class="method-heading">
|
2379
2450
|
|
@@ -2419,29 +2490,33 @@ that have a direct dependency to this end of the task.
|
|
2419
2490
|
842: <span class="ruby-identifier">propagateDate</span>(<span class="ruby-identifier">a</span>(<span class="ruby-identifier">thisEnd</span>), <span class="ruby-operator">!</span><span class="ruby-identifier">atEnd</span>)
|
2420
2491
|
843: <span class="ruby-keyword kw">end</span>
|
2421
2492
|
844: <span class="ruby-constant">Log</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"Milestone #{@property.fullId}: #{a('start')} -> #{a('end')}"</span>
|
2422
|
-
845: <span class="ruby-keyword kw">end</span>
|
2423
|
-
846:
|
2424
|
-
847:
|
2425
|
-
848:
|
2426
|
-
849:
|
2427
|
-
850:
|
2428
|
-
851: <span class="ruby-
|
2429
|
-
852:
|
2430
|
-
853:
|
2431
|
-
854:
|
2432
|
-
855: <span class="ruby-
|
2433
|
-
856:
|
2434
|
-
857: <span class="ruby-
|
2435
|
-
858:
|
2436
|
-
859:
|
2437
|
-
860:
|
2438
|
-
861:
|
2439
|
-
862: <span class="ruby-keyword kw">
|
2440
|
-
863:
|
2441
|
-
864:
|
2442
|
-
865:
|
2443
|
-
866: <span class="ruby-
|
2444
|
-
867:
|
2493
|
+
845: <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'scheduled'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>) <span class="ruby-operator">&&</span>
|
2494
|
+
846: <span class="ruby-operator">!</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'length'</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duration'</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'effort'</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span>
|
2495
|
+
847: <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'allocate'</span>).<span class="ruby-identifier">empty?</span>)
|
2496
|
+
848: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-keyword kw">true</span>
|
2497
|
+
849: <span class="ruby-keyword kw">end</span>
|
2498
|
+
850:
|
2499
|
+
851: <span class="ruby-comment cmt"># Propagate date to all dependent tasks.</span>
|
2500
|
+
852: <span class="ruby-identifier">a</span>(<span class="ruby-identifier">thisEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'preds'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span><span class="ruby-operator">|</span>
|
2501
|
+
853: <span class="ruby-identifier">propagateDateToDep</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span>)
|
2502
|
+
854: <span class="ruby-keyword kw">end</span>
|
2503
|
+
855: <span class="ruby-identifier">a</span>(<span class="ruby-identifier">thisEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'succs'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span><span class="ruby-operator">|</span>
|
2504
|
+
856: <span class="ruby-identifier">propagateDateToDep</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span>)
|
2505
|
+
857: <span class="ruby-keyword kw">end</span>
|
2506
|
+
858:
|
2507
|
+
859: <span class="ruby-comment cmt"># Propagate date to sub tasks which have only an implicit</span>
|
2508
|
+
860: <span class="ruby-comment cmt"># dependency on the parent task and no other criteria for this end of</span>
|
2509
|
+
861: <span class="ruby-comment cmt"># the task.</span>
|
2510
|
+
862: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
|
2511
|
+
863: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">canInheritDate?</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">atEnd</span>)
|
2512
|
+
864: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">propagateDate</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">date</span>, <span class="ruby-identifier">atEnd</span>)
|
2513
|
+
865: <span class="ruby-keyword kw">end</span>
|
2514
|
+
866: <span class="ruby-keyword kw">end</span>
|
2515
|
+
867:
|
2516
|
+
868: <span class="ruby-comment cmt"># The date propagation might have completed the date set of the enclosing</span>
|
2517
|
+
869: <span class="ruby-comment cmt"># containter task. If so, we can schedule it as well.</span>
|
2518
|
+
870: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">scheduleContainer</span>(<span class="ruby-ivar">@scenarioIdx</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
|
2519
|
+
871: <span class="ruby-keyword kw">end</span></pre>
|
2445
2520
|
</div>
|
2446
2521
|
|
2447
2522
|
</div>
|
@@ -2453,7 +2528,7 @@ that have a direct dependency to this end of the task.
|
|
2453
2528
|
|
2454
2529
|
|
2455
2530
|
<div id="propagate-nitial-alues-method" class="method-detail ">
|
2456
|
-
<a name="
|
2531
|
+
<a name="method-i-propagateInitialValues"></a>
|
2457
2532
|
|
2458
2533
|
<div class="method-heading">
|
2459
2534
|
|
@@ -2503,7 +2578,7 @@ that have a direct dependency to this end of the task.
|
|
2503
2578
|
|
2504
2579
|
|
2505
2580
|
<div id="query-complete-method" class="method-detail ">
|
2506
|
-
<a name="
|
2581
|
+
<a name="method-i-query_complete"></a>
|
2507
2582
|
|
2508
2583
|
<div class="method-heading">
|
2509
2584
|
|
@@ -2522,15 +2597,15 @@ that have a direct dependency to this end of the task.
|
|
2522
2597
|
<div class="method-source-code"
|
2523
2598
|
id="query-complete-source">
|
2524
2599
|
<pre>
|
2525
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2526
|
-
|
2527
|
-
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2531
|
-
|
2532
|
-
|
2533
|
-
|
2600
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1100</span>
|
2601
|
+
1100: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_complete</span>(<span class="ruby-identifier">query</span>)
|
2602
|
+
1101: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">leaf?</span>
|
2603
|
+
1102: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">complete</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'complete'</span>).<span class="ruby-identifier">to_i</span>
|
2604
|
+
1103: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-node">"#{complete}%"</span>
|
2605
|
+
1104: <span class="ruby-keyword kw">else</span>
|
2606
|
+
1105: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">''</span>
|
2607
|
+
1106: <span class="ruby-keyword kw">end</span>
|
2608
|
+
1107: <span class="ruby-keyword kw">end</span></pre>
|
2534
2609
|
</div>
|
2535
2610
|
|
2536
2611
|
</div>
|
@@ -2542,7 +2617,7 @@ that have a direct dependency to this end of the task.
|
|
2542
2617
|
|
2543
2618
|
|
2544
2619
|
<div id="query-cost-method" class="method-detail ">
|
2545
|
-
<a name="
|
2620
|
+
<a name="method-i-query_cost"></a>
|
2546
2621
|
|
2547
2622
|
<div class="method-heading">
|
2548
2623
|
|
@@ -2566,17 +2641,17 @@ cost directly generated by the resource is taken into account.
|
|
2566
2641
|
<div class="method-source-code"
|
2567
2642
|
id="query-cost-source">
|
2568
2643
|
<pre>
|
2569
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2570
|
-
|
2571
|
-
|
2572
|
-
|
2573
|
-
|
2574
|
-
|
2575
|
-
|
2576
|
-
|
2577
|
-
|
2578
|
-
|
2579
|
-
|
2644
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1112</span>
|
2645
|
+
1112: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_cost</span>(<span class="ruby-identifier">query</span>)
|
2646
|
+
1113: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">query</span>.<span class="ruby-identifier">costAccount</span>
|
2647
|
+
1114: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">cost</span> =
|
2648
|
+
1115: <span class="ruby-identifier">turnover</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">costAccount</span>,
|
2649
|
+
1116: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scopeProperty</span>)
|
2650
|
+
1117: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">currencyFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">cost</span>)
|
2651
|
+
1118: <span class="ruby-keyword kw">else</span>
|
2652
|
+
1119: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'No cost account'</span>
|
2653
|
+
1120: <span class="ruby-keyword kw">end</span>
|
2654
|
+
1121: <span class="ruby-keyword kw">end</span></pre>
|
2580
2655
|
</div>
|
2581
2656
|
|
2582
2657
|
</div>
|
@@ -2588,7 +2663,7 @@ cost directly generated by the resource is taken into account.
|
|
2588
2663
|
|
2589
2664
|
|
2590
2665
|
<div id="query-duration-method" class="method-detail ">
|
2591
|
-
<a name="
|
2666
|
+
<a name="method-i-query_duration"></a>
|
2592
2667
|
|
2593
2668
|
<div class="method-heading">
|
2594
2669
|
|
@@ -2610,12 +2685,12 @@ tasks. Also for those who did not have a ‘duration’ attribute.
|
|
2610
2685
|
<div class="method-source-code"
|
2611
2686
|
id="query-duration-source">
|
2612
2687
|
<pre>
|
2613
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2614
|
-
|
2615
|
-
|
2616
|
-
|
2617
|
-
|
2618
|
-
|
2688
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1125</span>
|
2689
|
+
1125: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_duration</span>(<span class="ruby-identifier">query</span>)
|
2690
|
+
1126: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">duration</span> =
|
2691
|
+
1127: (<span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>) <span class="ruby-operator">-</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>)) <span class="ruby-operator">/</span> (<span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span>)
|
2692
|
+
1128: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scaleDuration</span>(<span class="ruby-identifier">duration</span>)
|
2693
|
+
1129: <span class="ruby-keyword kw">end</span></pre>
|
2619
2694
|
</div>
|
2620
2695
|
|
2621
2696
|
</div>
|
@@ -2627,7 +2702,7 @@ tasks. Also for those who did not have a ‘duration’ attribute.
|
|
2627
2702
|
|
2628
2703
|
|
2629
2704
|
<div id="query-effort-method" class="method-detail ">
|
2630
|
-
<a name="
|
2705
|
+
<a name="method-i-query_effort"></a>
|
2631
2706
|
|
2632
2707
|
<div class="method-heading">
|
2633
2708
|
|
@@ -2650,12 +2725,12 @@ effort allocated for this resource is taken into account.
|
|
2650
2725
|
<div class="method-source-code"
|
2651
2726
|
id="query-effort-source">
|
2652
2727
|
<pre>
|
2653
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2654
|
-
|
2655
|
-
|
2656
|
-
|
2657
|
-
|
2658
|
-
|
2728
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1161</span>
|
2729
|
+
1161: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_effort</span>(<span class="ruby-identifier">query</span>)
|
2730
|
+
1162: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">work</span> =
|
2731
|
+
1163: <span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scopeProperty</span>)
|
2732
|
+
1164: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scaleLoad</span>(<span class="ruby-identifier">work</span>)
|
2733
|
+
1165: <span class="ruby-keyword kw">end</span></pre>
|
2659
2734
|
</div>
|
2660
2735
|
|
2661
2736
|
</div>
|
@@ -2667,7 +2742,7 @@ effort allocated for this resource is taken into account.
|
|
2667
2742
|
|
2668
2743
|
|
2669
2744
|
<div id="query-effortdone-method" class="method-detail ">
|
2670
|
-
<a name="
|
2745
|
+
<a name="method-i-query_effortdone"></a>
|
2671
2746
|
|
2672
2747
|
<div class="method-heading">
|
2673
2748
|
|
@@ -2691,15 +2766,15 @@ taken into account.
|
|
2691
2766
|
<div class="method-source-code"
|
2692
2767
|
id="query-effortdone-source">
|
2693
2768
|
<pre>
|
2694
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2695
|
-
|
2696
|
-
|
2697
|
-
|
2698
|
-
|
2699
|
-
|
2700
|
-
|
2701
|
-
|
2702
|
-
|
2769
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1134</span>
|
2770
|
+
1134: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_effortdone</span>(<span class="ruby-identifier">query</span>)
|
2771
|
+
1135: <span class="ruby-comment cmt"># For this query, we always override the query period.</span>
|
2772
|
+
1136: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">effort</span> =
|
2773
|
+
1137: <span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>]),
|
2774
|
+
1138: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>]),
|
2775
|
+
1139: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scopeProperty</span>)
|
2776
|
+
1140: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scaleLoad</span>(<span class="ruby-identifier">effort</span>)
|
2777
|
+
1141: <span class="ruby-keyword kw">end</span></pre>
|
2703
2778
|
</div>
|
2704
2779
|
|
2705
2780
|
</div>
|
@@ -2711,7 +2786,7 @@ taken into account.
|
|
2711
2786
|
|
2712
2787
|
|
2713
2788
|
<div id="query-effortleft-method" class="method-detail ">
|
2714
|
-
<a name="
|
2789
|
+
<a name="method-i-query_effortleft"></a>
|
2715
2790
|
|
2716
2791
|
<div class="method-heading">
|
2717
2792
|
|
@@ -2735,17 +2810,17 @@ taken into account.
|
|
2735
2810
|
<div class="method-source-code"
|
2736
2811
|
id="query-effortleft-source">
|
2737
2812
|
<pre>
|
2738
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2739
|
-
|
2740
|
-
|
2741
|
-
|
2742
|
-
|
2743
|
-
|
2744
|
-
|
2745
|
-
|
2746
|
-
|
2747
|
-
|
2748
|
-
|
2813
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1147</span>
|
2814
|
+
1147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_effortleft</span>(<span class="ruby-identifier">query</span>)
|
2815
|
+
1148: <span class="ruby-comment cmt"># For this query, we always override the query period.</span>
|
2816
|
+
1149: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">start</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>]
|
2817
|
+
1150: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">end</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>]
|
2818
|
+
1151: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">effort</span> =
|
2819
|
+
1152: <span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>]),
|
2820
|
+
1153: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>]),
|
2821
|
+
1154: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scopeProperty</span>)
|
2822
|
+
1155: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scaleLoad</span>(<span class="ruby-identifier">effort</span>)
|
2823
|
+
1156: <span class="ruby-keyword kw">end</span></pre>
|
2749
2824
|
</div>
|
2750
2825
|
|
2751
2826
|
</div>
|
@@ -2757,7 +2832,7 @@ taken into account.
|
|
2757
2832
|
|
2758
2833
|
|
2759
2834
|
<div id="query-followers-method" class="method-detail ">
|
2760
|
-
<a name="
|
2835
|
+
<a name="method-i-query_followers"></a>
|
2761
2836
|
|
2762
2837
|
<div class="method-heading">
|
2763
2838
|
|
@@ -2776,38 +2851,38 @@ taken into account.
|
|
2776
2851
|
<div class="method-source-code"
|
2777
2852
|
id="query-followers-source">
|
2778
2853
|
<pre>
|
2779
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2780
|
-
|
2781
|
-
|
2782
|
-
|
2783
|
-
|
2784
|
-
|
2785
|
-
|
2786
|
-
|
2787
|
-
|
2788
|
-
|
2789
|
-
|
2790
|
-
|
2791
|
-
|
2792
|
-
|
2793
|
-
|
2794
|
-
|
2795
|
-
|
2796
|
-
|
2797
|
-
|
2798
|
-
|
2799
|
-
|
2800
|
-
|
2801
|
-
|
2802
|
-
|
2803
|
-
|
2804
|
-
|
2805
|
-
|
2806
|
-
|
2807
|
-
|
2808
|
-
|
2809
|
-
|
2810
|
-
|
2854
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1167</span>
|
2855
|
+
1167: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_followers</span>(<span class="ruby-identifier">query</span>)
|
2856
|
+
1168: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
|
2857
|
+
1169:
|
2858
|
+
1170: <span class="ruby-comment cmt"># First gather the task that depend on the start of this task.</span>
|
2859
|
+
1171: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'startsuccs'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span><span class="ruby-operator">|</span>
|
2860
|
+
1172: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"* <nowiki>#{task.name}</nowiki> (#{task.fullId}) "</span>
|
2861
|
+
1173: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">onEnd</span>
|
2862
|
+
1174: <span class="ruby-identifier">taskEnd</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">timeFormat</span>)
|
2863
|
+
1175: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"[->] #{taskEnd}"</span>
|
2864
|
+
1176: <span class="ruby-keyword kw">else</span>
|
2865
|
+
1177: <span class="ruby-identifier">taskStart</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">timeFormat</span>)
|
2866
|
+
1178: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"[->[ #{taskStart}"</span>
|
2867
|
+
1179: <span class="ruby-keyword kw">end</span>
|
2868
|
+
1180: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span>
|
2869
|
+
1181: <span class="ruby-keyword kw">end</span>
|
2870
|
+
1182: <span class="ruby-comment cmt"># Than add the tasks that depend on the end of this task.</span>
|
2871
|
+
1183: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'endsuccs'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span><span class="ruby-operator">|</span>
|
2872
|
+
1184: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"* <nowiki>#{task.name}</nowiki> (#{task.fullId}) "</span>
|
2873
|
+
1185: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">onEnd</span>
|
2874
|
+
1186: <span class="ruby-identifier">taskEnd</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">timeFormat</span>)
|
2875
|
+
1187: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"]->] #{taskEnd}"</span>
|
2876
|
+
1188: <span class="ruby-keyword kw">else</span>
|
2877
|
+
1189: <span class="ruby-identifier">taskStart</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">timeFormat</span>)
|
2878
|
+
1190: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"]->[ #{taskStart}"</span>
|
2879
|
+
1191: <span class="ruby-keyword kw">end</span>
|
2880
|
+
1192: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span>
|
2881
|
+
1193: <span class="ruby-keyword kw">end</span>
|
2882
|
+
1194:
|
2883
|
+
1195: <span class="ruby-identifier">rText</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">str</span>)
|
2884
|
+
1196: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rText</span>.<span class="ruby-identifier">generateIntermediateFormat</span>
|
2885
|
+
1197: <span class="ruby-keyword kw">end</span></pre>
|
2811
2886
|
</div>
|
2812
2887
|
|
2813
2888
|
</div>
|
@@ -2819,7 +2894,7 @@ taken into account.
|
|
2819
2894
|
|
2820
2895
|
|
2821
2896
|
<div id="query-precursors-method" class="method-detail ">
|
2822
|
-
<a name="
|
2897
|
+
<a name="method-i-query_precursors"></a>
|
2823
2898
|
|
2824
2899
|
<div class="method-heading">
|
2825
2900
|
|
@@ -2838,38 +2913,38 @@ taken into account.
|
|
2838
2913
|
<div class="method-source-code"
|
2839
2914
|
id="query-precursors-source">
|
2840
2915
|
<pre>
|
2841
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2842
|
-
|
2843
|
-
|
2844
|
-
|
2845
|
-
|
2846
|
-
|
2847
|
-
|
2848
|
-
|
2849
|
-
|
2850
|
-
|
2851
|
-
|
2852
|
-
|
2853
|
-
|
2854
|
-
|
2855
|
-
|
2856
|
-
|
2857
|
-
|
2858
|
-
|
2859
|
-
|
2860
|
-
|
2861
|
-
|
2862
|
-
|
2863
|
-
|
2864
|
-
|
2865
|
-
|
2866
|
-
|
2867
|
-
|
2868
|
-
|
2869
|
-
|
2870
|
-
|
2871
|
-
|
2872
|
-
|
2916
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1199</span>
|
2917
|
+
1199: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_precursors</span>(<span class="ruby-identifier">query</span>)
|
2918
|
+
1200: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
|
2919
|
+
1201:
|
2920
|
+
1202: <span class="ruby-comment cmt"># First gather the task that depend on the start of this task.</span>
|
2921
|
+
1203: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'startpreds'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span><span class="ruby-operator">|</span>
|
2922
|
+
1204: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"* <nowiki>#{task.name}</nowiki> (#{task.fullId}) "</span>
|
2923
|
+
1205: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">onEnd</span>
|
2924
|
+
1206: <span class="ruby-identifier">taskEnd</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">timeFormat</span>)
|
2925
|
+
1207: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"]->] #{taskEnd}"</span>
|
2926
|
+
1208: <span class="ruby-keyword kw">else</span>
|
2927
|
+
1209: <span class="ruby-identifier">taskStart</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">timeFormat</span>)
|
2928
|
+
1210: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"[->[ #{taskStart}"</span>
|
2929
|
+
1211: <span class="ruby-keyword kw">end</span>
|
2930
|
+
1212: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span>
|
2931
|
+
1213: <span class="ruby-keyword kw">end</span>
|
2932
|
+
1214: <span class="ruby-comment cmt"># Than add the tasks that depend on the end of this task.</span>
|
2933
|
+
1215: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'endpreds'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span><span class="ruby-operator">|</span>
|
2934
|
+
1216: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"* <nowiki>#{task.name}</nowiki> (#{task.fullId}) "</span>
|
2935
|
+
1217: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">onEnd</span>
|
2936
|
+
1218: <span class="ruby-identifier">taskEnd</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">timeFormat</span>)
|
2937
|
+
1219: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"[->] #{taskEnd}"</span>
|
2938
|
+
1220: <span class="ruby-keyword kw">else</span>
|
2939
|
+
1221: <span class="ruby-identifier">taskStart</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">timeFormat</span>)
|
2940
|
+
1222: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"]->[ #{taskStart}"</span>
|
2941
|
+
1223: <span class="ruby-keyword kw">end</span>
|
2942
|
+
1224: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span>
|
2943
|
+
1225: <span class="ruby-keyword kw">end</span>
|
2944
|
+
1226:
|
2945
|
+
1227: <span class="ruby-identifier">rText</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">str</span>)
|
2946
|
+
1228: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rText</span>.<span class="ruby-identifier">generateIntermediateFormat</span>
|
2947
|
+
1229: <span class="ruby-keyword kw">end</span></pre>
|
2873
2948
|
</div>
|
2874
2949
|
|
2875
2950
|
</div>
|
@@ -2881,7 +2956,7 @@ taken into account.
|
|
2881
2956
|
|
2882
2957
|
|
2883
2958
|
<div id="query-resources-method" class="method-detail ">
|
2884
|
-
<a name="
|
2959
|
+
<a name="method-i-query_resources"></a>
|
2885
2960
|
|
2886
2961
|
<div class="method-heading">
|
2887
2962
|
|
@@ -2903,19 +2978,19 @@ report time frame.
|
|
2903
2978
|
<div class="method-source-code"
|
2904
2979
|
id="query-resources-source">
|
2905
2980
|
<pre>
|
2906
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2907
|
-
|
2908
|
-
|
2909
|
-
|
2910
|
-
|
2911
|
-
|
2912
|
-
|
2913
|
-
|
2914
|
-
|
2915
|
-
|
2916
|
-
|
2917
|
-
|
2918
|
-
|
2981
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1233</span>
|
2982
|
+
1233: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_resources</span>(<span class="ruby-identifier">query</span>)
|
2983
|
+
1234: <span class="ruby-identifier">list</span> = <span class="ruby-value str">''</span>
|
2984
|
+
1235: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'assignedresources'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
|
2985
|
+
1236: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">getAllocatedTime</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">resource</span>) <span class="ruby-operator">></span> <span class="ruby-value">0.0</span>
|
2986
|
+
1237: <span class="ruby-identifier">list</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">list</span>.<span class="ruby-identifier">empty?</span>
|
2987
|
+
1238: <span class="ruby-identifier">list</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"#{resource.name} (#{resource.fullId})"</span>
|
2988
|
+
1239: <span class="ruby-keyword kw">end</span>
|
2989
|
+
1240: <span class="ruby-keyword kw">end</span>
|
2990
|
+
1241: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">list</span>
|
2991
|
+
1242: <span class="ruby-identifier">rText</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">list</span>)
|
2992
|
+
1243: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rText</span>.<span class="ruby-identifier">generateIntermediateFormat</span>
|
2993
|
+
1244: <span class="ruby-keyword kw">end</span></pre>
|
2919
2994
|
</div>
|
2920
2995
|
|
2921
2996
|
</div>
|
@@ -2927,7 +3002,7 @@ report time frame.
|
|
2927
3002
|
|
2928
3003
|
|
2929
3004
|
<div id="query-revenue-method" class="method-detail ">
|
2930
|
-
<a name="
|
3005
|
+
<a name="method-i-query_revenue"></a>
|
2931
3006
|
|
2932
3007
|
<div class="method-heading">
|
2933
3008
|
|
@@ -2951,17 +3026,17 @@ revenue directly generated by the resource is taken into account.
|
|
2951
3026
|
<div class="method-source-code"
|
2952
3027
|
id="query-revenue-source">
|
2953
3028
|
<pre>
|
2954
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2955
|
-
|
2956
|
-
|
2957
|
-
|
2958
|
-
|
2959
|
-
|
2960
|
-
|
2961
|
-
|
2962
|
-
|
2963
|
-
|
2964
|
-
|
3029
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1249</span>
|
3030
|
+
1249: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_revenue</span>(<span class="ruby-identifier">query</span>)
|
3031
|
+
1250: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">query</span>.<span class="ruby-identifier">revenueAccount</span>
|
3032
|
+
1251: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">sortable</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">numerical</span> = <span class="ruby-identifier">revenue</span> =
|
3033
|
+
1252: <span class="ruby-identifier">turnover</span>(<span class="ruby-identifier">query</span>.<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">query</span>.<span class="ruby-identifier">revenueAccount</span>,
|
3034
|
+
1253: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">scopeProperty</span>)
|
3035
|
+
1254: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">currencyFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">revenue</span>)
|
3036
|
+
1255: <span class="ruby-keyword kw">else</span>
|
3037
|
+
1256: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">string</span> = <span class="ruby-value str">'No revenue account'</span>
|
3038
|
+
1257: <span class="ruby-keyword kw">end</span>
|
3039
|
+
1258: <span class="ruby-keyword kw">end</span></pre>
|
2965
3040
|
</div>
|
2966
3041
|
|
2967
3042
|
</div>
|
@@ -2973,7 +3048,7 @@ revenue directly generated by the resource is taken into account.
|
|
2973
3048
|
|
2974
3049
|
|
2975
3050
|
<div id="query-targets-method" class="method-detail ">
|
2976
|
-
<a name="
|
3051
|
+
<a name="method-i-query_targets"></a>
|
2977
3052
|
|
2978
3053
|
<div class="method-heading">
|
2979
3054
|
|
@@ -2992,23 +3067,23 @@ revenue directly generated by the resource is taken into account.
|
|
2992
3067
|
<div class="method-source-code"
|
2993
3068
|
id="query-targets-source">
|
2994
3069
|
<pre>
|
2995
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
2996
|
-
|
2997
|
-
|
2998
|
-
|
2999
|
-
|
3000
|
-
|
3001
|
-
|
3002
|
-
|
3003
|
-
|
3004
|
-
|
3005
|
-
|
3006
|
-
|
3007
|
-
|
3008
|
-
|
3009
|
-
|
3010
|
-
|
3011
|
-
|
3070
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1260</span>
|
3071
|
+
1260: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query_targets</span>(<span class="ruby-identifier">query</span>)
|
3072
|
+
1261: <span class="ruby-identifier">targetList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>, <span class="ruby-keyword kw">false</span>)
|
3073
|
+
1262: <span class="ruby-identifier">targets</span>(<span class="ruby-identifier">targetList</span>)
|
3074
|
+
1263: <span class="ruby-identifier">targetList</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-ivar">@property</span>)
|
3075
|
+
1264: <span class="ruby-identifier">targetList</span>.<span class="ruby-identifier">setSorting</span>([[<span class="ruby-value str">'start'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-ivar">@scenarioIdx</span>],
|
3076
|
+
1265: [<span class="ruby-value str">'seqno'</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-value">1</span> ]])
|
3077
|
+
1266: <span class="ruby-identifier">targetList</span>.<span class="ruby-identifier">sort!</span>
|
3078
|
+
1267:
|
3079
|
+
1268: <span class="ruby-identifier">res</span> = <span class="ruby-value str">''</span>
|
3080
|
+
1269: <span class="ruby-identifier">targetList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
|
3081
|
+
1270: <span class="ruby-identifier">date</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">to_s</span>(<span class="ruby-ivar">@property</span>.<span class="ruby-identifier">project</span>[<span class="ruby-value str">'timeFormat'</span>])
|
3082
|
+
1271: <span class="ruby-identifier">res</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"# #{task.name} (#{task.fullId}) #{date}\n"</span>
|
3083
|
+
1272: <span class="ruby-keyword kw">end</span>
|
3084
|
+
1273: <span class="ruby-identifier">rText</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">res</span>)
|
3085
|
+
1274: <span class="ruby-identifier">query</span>.<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rText</span>.<span class="ruby-identifier">generateIntermediateFormat</span>
|
3086
|
+
1275: <span class="ruby-keyword kw">end</span></pre>
|
3012
3087
|
</div>
|
3013
3088
|
|
3014
3089
|
</div>
|
@@ -3020,7 +3095,7 @@ revenue directly generated by the resource is taken into account.
|
|
3020
3095
|
|
3021
3096
|
|
3022
3097
|
<div id="ready-or-cheduling--method" class="method-detail ">
|
3023
|
-
<a name="
|
3098
|
+
<a name="method-i-readyForScheduling%3F"></a>
|
3024
3099
|
|
3025
3100
|
<div class="method-heading">
|
3026
3101
|
|
@@ -3065,7 +3140,7 @@ least one specified end date and a duration criteria or the other end date.
|
|
3065
3140
|
|
3066
3141
|
|
3067
3142
|
<div id="reset-oop-lags-method" class="method-detail ">
|
3068
|
-
<a name="
|
3143
|
+
<a name="method-i-resetLoopFlags"></a>
|
3069
3144
|
|
3070
3145
|
<div class="method-heading">
|
3071
3146
|
|
@@ -3099,7 +3174,7 @@ least one specified end date and a duration criteria or the other end date.
|
|
3099
3174
|
|
3100
3175
|
|
3101
3176
|
<div id="schedule-method" class="method-detail ">
|
3102
|
-
<a name="
|
3177
|
+
<a name="method-i-schedule"></a>
|
3103
3178
|
|
3104
3179
|
<div class="method-heading">
|
3105
3180
|
|
@@ -3166,7 +3241,7 @@ now.
|
|
3166
3241
|
|
3167
3242
|
|
3168
3243
|
<div id="schedule-ontainer-method" class="method-detail ">
|
3169
|
-
<a name="
|
3244
|
+
<a name="method-i-scheduleContainer"></a>
|
3170
3245
|
|
3171
3246
|
<div class="method-heading">
|
3172
3247
|
|
@@ -3188,44 +3263,46 @@ the operation if any of the child tasks are not yet scheduled.
|
|
3188
3263
|
<div class="method-source-code"
|
3189
3264
|
id="schedule-ontainer-source">
|
3190
3265
|
<pre>
|
3191
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3192
|
-
|
3193
|
-
|
3194
|
-
|
3195
|
-
|
3196
|
-
|
3197
|
-
932:
|
3198
|
-
933: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
|
3199
|
-
934: <span class="ruby-comment cmt"># Abort if a child has not yet been scheduled.</span>
|
3200
|
-
935: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
3266
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 931</span>
|
3267
|
+
931: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleContainer</span>
|
3268
|
+
932: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scheduled'</span>) <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
|
3269
|
+
933:
|
3270
|
+
934: <span class="ruby-identifier">nStart</span> = <span class="ruby-keyword kw">nil</span>
|
3271
|
+
935: <span class="ruby-identifier">nEnd</span> = <span class="ruby-keyword kw">nil</span>
|
3201
3272
|
936:
|
3202
|
-
937:
|
3203
|
-
938:
|
3204
|
-
939: <span class="ruby-keyword kw">
|
3205
|
-
940:
|
3206
|
-
941:
|
3207
|
-
942:
|
3208
|
-
943:
|
3209
|
-
944:
|
3210
|
-
945:
|
3211
|
-
946:
|
3212
|
-
947: <span class="ruby-
|
3213
|
-
948:
|
3214
|
-
949: <span class="ruby-
|
3215
|
-
950:
|
3216
|
-
951:
|
3217
|
-
952:
|
3218
|
-
953:
|
3219
|
-
954:
|
3220
|
-
955:
|
3221
|
-
956:
|
3222
|
-
957:
|
3223
|
-
958:
|
3224
|
-
959: <span class="ruby-
|
3225
|
-
960:
|
3226
|
-
961: <span class="ruby-
|
3227
|
-
962: <span class="ruby-
|
3228
|
-
963:
|
3273
|
+
937: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
|
3274
|
+
938: <span class="ruby-comment cmt"># Abort if a child has not yet been scheduled.</span>
|
3275
|
+
939: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
3276
|
+
940:
|
3277
|
+
941: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nStart</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator"><</span> <span class="ruby-identifier">nStart</span>
|
3278
|
+
942: <span class="ruby-identifier">nStart</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
3279
|
+
943: <span class="ruby-keyword kw">end</span>
|
3280
|
+
944: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nEnd</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">></span> <span class="ruby-identifier">nEnd</span>
|
3281
|
+
945: <span class="ruby-identifier">nEnd</span> = <span class="ruby-identifier">task</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
3282
|
+
946: <span class="ruby-keyword kw">end</span>
|
3283
|
+
947: <span class="ruby-keyword kw">end</span>
|
3284
|
+
948:
|
3285
|
+
949: <span class="ruby-identifier">startSet</span> = <span class="ruby-identifier">endSet</span> = <span class="ruby-keyword kw">false</span>
|
3286
|
+
950: <span class="ruby-comment cmt"># Propagate the dates to other dependent tasks.</span>
|
3287
|
+
951: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>) <span class="ruby-operator">></span> <span class="ruby-identifier">nStart</span>
|
3288
|
+
952: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-identifier">nStart</span>
|
3289
|
+
953: <span class="ruby-identifier">startSet</span> = <span class="ruby-keyword kw">true</span>
|
3290
|
+
954: <span class="ruby-keyword kw">end</span>
|
3291
|
+
955: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>) <span class="ruby-operator"><</span> <span class="ruby-identifier">nEnd</span>
|
3292
|
+
956: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-identifier">nEnd</span>
|
3293
|
+
957: <span class="ruby-identifier">endSet</span> = <span class="ruby-keyword kw">true</span>
|
3294
|
+
958: <span class="ruby-keyword kw">end</span>
|
3295
|
+
959: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)
|
3296
|
+
960: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Start (#{a('start')}) and end (#{a('end')}) must be set"</span>
|
3297
|
+
961: <span class="ruby-keyword kw">end</span>
|
3298
|
+
962: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-keyword kw">true</span>
|
3299
|
+
963: <span class="ruby-constant">Log</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"Container task #{@property.fullId}: #{a('start')} -> #{a('end')}"</span>
|
3300
|
+
964:
|
3301
|
+
965: <span class="ruby-comment cmt"># If we have modified the start or end date, we need to communicate this</span>
|
3302
|
+
966: <span class="ruby-comment cmt"># new date to surrounding tasks.</span>
|
3303
|
+
967: <span class="ruby-identifier">propagateDate</span>(<span class="ruby-identifier">nStart</span>, <span class="ruby-keyword kw">false</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">startSet</span>
|
3304
|
+
968: <span class="ruby-identifier">propagateDate</span>(<span class="ruby-identifier">nEnd</span>, <span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">endSet</span>
|
3305
|
+
969: <span class="ruby-keyword kw">end</span></pre>
|
3229
3306
|
</div>
|
3230
3307
|
|
3231
3308
|
</div>
|
@@ -3243,7 +3320,7 @@ the operation if any of the child tasks are not yet scheduled.
|
|
3243
3320
|
|
3244
3321
|
|
3245
3322
|
<div id="book-ookings-method" class="method-detail ">
|
3246
|
-
<a name="
|
3323
|
+
<a name="method-i-bookBookings"></a>
|
3247
3324
|
|
3248
3325
|
<div class="method-heading">
|
3249
3326
|
|
@@ -3268,67 +3345,67 @@ href="Interval.html">Interval</a>.
|
|
3268
3345
|
<div class="method-source-code"
|
3269
3346
|
id="book-ookings-source">
|
3270
3347
|
<pre>
|
3271
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3272
|
-
|
3273
|
-
|
3274
|
-
|
3275
|
-
|
3276
|
-
|
3277
|
-
|
3278
|
-
|
3279
|
-
|
3280
|
-
|
3281
|
-
|
3282
|
-
|
3283
|
-
|
3284
|
-
|
3285
|
-
|
3286
|
-
|
3287
|
-
|
3288
|
-
|
3289
|
-
|
3290
|
-
|
3291
|
-
|
3292
|
-
|
3293
|
-
|
3294
|
-
|
3295
|
-
|
3296
|
-
|
3297
|
-
|
3298
|
-
|
3299
|
-
|
3300
|
-
|
3301
|
-
|
3302
|
-
|
3303
|
-
|
3304
|
-
|
3305
|
-
|
3306
|
-
|
3307
|
-
|
3308
|
-
|
3309
|
-
|
3310
|
-
|
3311
|
-
|
3312
|
-
|
3313
|
-
|
3314
|
-
|
3315
|
-
|
3316
|
-
|
3317
|
-
|
3318
|
-
|
3319
|
-
|
3320
|
-
|
3321
|
-
|
3322
|
-
|
3323
|
-
|
3324
|
-
|
3325
|
-
|
3326
|
-
|
3327
|
-
|
3328
|
-
|
3329
|
-
|
3330
|
-
|
3331
|
-
|
3348
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1647</span>
|
3349
|
+
1647: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">bookBookings</span>
|
3350
|
+
1648: <span class="ruby-identifier">scheduled</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scheduled'</span>)
|
3351
|
+
1649: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'booking'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">booking</span><span class="ruby-operator">|</span>
|
3352
|
+
1650: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">resource</span>.<span class="ruby-identifier">leaf?</span>
|
3353
|
+
1651: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'booking_resource_not_leaf'</span>,
|
3354
|
+
1652: <span class="ruby-value str">"Booked resources may not be group resources"</span>, <span class="ruby-keyword kw">true</span>,
|
3355
|
+
1653: <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">sourceFileInfo</span>)
|
3356
|
+
1654: <span class="ruby-keyword kw">end</span>
|
3357
|
+
1655: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">scheduled</span>
|
3358
|
+
1656: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'booking_forward_only'</span>,
|
3359
|
+
1657: <span class="ruby-value str">"Only forward scheduled tasks may have booking statements."</span>)
|
3360
|
+
1658: <span class="ruby-keyword kw">end</span>
|
3361
|
+
1659: <span class="ruby-identifier">slotDuration</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>]
|
3362
|
+
1660: <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">intervals</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">interval</span><span class="ruby-operator">|</span>
|
3363
|
+
1661: <span class="ruby-identifier">startIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>)
|
3364
|
+
1662: <span class="ruby-identifier">date</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>
|
3365
|
+
1663: <span class="ruby-identifier">endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>)
|
3366
|
+
1664: <span class="ruby-identifier">tEnd</span> = <span class="ruby-keyword kw">nil</span>
|
3367
|
+
1665: <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">endIdx</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">idx</span><span class="ruby-operator">|</span>
|
3368
|
+
1666: <span class="ruby-identifier">tEnd</span> = <span class="ruby-identifier">date</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">slotDuration</span>
|
3369
|
+
1667: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">resource</span>.<span class="ruby-identifier">bookBooking</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">idx</span>, <span class="ruby-identifier">booking</span>)
|
3370
|
+
1668: <span class="ruby-comment cmt"># Booking was successful for this time slot.</span>
|
3371
|
+
1669: <span class="ruby-ivar">@doneEffort</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">resource</span>[<span class="ruby-value str">'efficiency'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
3372
|
+
1670:
|
3373
|
+
1671: <span class="ruby-comment cmt"># Set start and lastSlot if appropriate. The task start will be</span>
|
3374
|
+
1672: <span class="ruby-comment cmt"># set to the begining of the first booked slot. The lastSlot</span>
|
3375
|
+
1673: <span class="ruby-comment cmt"># will be set to the last booked slot</span>
|
3376
|
+
1674: <span class="ruby-ivar">@lastSlot</span> = <span class="ruby-identifier">date</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@lastSlot</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">></span> <span class="ruby-ivar">@lastSlot</span>
|
3377
|
+
1675: <span class="ruby-ivar">@tentativeEnd</span> = <span class="ruby-identifier">tEnd</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tentativeEnd</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span>
|
3378
|
+
1676: <span class="ruby-ivar">@tentativeEnd</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">tEnd</span>
|
3379
|
+
1677: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">scheduled</span> <span class="ruby-operator">&&</span> (<span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">date</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>))
|
3380
|
+
1678: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-identifier">date</span>
|
3381
|
+
1679: <span class="ruby-keyword kw">end</span>
|
3382
|
+
1680:
|
3383
|
+
1681: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'assignedresources'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">booking</span>.<span class="ruby-identifier">resource</span>)
|
3384
|
+
1682: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'assignedresources'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">booking</span>.<span class="ruby-identifier">resource</span>
|
3385
|
+
1683: <span class="ruby-keyword kw">end</span>
|
3386
|
+
1684: <span class="ruby-keyword kw">end</span>
|
3387
|
+
1685: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'length'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">isWorkingTime</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">tEnd</span>)
|
3388
|
+
1686: <span class="ruby-comment cmt"># For tasks with a 'length' we track the covered work time and</span>
|
3389
|
+
1687: <span class="ruby-comment cmt"># set the task to 'scheduled' when we have enough length.</span>
|
3390
|
+
1688: <span class="ruby-ivar">@doneLength</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
3391
|
+
1689: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">scheduled</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@doneLength</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'length'</span>)
|
3392
|
+
1690: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-identifier">tEnd</span>
|
3393
|
+
1691: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-keyword kw">true</span>
|
3394
|
+
1692: <span class="ruby-keyword kw">end</span>
|
3395
|
+
1693: <span class="ruby-keyword kw">end</span>
|
3396
|
+
1694: <span class="ruby-identifier">date</span> = <span class="ruby-identifier">tEnd</span>
|
3397
|
+
1695: <span class="ruby-keyword kw">end</span>
|
3398
|
+
1696: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duration'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@tentativeEnd</span>
|
3399
|
+
1697: <span class="ruby-ivar">@doneDuration</span> = ((<span class="ruby-ivar">@tentativeEnd</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>)) <span class="ruby-operator">/</span>
|
3400
|
+
1698: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>]).<span class="ruby-identifier">to_i</span>
|
3401
|
+
1699: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">scheduled</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@doneDuration</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duration'</span>)
|
3402
|
+
1700: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-ivar">@tentativeEnd</span>
|
3403
|
+
1701: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-keyword kw">true</span>
|
3404
|
+
1702: <span class="ruby-keyword kw">end</span>
|
3405
|
+
1703: <span class="ruby-keyword kw">end</span>
|
3406
|
+
1704: <span class="ruby-keyword kw">end</span>
|
3407
|
+
1705: <span class="ruby-keyword kw">end</span>
|
3408
|
+
1706: <span class="ruby-keyword kw">end</span></pre>
|
3332
3409
|
</div>
|
3333
3410
|
|
3334
3411
|
</div>
|
@@ -3340,7 +3417,7 @@ href="Interval.html">Interval</a>.
|
|
3340
3417
|
|
3341
3418
|
|
3342
3419
|
<div id="book-esource-method" class="method-detail ">
|
3343
|
-
<a name="
|
3420
|
+
<a name="method-i-bookResource"></a>
|
3344
3421
|
|
3345
3422
|
<div class="method-heading">
|
3346
3423
|
|
@@ -3359,43 +3436,45 @@ href="Interval.html">Interval</a>.
|
|
3359
3436
|
<div class="method-source-code"
|
3360
3437
|
id="book-esource-source">
|
3361
3438
|
<pre>
|
3362
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3363
|
-
|
3364
|
-
|
3365
|
-
|
3366
|
-
|
3367
|
-
|
3368
|
-
|
3369
|
-
|
3370
|
-
|
3371
|
-
|
3372
|
-
|
3373
|
-
|
3374
|
-
|
3375
|
-
|
3376
|
-
|
3377
|
-
|
3378
|
-
|
3379
|
-
|
3380
|
-
|
3381
|
-
|
3382
|
-
|
3383
|
-
|
3384
|
-
|
3385
|
-
|
3386
|
-
|
3387
|
-
|
3388
|
-
|
3389
|
-
|
3390
|
-
|
3391
|
-
|
3392
|
-
|
3393
|
-
|
3394
|
-
|
3395
|
-
|
3396
|
-
|
3397
|
-
|
3398
|
-
|
3439
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1593</span>
|
3440
|
+
1593: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">bookResource</span>(<span class="ruby-identifier">resource</span>, <span class="ruby-identifier">sbIdx</span>, <span class="ruby-identifier">date</span>)
|
3441
|
+
1594: <span class="ruby-identifier">booked</span> = <span class="ruby-keyword kw">false</span>
|
3442
|
+
1595: <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">allLeaves</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
|
3443
|
+
1596: <span class="ruby-comment cmt"># Prevent overbooking when multiple resources are allocated and</span>
|
3444
|
+
1597: <span class="ruby-comment cmt"># available. If the task has allocation limits we need to make sure</span>
|
3445
|
+
1598: <span class="ruby-comment cmt"># that none of them is already exceeded.</span>
|
3446
|
+
1599: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'effort'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@doneEffort</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'effort'</span>) <span class="ruby-operator">||</span>
|
3447
|
+
1600: <span class="ruby-operator">!</span><span class="ruby-identifier">limitsOk?</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">resource</span>)
|
3448
|
+
1601:
|
3449
|
+
1602: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">book</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">sbIdx</span>, <span class="ruby-ivar">@property</span>)
|
3450
|
+
1603:
|
3451
|
+
1604: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'assignedresources'</span>).<span class="ruby-identifier">empty?</span>
|
3452
|
+
1605: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>)
|
3453
|
+
1606: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">sbIdx</span>)
|
3454
|
+
1607: <span class="ruby-keyword kw">else</span>
|
3455
|
+
1608: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">sbIdx</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
|
3456
|
+
1609: <span class="ruby-keyword kw">end</span>
|
3457
|
+
1610: <span class="ruby-keyword kw">end</span>
|
3458
|
+
1611:
|
3459
|
+
1612: <span class="ruby-ivar">@tentativeStart</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">sbIdx</span>)
|
3460
|
+
1613: <span class="ruby-ivar">@tentativeEnd</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">sbIdx</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
|
3461
|
+
1614:
|
3462
|
+
1615: <span class="ruby-ivar">@doneEffort</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">r</span>[<span class="ruby-value str">'efficiency'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
|
3463
|
+
1616: <span class="ruby-comment cmt"># Limits do not take efficiency into account. Limits are usage limits,</span>
|
3464
|
+
1617: <span class="ruby-comment cmt"># not effort limits.</span>
|
3465
|
+
1618: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">limit</span><span class="ruby-operator">|</span>
|
3466
|
+
1619: <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">inc</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">resource</span>)
|
3467
|
+
1620: <span class="ruby-keyword kw">end</span>
|
3468
|
+
1621:
|
3469
|
+
1622: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'assignedresources'</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">r</span>)
|
3470
|
+
1623: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'assignedresources'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">r</span>
|
3471
|
+
1624: <span class="ruby-keyword kw">end</span>
|
3472
|
+
1625: <span class="ruby-identifier">booked</span> = <span class="ruby-keyword kw">true</span>
|
3473
|
+
1626: <span class="ruby-keyword kw">end</span>
|
3474
|
+
1627: <span class="ruby-keyword kw">end</span>
|
3475
|
+
1628:
|
3476
|
+
1629: <span class="ruby-identifier">booked</span>
|
3477
|
+
1630: <span class="ruby-keyword kw">end</span></pre>
|
3399
3478
|
</div>
|
3400
3479
|
|
3401
3480
|
</div>
|
@@ -3407,7 +3486,7 @@ href="Interval.html">Interval</a>.
|
|
3407
3486
|
|
3408
3487
|
|
3409
3488
|
<div id="book-esources-method" class="method-detail ">
|
3410
|
-
<a name="
|
3489
|
+
<a name="method-i-bookResources"></a>
|
3411
3490
|
|
3412
3491
|
<div class="method-heading">
|
3413
3492
|
|
@@ -3426,87 +3505,88 @@ href="Interval.html">Interval</a>.
|
|
3426
3505
|
<div class="method-source-code"
|
3427
3506
|
id="book-esources-source">
|
3428
3507
|
<pre>
|
3429
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3430
|
-
|
3431
|
-
|
3432
|
-
|
3433
|
-
|
3434
|
-
|
3435
|
-
|
3436
|
-
|
3437
|
-
|
3438
|
-
|
3439
|
-
|
3440
|
-
|
3441
|
-
|
3442
|
-
|
3443
|
-
|
3444
|
-
|
3445
|
-
|
3446
|
-
|
3447
|
-
|
3448
|
-
|
3449
|
-
|
3450
|
-
|
3451
|
-
|
3452
|
-
|
3453
|
-
|
3454
|
-
|
3455
|
-
|
3456
|
-
|
3457
|
-
|
3458
|
-
|
3459
|
-
|
3460
|
-
|
3461
|
-
|
3462
|
-
|
3463
|
-
|
3464
|
-
|
3465
|
-
|
3466
|
-
|
3467
|
-
|
3468
|
-
|
3469
|
-
|
3470
|
-
|
3471
|
-
|
3472
|
-
|
3473
|
-
|
3474
|
-
|
3475
|
-
|
3476
|
-
|
3477
|
-
|
3478
|
-
|
3479
|
-
|
3480
|
-
|
3481
|
-
|
3482
|
-
|
3483
|
-
|
3484
|
-
|
3485
|
-
|
3486
|
-
|
3487
|
-
|
3488
|
-
|
3489
|
-
|
3490
|
-
|
3491
|
-
|
3492
|
-
|
3493
|
-
|
3494
|
-
|
3495
|
-
|
3496
|
-
|
3497
|
-
|
3498
|
-
|
3499
|
-
|
3500
|
-
|
3501
|
-
|
3502
|
-
|
3503
|
-
|
3504
|
-
|
3505
|
-
|
3506
|
-
|
3507
|
-
|
3508
|
-
|
3509
|
-
|
3508
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1511</span>
|
3509
|
+
1511: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">bookResources</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">slotDuration</span>)
|
3510
|
+
1512: <span class="ruby-comment cmt"># If there are no allocations defined, we can't do any bookings.</span>
|
3511
|
+
1513: <span class="ruby-comment cmt"># In projection mode we do not allow bookings prior to the current date</span>
|
3512
|
+
1514: <span class="ruby-comment cmt"># for any task (in strict mode) or tasks which have user specified</span>
|
3513
|
+
1515: <span class="ruby-comment cmt"># bookings (sloppy mode).</span>
|
3514
|
+
1516: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'allocate'</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span>
|
3515
|
+
1517: (<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenario</span>(<span class="ruby-ivar">@scenarioIdx</span>).<span class="ruby-identifier">get</span>(<span class="ruby-value str">'projection'</span>) <span class="ruby-operator">&&</span>
|
3516
|
+
1518: <span class="ruby-identifier">date</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>] <span class="ruby-operator">&&</span>
|
3517
|
+
1519: (<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenario</span>(<span class="ruby-ivar">@scenarioIdx</span>).<span class="ruby-identifier">get</span>(<span class="ruby-value str">'strict'</span>) <span class="ruby-operator">||</span>
|
3518
|
+
1520: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'assignedresources'</span>).<span class="ruby-identifier">empty?</span>))
|
3519
|
+
1521: <span class="ruby-keyword kw">return</span>
|
3520
|
+
1522: <span class="ruby-keyword kw">end</span>
|
3521
|
+
1523:
|
3522
|
+
1524: <span class="ruby-comment cmt"># If the task has shifts to limit the allocations, we check that we are</span>
|
3523
|
+
1525: <span class="ruby-comment cmt"># within a defined shift interval. If yes, we need to be on shift to</span>
|
3524
|
+
1526: <span class="ruby-comment cmt"># continue.</span>
|
3525
|
+
1527: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">shifts</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'shifts'</span>)) <span class="ruby-operator">&&</span> <span class="ruby-identifier">shifts</span>.<span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
|
3526
|
+
1528: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">shifts</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
|
3527
|
+
1529: <span class="ruby-keyword kw">end</span>
|
3528
|
+
1530:
|
3529
|
+
1531: <span class="ruby-comment cmt"># If the task has resource independent allocation limits we need to make</span>
|
3530
|
+
1532: <span class="ruby-comment cmt"># sure that none of them is already exceeded.</span>
|
3531
|
+
1533: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">limitsOk?</span>(<span class="ruby-identifier">date</span>)
|
3532
|
+
1534:
|
3533
|
+
1535: <span class="ruby-identifier">sbIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>)
|
3534
|
+
1536:
|
3535
|
+
1537: <span class="ruby-comment cmt"># We first have to make sure that if there are mandatory resources</span>
|
3536
|
+
1538: <span class="ruby-comment cmt"># that these are all available for the time slot.</span>
|
3537
|
+
1539: <span class="ruby-identifier">takenMandatories</span> = []
|
3538
|
+
1540: <span class="ruby-ivar">@mandatories</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">allocation</span><span class="ruby-operator">|</span>
|
3539
|
+
1541: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">allocation</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
|
3540
|
+
1542:
|
3541
|
+
1543: <span class="ruby-comment cmt"># For mandatory allocations with alternatives at least one of the</span>
|
3542
|
+
1544: <span class="ruby-comment cmt"># alternatives must be available.</span>
|
3543
|
+
1545: <span class="ruby-identifier">found</span> = <span class="ruby-keyword kw">false</span>
|
3544
|
+
1546: <span class="ruby-identifier">allocation</span>.<span class="ruby-identifier">candidates</span>(<span class="ruby-ivar">@scenarioIdx</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">candidate</span><span class="ruby-operator">|</span>
|
3545
|
+
1547: <span class="ruby-comment cmt"># When a resource group is marked mandatory, all members of the</span>
|
3546
|
+
1548: <span class="ruby-comment cmt"># group must be available.</span>
|
3547
|
+
1549: <span class="ruby-identifier">allAvailable</span> = <span class="ruby-keyword kw">true</span>
|
3548
|
+
1550: <span class="ruby-identifier">candidate</span>.<span class="ruby-identifier">allLeaves</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
|
3549
|
+
1551: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">limitsOk?</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">resource</span>) <span class="ruby-operator">||</span>
|
3550
|
+
1552: <span class="ruby-operator">!</span><span class="ruby-identifier">resource</span>.<span class="ruby-identifier">available?</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">sbIdx</span>) <span class="ruby-operator">||</span>
|
3551
|
+
1553: <span class="ruby-identifier">takenMandatories</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>)
|
3552
|
+
1554: <span class="ruby-comment cmt"># We've found a mandatory resource that is not available for</span>
|
3553
|
+
1555: <span class="ruby-comment cmt"># the slot.</span>
|
3554
|
+
1556: <span class="ruby-identifier">allAvailable</span> = <span class="ruby-keyword kw">false</span>
|
3555
|
+
1557: <span class="ruby-keyword kw">break</span>
|
3556
|
+
1558: <span class="ruby-keyword kw">else</span>
|
3557
|
+
1559: <span class="ruby-identifier">takenMandatories</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">resource</span>
|
3558
|
+
1560: <span class="ruby-keyword kw">end</span>
|
3559
|
+
1561: <span class="ruby-keyword kw">end</span>
|
3560
|
+
1562: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">allAvailable</span>
|
3561
|
+
1563: <span class="ruby-identifier">found</span> = <span class="ruby-keyword kw">true</span>
|
3562
|
+
1564: <span class="ruby-keyword kw">break</span>
|
3563
|
+
1565: <span class="ruby-keyword kw">end</span>
|
3564
|
+
1566: <span class="ruby-keyword kw">end</span>
|
3565
|
+
1567:
|
3566
|
+
1568: <span class="ruby-comment cmt"># At least one mandatory resource is not available. We cannot continue.</span>
|
3567
|
+
1569: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">found</span>
|
3568
|
+
1570: <span class="ruby-keyword kw">end</span>
|
3569
|
+
1571:
|
3570
|
+
1572: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">date</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">slotDuration</span>)
|
3571
|
+
1573: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'allocate'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">allocation</span><span class="ruby-operator">|</span>
|
3572
|
+
1574: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">allocation</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
|
3573
|
+
1575:
|
3574
|
+
1576: <span class="ruby-comment cmt"># In case we have a persistent allocation we need to check if there is</span>
|
3575
|
+
1577: <span class="ruby-comment cmt"># already a locked resource and use it.</span>
|
3576
|
+
1578: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">allocation</span>.<span class="ruby-identifier">persistent</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">allocation</span>.<span class="ruby-identifier">lockedResource</span>.<span class="ruby-identifier">nil?</span>
|
3577
|
+
1579: <span class="ruby-identifier">bookResource</span>(<span class="ruby-identifier">allocation</span>.<span class="ruby-identifier">lockedResource</span>, <span class="ruby-identifier">sbIdx</span>, <span class="ruby-identifier">date</span>)
|
3578
|
+
1580: <span class="ruby-keyword kw">else</span>
|
3579
|
+
1581: <span class="ruby-comment cmt"># If not, we create a list of candidates in the proper order and</span>
|
3580
|
+
1582: <span class="ruby-comment cmt"># assign the first one available.</span>
|
3581
|
+
1583: <span class="ruby-identifier">allocation</span>.<span class="ruby-identifier">candidates</span>(<span class="ruby-ivar">@scenarioIdx</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">candidate</span><span class="ruby-operator">|</span>
|
3582
|
+
1584: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">bookResource</span>(<span class="ruby-identifier">candidate</span>, <span class="ruby-identifier">sbIdx</span>, <span class="ruby-identifier">date</span>)
|
3583
|
+
1585: <span class="ruby-identifier">allocation</span>.<span class="ruby-identifier">lockedResource</span> = <span class="ruby-identifier">candidate</span>
|
3584
|
+
1586: <span class="ruby-keyword kw">break</span>
|
3585
|
+
1587: <span class="ruby-keyword kw">end</span>
|
3586
|
+
1588: <span class="ruby-keyword kw">end</span>
|
3587
|
+
1589: <span class="ruby-keyword kw">end</span>
|
3588
|
+
1590: <span class="ruby-keyword kw">end</span>
|
3589
|
+
1591: <span class="ruby-keyword kw">end</span></pre>
|
3510
3590
|
</div>
|
3511
3591
|
|
3512
3592
|
</div>
|
@@ -3518,7 +3598,7 @@ href="Interval.html">Interval</a>.
|
|
3518
3598
|
|
3519
3599
|
|
3520
3600
|
<div id="calc-ompletion-method" class="method-detail ">
|
3521
|
-
<a name="
|
3601
|
+
<a name="method-i-calcCompletion"></a>
|
3522
3602
|
|
3523
3603
|
<div class="method-heading">
|
3524
3604
|
|
@@ -3540,57 +3620,57 @@ specified completion value.
|
|
3540
3620
|
<div class="method-source-code"
|
3541
3621
|
id="calc-ompletion-source">
|
3542
3622
|
<pre>
|
3543
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3544
|
-
|
3545
|
-
|
3546
|
-
|
3547
|
-
|
3548
|
-
|
3549
|
-
|
3550
|
-
|
3551
|
-
|
3552
|
-
|
3553
|
-
|
3554
|
-
|
3555
|
-
|
3556
|
-
|
3557
|
-
|
3558
|
-
|
3559
|
-
|
3560
|
-
|
3561
|
-
|
3562
|
-
|
3563
|
-
|
3564
|
-
|
3565
|
-
|
3566
|
-
|
3567
|
-
|
3568
|
-
|
3569
|
-
|
3570
|
-
|
3571
|
-
|
3572
|
-
|
3573
|
-
|
3574
|
-
|
3575
|
-
|
3576
|
-
|
3577
|
-
|
3578
|
-
|
3579
|
-
|
3580
|
-
|
3581
|
-
|
3582
|
-
|
3583
|
-
|
3584
|
-
|
3585
|
-
|
3586
|
-
|
3587
|
-
|
3588
|
-
|
3589
|
-
|
3590
|
-
|
3591
|
-
|
3592
|
-
|
3593
|
-
|
3623
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1865</span>
|
3624
|
+
1865: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">calcCompletion</span>
|
3625
|
+
1866: <span class="ruby-comment cmt"># If the user provided a completion degree we are not touching it.</span>
|
3626
|
+
1867: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">provided</span>(<span class="ruby-value str">'complete'</span>, <span class="ruby-ivar">@scenarioIdx</span>)
|
3627
|
+
1868: <span class="ruby-identifier">calcStatus</span>
|
3628
|
+
1869: <span class="ruby-keyword kw">return</span>
|
3629
|
+
1870: <span class="ruby-keyword kw">end</span>
|
3630
|
+
1871:
|
3631
|
+
1872: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>).<span class="ruby-identifier">nil?</span>
|
3632
|
+
1873: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'complete'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-value">0.0</span>
|
3633
|
+
1874: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'status'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-value str">'unknown'</span>
|
3634
|
+
1875: <span class="ruby-keyword kw">return</span>
|
3635
|
+
1876: <span class="ruby-keyword kw">end</span>
|
3636
|
+
1877:
|
3637
|
+
1878: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'milestone'</span>)
|
3638
|
+
1879: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'complete'</span>, <span class="ruby-ivar">@scenarioIdx</span>] =
|
3639
|
+
1880: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'end'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator"><=</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>] <span class="ruby-operator">?</span> <span class="ruby-value">100.0</span> <span class="ruby-operator">:</span> <span class="ruby-value">0.0</span>
|
3640
|
+
1881: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'status'</span>, <span class="ruby-ivar">@scenarioIdx</span>] =
|
3641
|
+
1882: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>) <span class="ruby-operator"><=</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>] <span class="ruby-operator">?</span> <span class="ruby-value str">'done'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'not reached'</span>
|
3642
|
+
1883: <span class="ruby-keyword kw">else</span>
|
3643
|
+
1884: <span class="ruby-identifier">completion</span> = <span class="ruby-value">0.0</span>
|
3644
|
+
1885: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>) <span class="ruby-operator"><=</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>]
|
3645
|
+
1886: <span class="ruby-comment cmt"># The task has ended already. It's 100% complete.</span>
|
3646
|
+
1887: <span class="ruby-identifier">completion</span> = <span class="ruby-value">100.0</span>
|
3647
|
+
1888: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>] <span class="ruby-operator"><=</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>)
|
3648
|
+
1889: <span class="ruby-comment cmt"># The task has not started yet. Its' 0% complete.</span>
|
3649
|
+
1890: <span class="ruby-identifier">completion</span> = <span class="ruby-value">0.0</span>
|
3650
|
+
1891: <span class="ruby-keyword kw">else</span>
|
3651
|
+
1892: <span class="ruby-comment cmt"># The task is in progress. Calculate the current completion</span>
|
3652
|
+
1893: <span class="ruby-comment cmt"># degree.</span>
|
3653
|
+
1894: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">leaf?</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'effort'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
3654
|
+
1895: <span class="ruby-comment cmt"># Effort based leaf tasks. The completion degree is the percantage</span>
|
3655
|
+
1896: <span class="ruby-comment cmt"># of effort that has been done already.</span>
|
3656
|
+
1897: <span class="ruby-identifier">done</span> = <span class="ruby-identifier">getEffectiveWork</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>)),
|
3657
|
+
1898: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>]))
|
3658
|
+
1899: <span class="ruby-identifier">total</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">convertToDailyLoad</span>(
|
3659
|
+
1900: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'effort'</span>) * <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
|
3660
|
+
1901: <span class="ruby-identifier">completion</span> = <span class="ruby-identifier">done</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span> * <span class="ruby-value">100.0</span>
|
3661
|
+
1902: <span class="ruby-keyword kw">else</span>
|
3662
|
+
1903: <span class="ruby-comment cmt"># Container tasks and length/duration leaf tasks. There is no way</span>
|
3663
|
+
1904: <span class="ruby-comment cmt"># we can compute the completion degree of a container task with a</span>
|
3664
|
+
1905: <span class="ruby-comment cmt"># mix of effort and duration task in a meaningful way. So, we</span>
|
3665
|
+
1906: <span class="ruby-comment cmt"># just go by duration.</span>
|
3666
|
+
1907: <span class="ruby-identifier">completion</span> = ((<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>] <span class="ruby-operator">-</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>)) <span class="ruby-operator">/</span>
|
3667
|
+
1908: (<span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>) <span class="ruby-operator">-</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>))) * <span class="ruby-value">100.0</span>
|
3668
|
+
1909: <span class="ruby-keyword kw">end</span>
|
3669
|
+
1910: <span class="ruby-keyword kw">end</span>
|
3670
|
+
1911: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'complete'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-identifier">completion</span>
|
3671
|
+
1912: <span class="ruby-identifier">calcStatus</span>
|
3672
|
+
1913: <span class="ruby-keyword kw">end</span>
|
3673
|
+
1914: <span class="ruby-keyword kw">end</span></pre>
|
3594
3674
|
</div>
|
3595
3675
|
|
3596
3676
|
</div>
|
@@ -3602,7 +3682,7 @@ specified completion value.
|
|
3602
3682
|
|
3603
3683
|
|
3604
3684
|
<div id="calc-ath-riticalness-nd-uccs-method" class="method-detail ">
|
3605
|
-
<a name="
|
3685
|
+
<a name="method-i-calcPathCriticalnessEndSuccs"></a>
|
3606
3686
|
|
3607
3687
|
<div class="method-heading">
|
3608
3688
|
|
@@ -3625,28 +3705,28 @@ and all its parent tasks.
|
|
3625
3705
|
<div class="method-source-code"
|
3626
3706
|
id="calc-ath-riticalness-nd-uccs-source">
|
3627
3707
|
<pre>
|
3628
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3629
|
-
|
3630
|
-
|
3631
|
-
|
3632
|
-
|
3633
|
-
|
3634
|
-
|
3635
|
-
|
3636
|
-
|
3637
|
-
|
3638
|
-
|
3639
|
-
|
3640
|
-
|
3641
|
-
|
3642
|
-
|
3643
|
-
|
3644
|
-
|
3645
|
-
|
3646
|
-
|
3647
|
-
|
3648
|
-
|
3649
|
-
|
3708
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1841</span>
|
3709
|
+
1841: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">calcPathCriticalnessEndSuccs</span>
|
3710
|
+
1842: <span class="ruby-identifier">maxCriticalness</span> = <span class="ruby-value">0.0</span>
|
3711
|
+
1843: <span class="ruby-comment cmt"># Gather a list of all end-successors of this task and its parent task.</span>
|
3712
|
+
1844: <span class="ruby-identifier">tList</span> = []
|
3713
|
+
1845: <span class="ruby-identifier">p</span> = <span class="ruby-ivar">@property</span>
|
3714
|
+
1846: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">p</span>)
|
3715
|
+
1847: <span class="ruby-identifier">p</span>[<span class="ruby-value str">'endsuccs'</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span><span class="ruby-operator">|</span>
|
3716
|
+
1848: <span class="ruby-identifier">tList</span> <span class="ruby-operator"><<</span> [ <span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span> ] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">tList</span>.<span class="ruby-identifier">include?</span>([ <span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span> ])
|
3717
|
+
1849: <span class="ruby-keyword kw">end</span>
|
3718
|
+
1850: <span class="ruby-identifier">p</span> = <span class="ruby-identifier">p</span>.<span class="ruby-identifier">parent</span>
|
3719
|
+
1851: <span class="ruby-keyword kw">end</span>
|
3720
|
+
1852:
|
3721
|
+
1853: <span class="ruby-identifier">tList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span>, <span class="ruby-identifier">onEnd</span><span class="ruby-operator">|</span>
|
3722
|
+
1854: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">criticalness</span> = <span class="ruby-identifier">task</span>.<span class="ruby-identifier">calcPathCriticalness</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">onEnd</span>)) <span class="ruby-operator">></span>
|
3723
|
+
1855: <span class="ruby-identifier">maxCriticalness</span>
|
3724
|
+
1856: <span class="ruby-identifier">maxCriticalness</span> = <span class="ruby-identifier">criticalness</span>
|
3725
|
+
1857: <span class="ruby-keyword kw">end</span>
|
3726
|
+
1858: <span class="ruby-keyword kw">end</span>
|
3727
|
+
1859:
|
3728
|
+
1860: <span class="ruby-identifier">maxCriticalness</span>
|
3729
|
+
1861: <span class="ruby-keyword kw">end</span></pre>
|
3650
3730
|
</div>
|
3651
3731
|
|
3652
3732
|
</div>
|
@@ -3658,7 +3738,7 @@ and all its parent tasks.
|
|
3658
3738
|
|
3659
3739
|
|
3660
3740
|
<div id="calc-tatus-method" class="method-detail ">
|
3661
|
-
<a name="
|
3741
|
+
<a name="method-i-calcStatus"></a>
|
3662
3742
|
|
3663
3743
|
<div class="method-heading">
|
3664
3744
|
|
@@ -3680,17 +3760,17 @@ attribute.
|
|
3680
3760
|
<div class="method-source-code"
|
3681
3761
|
id="calc-tatus-source">
|
3682
3762
|
<pre>
|
3683
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3684
|
-
|
3685
|
-
|
3686
|
-
|
3687
|
-
|
3688
|
-
|
3689
|
-
|
3690
|
-
|
3691
|
-
|
3692
|
-
|
3693
|
-
|
3763
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1917</span>
|
3764
|
+
1917: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">calcStatus</span>
|
3765
|
+
1918: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'status'</span>, <span class="ruby-ivar">@scenarioIdx</span>] =
|
3766
|
+
1919: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'complete'</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0.0</span>
|
3767
|
+
1920: <span class="ruby-value str">'not started'</span>
|
3768
|
+
1921: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'complete'</span>) <span class="ruby-operator">>=</span> <span class="ruby-value">100.0</span>
|
3769
|
+
1922: <span class="ruby-value str">'done'</span>
|
3770
|
+
1923: <span class="ruby-keyword kw">else</span>
|
3771
|
+
1924: <span class="ruby-value str">'in progress'</span>
|
3772
|
+
1925: <span class="ruby-keyword kw">end</span>
|
3773
|
+
1926: <span class="ruby-keyword kw">end</span></pre>
|
3694
3774
|
</div>
|
3695
3775
|
|
3696
3776
|
</div>
|
@@ -3702,7 +3782,7 @@ attribute.
|
|
3702
3782
|
|
3703
3783
|
|
3704
3784
|
<div id="check-ependency-method" class="method-detail ">
|
3705
|
-
<a name="
|
3785
|
+
<a name="method-i-checkDependency"></a>
|
3706
3786
|
|
3707
3787
|
<div class="method-heading">
|
3708
3788
|
|
@@ -3721,51 +3801,51 @@ attribute.
|
|
3721
3801
|
<div class="method-source-code"
|
3722
3802
|
id="check-ependency-source">
|
3723
3803
|
<pre>
|
3724
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3725
|
-
|
3726
|
-
|
3727
|
-
|
3728
|
-
|
3729
|
-
|
3730
|
-
|
3731
|
-
|
3732
|
-
|
3733
|
-
|
3734
|
-
|
3735
|
-
|
3736
|
-
|
3737
|
-
|
3738
|
-
|
3739
|
-
|
3740
|
-
|
3741
|
-
|
3742
|
-
|
3743
|
-
|
3744
|
-
|
3745
|
-
|
3746
|
-
|
3747
|
-
|
3748
|
-
|
3749
|
-
|
3750
|
-
|
3751
|
-
|
3752
|
-
|
3753
|
-
|
3754
|
-
|
3755
|
-
|
3756
|
-
|
3757
|
-
|
3758
|
-
|
3759
|
-
|
3760
|
-
|
3761
|
-
|
3762
|
-
|
3763
|
-
|
3764
|
-
|
3765
|
-
|
3766
|
-
|
3767
|
-
|
3768
|
-
|
3804
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1759</span>
|
3805
|
+
1759: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkDependency</span>(<span class="ruby-identifier">dependency</span>, <span class="ruby-identifier">depType</span>)
|
3806
|
+
1760: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">depTask</span> = <span class="ruby-identifier">dependency</span>.<span class="ruby-identifier">resolve</span>(<span class="ruby-ivar">@project</span>)).<span class="ruby-identifier">nil?</span>
|
3807
|
+
1761: <span class="ruby-comment cmt"># Remove the broken dependency. It could cause trouble later on.</span>
|
3808
|
+
1762: <span class="ruby-ivar">@property</span>[<span class="ruby-identifier">depType</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">dependency</span>)
|
3809
|
+
1763: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'task_depend_unknown'</span>,
|
3810
|
+
1764: <span class="ruby-node">"Task #{@property.fullId} has unknown #{depType} "</span> <span class="ruby-operator">+</span>
|
3811
|
+
1765: <span class="ruby-node">"#{dependency.taskId}"</span>)
|
3812
|
+
1766: <span class="ruby-keyword kw">end</span>
|
3813
|
+
1767:
|
3814
|
+
1768: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">depTask</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@property</span>
|
3815
|
+
1769: <span class="ruby-comment cmt"># Remove the broken dependency. It could cause trouble later on.</span>
|
3816
|
+
1770: <span class="ruby-ivar">@property</span>[<span class="ruby-identifier">depType</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">dependency</span>)
|
3817
|
+
1771: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'task_depend_self'</span>, <span class="ruby-node">"Task #{@property.fullId} cannot "</span> <span class="ruby-operator">+</span>
|
3818
|
+
1772: <span class="ruby-value str">"depend on self"</span>)
|
3819
|
+
1773: <span class="ruby-keyword kw">end</span>
|
3820
|
+
1774:
|
3821
|
+
1775: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">depTask</span>.<span class="ruby-identifier">isChildOf?</span>(<span class="ruby-ivar">@property</span>)
|
3822
|
+
1776: <span class="ruby-comment cmt"># Remove the broken dependency. It could cause trouble later on.</span>
|
3823
|
+
1777: <span class="ruby-ivar">@property</span>[<span class="ruby-identifier">depType</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">dependency</span>)
|
3824
|
+
1778: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'task_depend_child'</span>,
|
3825
|
+
1779: <span class="ruby-node">"Task #{@property.fullId} cannot depend on child "</span> <span class="ruby-operator">+</span>
|
3826
|
+
1780: <span class="ruby-node">"#{depTask.fullId}"</span>)
|
3827
|
+
1781: <span class="ruby-keyword kw">end</span>
|
3828
|
+
1782:
|
3829
|
+
1783: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">isChildOf?</span>(<span class="ruby-identifier">depTask</span>)
|
3830
|
+
1784: <span class="ruby-comment cmt"># Remove the broken dependency. It could cause trouble later on.</span>
|
3831
|
+
1785: <span class="ruby-ivar">@property</span>[<span class="ruby-identifier">depType</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">dependency</span>)
|
3832
|
+
1786: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'task_depend_parent'</span>,
|
3833
|
+
1787: <span class="ruby-node">"Task #{@property.fullId} cannot depend on parent "</span> <span class="ruby-operator">+</span>
|
3834
|
+
1788: <span class="ruby-node">"#{depTask.fullId}"</span>)
|
3835
|
+
1789: <span class="ruby-keyword kw">end</span>
|
3836
|
+
1790:
|
3837
|
+
1791: <span class="ruby-ivar">@property</span>[<span class="ruby-identifier">depType</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">dep</span><span class="ruby-operator">|</span>
|
3838
|
+
1792: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dep</span>.<span class="ruby-identifier">task</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">depTask</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">dep</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">dependency</span>
|
3839
|
+
1793: <span class="ruby-comment cmt"># Remove the broken dependency. It could cause trouble later on.</span>
|
3840
|
+
1794: <span class="ruby-ivar">@property</span>[<span class="ruby-identifier">depType</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">dependency</span>)
|
3841
|
+
1795: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'task_depend_multi'</span>,
|
3842
|
+
1796: <span class="ruby-node">"No need to specify dependency #{depTask.fullId} multiple "</span> <span class="ruby-operator">+</span>
|
3843
|
+
1797: <span class="ruby-node">"times for task #{@property.fullId}."</span>)
|
3844
|
+
1798: <span class="ruby-keyword kw">end</span>
|
3845
|
+
1799: <span class="ruby-keyword kw">end</span>
|
3846
|
+
1800:
|
3847
|
+
1801: <span class="ruby-identifier">depTask</span>
|
3848
|
+
1802: <span class="ruby-keyword kw">end</span></pre>
|
3769
3849
|
</div>
|
3770
3850
|
|
3771
3851
|
</div>
|
@@ -3777,7 +3857,7 @@ attribute.
|
|
3777
3857
|
|
3778
3858
|
|
3779
3859
|
<div id="has-ependencies-method" class="method-detail ">
|
3780
|
-
<a name="
|
3860
|
+
<a name="method-i-hasDependencies"></a>
|
3781
3861
|
|
3782
3862
|
<div class="method-heading">
|
3783
3863
|
|
@@ -3800,11 +3880,11 @@ checked. Otherwise the start.
|
|
3800
3880
|
<div class="method-source-code"
|
3801
3881
|
id="has-ependencies-source">
|
3802
3882
|
<pre>
|
3803
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3804
|
-
|
3805
|
-
|
3806
|
-
|
3807
|
-
|
3883
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1711</span>
|
3884
|
+
1711: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hasDependencies</span>(<span class="ruby-identifier">atEnd</span>)
|
3885
|
+
1712: <span class="ruby-identifier">thisEnd</span> = <span class="ruby-identifier">atEnd</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'end'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'start'</span>
|
3886
|
+
1713: <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-identifier">thisEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'succs'</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-identifier">thisEnd</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'preds'</span>).<span class="ruby-identifier">empty?</span>
|
3887
|
+
1714: <span class="ruby-keyword kw">end</span></pre>
|
3808
3888
|
</div>
|
3809
3889
|
|
3810
3890
|
</div>
|
@@ -3816,7 +3896,7 @@ checked. Otherwise the start.
|
|
3816
3896
|
|
3817
3897
|
|
3818
3898
|
<div id="has-uccessors-method" class="method-detail ">
|
3819
|
-
<a name="
|
3899
|
+
<a name="method-i-hasSuccessors"></a>
|
3820
3900
|
|
3821
3901
|
<div class="method-heading">
|
3822
3902
|
|
@@ -3838,16 +3918,58 @@ sucessor task.
|
|
3838
3918
|
<div class="method-source-code"
|
3839
3919
|
id="has-uccessors-source">
|
3840
3920
|
<pre>
|
3841
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3842
|
-
|
3843
|
-
|
3844
|
-
|
3845
|
-
|
3846
|
-
|
3847
|
-
|
3848
|
-
|
3849
|
-
|
3850
|
-
|
3921
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1718</span>
|
3922
|
+
1718: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hasSuccessors</span>
|
3923
|
+
1719: <span class="ruby-identifier">t</span> = <span class="ruby-ivar">@property</span>
|
3924
|
+
1720: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">t</span>
|
3925
|
+
1721: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">t</span>[<span class="ruby-value str">'endsuccs'</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">empty?</span>
|
3926
|
+
1722: <span class="ruby-identifier">t</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">parent</span>
|
3927
|
+
1723: <span class="ruby-keyword kw">end</span>
|
3928
|
+
1724:
|
3929
|
+
1725: <span class="ruby-keyword kw">false</span>
|
3930
|
+
1726: <span class="ruby-keyword kw">end</span></pre>
|
3931
|
+
</div>
|
3932
|
+
|
3933
|
+
</div>
|
3934
|
+
|
3935
|
+
|
3936
|
+
|
3937
|
+
|
3938
|
+
</div>
|
3939
|
+
|
3940
|
+
|
3941
|
+
<div id="limits-k--method" class="method-detail ">
|
3942
|
+
<a name="method-i-limitsOk%3F"></a>
|
3943
|
+
|
3944
|
+
<div class="method-heading">
|
3945
|
+
|
3946
|
+
<span class="method-name">limitsOk?</span><span
|
3947
|
+
class="method-args">(date, resource = nil)</span>
|
3948
|
+
<span class="method-click-advice">click to toggle source</span>
|
3949
|
+
|
3950
|
+
</div>
|
3951
|
+
|
3952
|
+
<div class="method-description">
|
3953
|
+
|
3954
|
+
<p>
|
3955
|
+
Check if all of the task limits are not exceded at the given <em>date</em>.
|
3956
|
+
If a <em>resource</em> is provided, the limit for that particular resource
|
3957
|
+
is checked. If no resource is provided, only non-resource-specific limits
|
3958
|
+
are checked.
|
3959
|
+
</p>
|
3960
|
+
|
3961
|
+
|
3962
|
+
|
3963
|
+
<div class="method-source-code"
|
3964
|
+
id="limits-k--source">
|
3965
|
+
<pre>
|
3966
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1636</span>
|
3967
|
+
1636: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">limitsOk?</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
|
3968
|
+
1637: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">limit</span><span class="ruby-operator">|</span>
|
3969
|
+
1638: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">limit</span>.<span class="ruby-identifier">ok?</span>(<span class="ruby-identifier">date</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">resource</span>)
|
3970
|
+
1639: <span class="ruby-keyword kw">end</span>
|
3971
|
+
1640: <span class="ruby-keyword kw">true</span>
|
3972
|
+
1641: <span class="ruby-keyword kw">end</span></pre>
|
3851
3973
|
</div>
|
3852
3974
|
|
3853
3975
|
</div>
|
@@ -3859,7 +3981,7 @@ sucessor task.
|
|
3859
3981
|
|
3860
3982
|
|
3861
3983
|
<div id="mark-s-unaway-method" class="method-detail ">
|
3862
|
-
<a name="
|
3984
|
+
<a name="method-i-markAsRunaway"></a>
|
3863
3985
|
|
3864
3986
|
<div class="method-heading">
|
3865
3987
|
|
@@ -3878,13 +4000,13 @@ sucessor task.
|
|
3878
4000
|
<div class="method-source-code"
|
3879
4001
|
id="mark-s-unaway-source">
|
3880
4002
|
<pre>
|
3881
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3882
|
-
|
3883
|
-
|
3884
|
-
|
3885
|
-
|
3886
|
-
|
3887
|
-
|
4003
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1728</span>
|
4004
|
+
1728: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">markAsRunaway</span>
|
4005
|
+
1729: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'runaway'</span>, <span class="ruby-node">"Task #{@property.fullId} does not fit into "</span> <span class="ruby-operator">+</span>
|
4006
|
+
1730: <span class="ruby-value str">"project time frame"</span>)
|
4007
|
+
1731:
|
4008
|
+
1732: <span class="ruby-ivar">@isRunAway</span> = <span class="ruby-keyword kw">true</span>
|
4009
|
+
1733: <span class="ruby-keyword kw">end</span></pre>
|
3888
4010
|
</div>
|
3889
4011
|
|
3890
4012
|
</div>
|
@@ -3896,7 +4018,7 @@ sucessor task.
|
|
3896
4018
|
|
3897
4019
|
|
3898
4020
|
<div id="mark-ilestone-method" class="method-detail ">
|
3899
|
-
<a name="
|
4021
|
+
<a name="method-i-markMilestone"></a>
|
3900
4022
|
|
3901
4023
|
<div class="method-heading">
|
3902
4024
|
|
@@ -3918,28 +4040,28 @@ accordingly.
|
|
3918
4040
|
<div class="method-source-code"
|
3919
4041
|
id="mark-ilestone-source">
|
3920
4042
|
<pre>
|
3921
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3922
|
-
|
3923
|
-
|
3924
|
-
|
3925
|
-
|
3926
|
-
|
3927
|
-
|
3928
|
-
|
3929
|
-
|
3930
|
-
|
3931
|
-
|
3932
|
-
|
3933
|
-
|
3934
|
-
|
3935
|
-
|
3936
|
-
|
3937
|
-
|
3938
|
-
|
3939
|
-
|
3940
|
-
|
3941
|
-
|
3942
|
-
|
4043
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1737</span>
|
4044
|
+
1737: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">markMilestone</span>
|
4045
|
+
1738: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">hasDurationSpec?</span> <span class="ruby-operator">||</span>
|
4046
|
+
1739: <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'booking'</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'allocate'</span>).<span class="ruby-identifier">empty?</span>
|
4047
|
+
1740:
|
4048
|
+
1741: <span class="ruby-comment cmt"># The following cases qualify for an automatic milestone promotion.</span>
|
4049
|
+
1742: <span class="ruby-comment cmt"># - --> -</span>
|
4050
|
+
1743: <span class="ruby-comment cmt"># | --> -</span>
|
4051
|
+
1744: <span class="ruby-comment cmt"># |D --> -</span>
|
4052
|
+
1745: <span class="ruby-comment cmt"># -D --> -</span>
|
4053
|
+
1746: <span class="ruby-comment cmt"># - <-- -</span>
|
4054
|
+
1747: <span class="ruby-comment cmt"># - <-- |</span>
|
4055
|
+
1748: <span class="ruby-comment cmt"># - <-- -D</span>
|
4056
|
+
1749: <span class="ruby-comment cmt"># - <-- |D</span>
|
4057
|
+
1750: <span class="ruby-identifier">hasStartSpec</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'depends'</span>).<span class="ruby-identifier">empty?</span>
|
4058
|
+
1751: <span class="ruby-identifier">hasEndSpec</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'precedes'</span>).<span class="ruby-identifier">empty?</span>
|
4059
|
+
1752:
|
4060
|
+
1753: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'milestone'</span>, <span class="ruby-ivar">@scenarioIdx</span>] =
|
4061
|
+
1754: (<span class="ruby-identifier">hasStartSpec</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>) <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">hasEndSpec</span>) <span class="ruby-operator">||</span>
|
4062
|
+
1755: (<span class="ruby-operator">!</span><span class="ruby-identifier">hasStartSpec</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">hasEndSpec</span>) <span class="ruby-operator">||</span>
|
4063
|
+
1756: (<span class="ruby-operator">!</span><span class="ruby-identifier">hasStartSpec</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">hasEndSpec</span>)
|
4064
|
+
1757: <span class="ruby-keyword kw">end</span></pre>
|
3943
4065
|
</div>
|
3944
4066
|
|
3945
4067
|
</div>
|
@@ -3951,7 +4073,7 @@ accordingly.
|
|
3951
4073
|
|
3952
4074
|
|
3953
4075
|
<div id="next-lot-method" class="method-detail ">
|
3954
|
-
<a name="
|
4076
|
+
<a name="method-i-nextSlot"></a>
|
3955
4077
|
|
3956
4078
|
<div class="method-heading">
|
3957
4079
|
|
@@ -3975,16 +4097,16 @@ still nil. Otherwise it contains the date of the last scheduled slot.
|
|
3975
4097
|
<div class="method-source-code"
|
3976
4098
|
id="next-lot-source">
|
3977
4099
|
<pre>
|
3978
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
3979
|
-
|
3980
|
-
|
3981
|
-
|
3982
|
-
|
3983
|
-
|
3984
|
-
|
3985
|
-
|
3986
|
-
|
3987
|
-
|
4100
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1501</span>
|
4101
|
+
1501: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextSlot</span>(<span class="ruby-identifier">slotDuration</span>)
|
4102
|
+
1502: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scheduled'</span>) <span class="ruby-operator">||</span> <span class="ruby-ivar">@isRunAway</span>
|
4103
|
+
1503:
|
4104
|
+
1504: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>)
|
4105
|
+
1505: <span class="ruby-ivar">@lastSlot</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>) <span class="ruby-operator">:</span> <span class="ruby-ivar">@lastSlot</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">slotDuration</span>
|
4106
|
+
1506: <span class="ruby-keyword kw">else</span>
|
4107
|
+
1507: <span class="ruby-ivar">@lastSlot</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>) <span class="ruby-operator">-</span> <span class="ruby-identifier">slotDuration</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@lastSlot</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">slotDuration</span>
|
4108
|
+
1508: <span class="ruby-keyword kw">end</span>
|
4109
|
+
1509: <span class="ruby-keyword kw">end</span></pre>
|
3988
4110
|
</div>
|
3989
4111
|
|
3990
4112
|
</div>
|
@@ -3996,7 +4118,7 @@ still nil. Otherwise it contains the date of the last scheduled slot.
|
|
3996
4118
|
|
3997
4119
|
|
3998
4120
|
<div id="propagate-ate-o-ep-method" class="method-detail ">
|
3999
|
-
<a name="
|
4121
|
+
<a name="method-i-propagateDateToDep"></a>
|
4000
4122
|
|
4001
4123
|
<div class="method-heading">
|
4002
4124
|
|
@@ -4020,31 +4142,31 @@ task to a dependend <a href="Task.html">Task</a> <tt>task</tt>. If
|
|
4020
4142
|
<div class="method-source-code"
|
4021
4143
|
id="propagate-ate-o-ep-source">
|
4022
4144
|
<pre>
|
4023
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
4024
|
-
|
4025
|
-
|
4026
|
-
|
4027
|
-
|
4028
|
-
|
4029
|
-
|
4030
|
-
|
4031
|
-
|
4032
|
-
|
4033
|
-
|
4034
|
-
|
4035
|
-
|
4036
|
-
|
4037
|
-
|
4038
|
-
|
4039
|
-
|
4040
|
-
|
4041
|
-
|
4042
|
-
|
4043
|
-
|
4044
|
-
|
4045
|
-
|
4046
|
-
|
4047
|
-
|
4145
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1813</span>
|
4146
|
+
1813: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">propagateDateToDep</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">atEnd</span>)
|
4147
|
+
1814: <span class="ruby-comment cmt">#puts "Propagate #{atEnd ? 'end' : 'start'} to dep. #{task.fullId}"</span>
|
4148
|
+
1815: <span class="ruby-comment cmt"># Don't propagate if the task is already completely scheduled or is a</span>
|
4149
|
+
1816: <span class="ruby-comment cmt"># container.</span>
|
4150
|
+
1817: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">container?</span>
|
4151
|
+
1818:
|
4152
|
+
1819: <span class="ruby-comment cmt"># Don't propagate if the task already has a date for that end.</span>
|
4153
|
+
1820: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>[<span class="ruby-identifier">atEnd</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'end'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'start'</span>, <span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">nil?</span>
|
4154
|
+
1821:
|
4155
|
+
1822: <span class="ruby-comment cmt"># Don't propagate if the task has a duration or is a milestone and the</span>
|
4156
|
+
1823: <span class="ruby-comment cmt"># task end to set is in the scheduling direction.</span>
|
4157
|
+
1824: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">hasDurationSpec?</span>(<span class="ruby-ivar">@scenarioIdx</span>) <span class="ruby-operator">&&</span>
|
4158
|
+
1825: <span class="ruby-operator">!</span>(<span class="ruby-identifier">atEnd</span> <span class="ruby-operator">^</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'forward'</span>, <span class="ruby-ivar">@scenarioIdx</span>])
|
4159
|
+
1826:
|
4160
|
+
1827: <span class="ruby-comment cmt"># Check if all other dependencies for that task end have been determined</span>
|
4161
|
+
1828: <span class="ruby-comment cmt"># already and use the latest or earliest possible date. Don't propagate</span>
|
4162
|
+
1829: <span class="ruby-comment cmt"># if we don't have all dates yet.</span>
|
4163
|
+
1830: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">nDate</span> = (<span class="ruby-identifier">atEnd</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">latestEnd</span>(<span class="ruby-ivar">@scenarioIdx</span>) <span class="ruby-operator">:</span>
|
4164
|
+
1831: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">earliestStart</span>(<span class="ruby-ivar">@scenarioIdx</span>))).<span class="ruby-identifier">nil?</span>
|
4165
|
+
1832:
|
4166
|
+
1833: <span class="ruby-comment cmt"># Looks like it is ok to propagate the date.</span>
|
4167
|
+
1834: <span class="ruby-identifier">task</span>.<span class="ruby-identifier">propagateDate</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">nDate</span>, <span class="ruby-identifier">atEnd</span>)
|
4168
|
+
1835: <span class="ruby-comment cmt"># puts "Propagate #{atEnd ? 'end' : 'start'} to dep. #{task.fullId} done"</span>
|
4169
|
+
1836: <span class="ruby-keyword kw">end</span></pre>
|
4048
4170
|
</div>
|
4049
4171
|
|
4050
4172
|
</div>
|
@@ -4056,7 +4178,7 @@ task to a dependend <a href="Task.html">Task</a> <tt>task</tt>. If
|
|
4056
4178
|
|
4057
4179
|
|
4058
4180
|
<div id="schedule-lot-method" class="method-detail ">
|
4059
|
-
<a name="
|
4181
|
+
<a name="method-i-scheduleSlot"></a>
|
4060
4182
|
|
4061
4183
|
<div class="method-heading">
|
4062
4184
|
|
@@ -4075,101 +4197,99 @@ task to a dependend <a href="Task.html">Task</a> <tt>task</tt>. If
|
|
4075
4197
|
<div class="method-source-code"
|
4076
4198
|
id="schedule-lot-source">
|
4077
4199
|
<pre>
|
4078
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
4079
|
-
|
4080
|
-
|
4081
|
-
|
4082
|
-
|
4083
|
-
|
4084
|
-
|
4085
|
-
|
4086
|
-
|
4087
|
-
|
4088
|
-
|
4089
|
-
|
4090
|
-
|
4091
|
-
|
4092
|
-
|
4093
|
-
|
4094
|
-
|
4095
|
-
|
4096
|
-
|
4097
|
-
|
4098
|
-
|
4099
|
-
|
4100
|
-
|
4101
|
-
|
4102
|
-
|
4103
|
-
|
4104
|
-
|
4105
|
-
|
4106
|
-
|
4107
|
-
|
4108
|
-
|
4109
|
-
|
4110
|
-
|
4111
|
-
|
4112
|
-
|
4113
|
-
|
4114
|
-
|
4115
|
-
|
4116
|
-
|
4117
|
-
|
4118
|
-
|
4119
|
-
|
4120
|
-
|
4121
|
-
|
4122
|
-
|
4123
|
-
|
4124
|
-
|
4125
|
-
|
4126
|
-
|
4127
|
-
|
4128
|
-
|
4129
|
-
|
4130
|
-
|
4131
|
-
|
4132
|
-
|
4133
|
-
|
4134
|
-
|
4135
|
-
|
4136
|
-
|
4137
|
-
|
4138
|
-
|
4139
|
-
|
4140
|
-
|
4141
|
-
|
4142
|
-
|
4143
|
-
|
4144
|
-
|
4145
|
-
|
4146
|
-
|
4147
|
-
|
4148
|
-
|
4149
|
-
|
4150
|
-
|
4151
|
-
|
4152
|
-
|
4153
|
-
|
4154
|
-
|
4155
|
-
|
4156
|
-
|
4157
|
-
|
4158
|
-
|
4159
|
-
|
4160
|
-
|
4161
|
-
|
4162
|
-
|
4163
|
-
|
4164
|
-
|
4165
|
-
|
4166
|
-
|
4167
|
-
|
4168
|
-
|
4169
|
-
|
4170
|
-
|
4171
|
-
1474: <span class="ruby-keyword kw">false</span>
|
4172
|
-
1475: <span class="ruby-keyword kw">end</span></pre>
|
4200
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1404</span>
|
4201
|
+
1404: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scheduleSlot</span>(<span class="ruby-identifier">slot</span>, <span class="ruby-identifier">slotDuration</span>)
|
4202
|
+
1405: <span class="ruby-comment cmt"># Tasks must always be scheduled in a single contigous fashion. @lastSlot</span>
|
4203
|
+
1406: <span class="ruby-comment cmt"># indicates the slot that was used for the previous call. Depending on the</span>
|
4204
|
+
1407: <span class="ruby-comment cmt"># scheduling direction the next slot must be scheduled either right before</span>
|
4205
|
+
1408: <span class="ruby-comment cmt"># or after this slot. If the current slot is not directly aligned, we'll</span>
|
4206
|
+
1409: <span class="ruby-comment cmt"># wait for another call with a proper slot. The function returns true</span>
|
4207
|
+
1410: <span class="ruby-comment cmt"># only if a slot could be scheduled.</span>
|
4208
|
+
1411: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>)
|
4209
|
+
1412: <span class="ruby-comment cmt"># On first call, the @lastSlot is not set yet. We set it to the slot</span>
|
4210
|
+
1413: <span class="ruby-comment cmt"># before the start slot.</span>
|
4211
|
+
1414: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@lastSlot</span>.<span class="ruby-identifier">nil?</span>
|
4212
|
+
1415: <span class="ruby-ivar">@lastSlot</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>) <span class="ruby-operator">-</span> <span class="ruby-identifier">slotDuration</span>
|
4213
|
+
1416: <span class="ruby-ivar">@tentativeEnd</span> = <span class="ruby-identifier">slot</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">slotDuration</span>
|
4214
|
+
1417: <span class="ruby-keyword kw">end</span>
|
4215
|
+
1418:
|
4216
|
+
1419: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">slot</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@lastSlot</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">slotDuration</span>
|
4217
|
+
1420: <span class="ruby-keyword kw">else</span>
|
4218
|
+
1421: <span class="ruby-comment cmt"># On first call, the @lastSlot is not set yet. We set it to the slot</span>
|
4219
|
+
1422: <span class="ruby-comment cmt"># to the end slot.</span>
|
4220
|
+
1423: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@lastSlot</span>.<span class="ruby-identifier">nil?</span>
|
4221
|
+
1424: <span class="ruby-ivar">@lastSlot</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)
|
4222
|
+
1425: <span class="ruby-ivar">@tentativeStart</span> = <span class="ruby-identifier">slot</span>
|
4223
|
+
1426: <span class="ruby-keyword kw">end</span>
|
4224
|
+
1427:
|
4225
|
+
1428: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">slot</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@lastSlot</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">slotDuration</span>
|
4226
|
+
1429: <span class="ruby-keyword kw">end</span>
|
4227
|
+
1430: <span class="ruby-ivar">@lastSlot</span> = <span class="ruby-identifier">slot</span>
|
4228
|
+
1431:
|
4229
|
+
1432: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'length'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duration'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
4230
|
+
1433: <span class="ruby-comment cmt"># The doneDuration counts the number of scheduled slots. It is increased</span>
|
4231
|
+
1434: <span class="ruby-comment cmt"># by one with every scheduled slot. The doneLength is only increased for</span>
|
4232
|
+
1435: <span class="ruby-comment cmt"># global working time slots.</span>
|
4233
|
+
1436: <span class="ruby-identifier">bookResources</span>(<span class="ruby-identifier">slot</span>, <span class="ruby-identifier">slotDuration</span>)
|
4234
|
+
1437: <span class="ruby-ivar">@doneDuration</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
4235
|
+
1438: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">isWorkingTime</span>(<span class="ruby-identifier">slot</span>, <span class="ruby-identifier">slot</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">slotDuration</span>)
|
4236
|
+
1439: <span class="ruby-ivar">@doneLength</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
4237
|
+
1440: <span class="ruby-keyword kw">end</span>
|
4238
|
+
1441:
|
4239
|
+
1442: <span class="ruby-comment cmt"># If we have reached the specified duration or lengths, we set the end</span>
|
4240
|
+
1443: <span class="ruby-comment cmt"># or start date and propagate the value to neighbouring tasks.</span>
|
4241
|
+
1444: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">a</span>(<span class="ruby-value str">'length'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@doneLength</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'length'</span>)) <span class="ruby-operator">||</span>
|
4242
|
+
1445: (<span class="ruby-identifier">a</span>(<span class="ruby-value str">'duration'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@doneDuration</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'duration'</span>))
|
4243
|
+
1446: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>)
|
4244
|
+
1447: <span class="ruby-identifier">propagateDate</span>(<span class="ruby-identifier">slot</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">slotDuration</span>, <span class="ruby-keyword kw">true</span>)
|
4245
|
+
1448: <span class="ruby-keyword kw">else</span>
|
4246
|
+
1449: <span class="ruby-identifier">propagateDate</span>(<span class="ruby-identifier">slot</span>, <span class="ruby-keyword kw">false</span>)
|
4247
|
+
1450: <span class="ruby-keyword kw">end</span>
|
4248
|
+
1451: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
|
4249
|
+
1452: <span class="ruby-keyword kw">end</span>
|
4250
|
+
1453: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'effort'</span>) <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
4251
|
+
1454: <span class="ruby-identifier">bookResources</span>(<span class="ruby-identifier">slot</span>, <span class="ruby-identifier">slotDuration</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@doneEffort</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'effort'</span>)
|
4252
|
+
1455: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@doneEffort</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'effort'</span>)
|
4253
|
+
1456: <span class="ruby-comment cmt"># The specified effort has been reached. The has been fully scheduled</span>
|
4254
|
+
1457: <span class="ruby-comment cmt"># now.</span>
|
4255
|
+
1458: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>)
|
4256
|
+
1459: <span class="ruby-identifier">propagateDate</span>(<span class="ruby-ivar">@tentativeEnd</span>, <span class="ruby-keyword kw">true</span>)
|
4257
|
+
1460: <span class="ruby-keyword kw">else</span>
|
4258
|
+
1461: <span class="ruby-identifier">propagateDate</span>(<span class="ruby-ivar">@tentativeStart</span>, <span class="ruby-keyword kw">false</span>)
|
4259
|
+
1462: <span class="ruby-keyword kw">end</span>
|
4260
|
+
1463: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
|
4261
|
+
1464: <span class="ruby-keyword kw">end</span>
|
4262
|
+
1465: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'milestone'</span>)
|
4263
|
+
1466: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>)
|
4264
|
+
1467: <span class="ruby-identifier">propagateDate</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-keyword kw">true</span>)
|
4265
|
+
1468: <span class="ruby-keyword kw">else</span>
|
4266
|
+
1469: <span class="ruby-identifier">propagateDate</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>), <span class="ruby-keyword kw">false</span>)
|
4267
|
+
1470: <span class="ruby-keyword kw">end</span>
|
4268
|
+
1471: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
|
4269
|
+
1472: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)
|
4270
|
+
1473: <span class="ruby-comment cmt"># Task with start and end date but no duration criteria</span>
|
4271
|
+
1474: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'allocate'</span>).<span class="ruby-identifier">empty?</span>
|
4272
|
+
1475: <span class="ruby-comment cmt"># For start-end-tasks without allocation, we don't have to do</span>
|
4273
|
+
1476: <span class="ruby-comment cmt"># anything but to set the 'scheduled' flag.</span>
|
4274
|
+
1477: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-keyword kw">true</span>
|
4275
|
+
1478: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">scheduleContainer</span>(<span class="ruby-ivar">@scenarioIdx</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>
|
4276
|
+
1479: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
|
4277
|
+
1480: <span class="ruby-keyword kw">end</span>
|
4278
|
+
1481:
|
4279
|
+
1482: <span class="ruby-identifier">bookResources</span>(<span class="ruby-identifier">slot</span>, <span class="ruby-identifier">slotDuration</span>)
|
4280
|
+
1483:
|
4281
|
+
1484: <span class="ruby-comment cmt"># Depending on the scheduling direction we can mark the task as</span>
|
4282
|
+
1485: <span class="ruby-comment cmt"># scheduled once we have reached the other end.</span>
|
4283
|
+
1486: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">slot</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">slotDuration</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>)) <span class="ruby-operator">||</span>
|
4284
|
+
1487: (<span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'forward'</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">slot</span> <span class="ruby-operator"><=</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>))
|
4285
|
+
1488: <span class="ruby-ivar">@property</span>[<span class="ruby-value str">'scheduled'</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-keyword kw">true</span>
|
4286
|
+
1489: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">scheduleContainer</span>(<span class="ruby-ivar">@scenarioIdx</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>
|
4287
|
+
1490: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
|
4288
|
+
1491: <span class="ruby-keyword kw">end</span>
|
4289
|
+
1492: <span class="ruby-keyword kw">end</span>
|
4290
|
+
1493:
|
4291
|
+
1494: <span class="ruby-keyword kw">false</span>
|
4292
|
+
1495: <span class="ruby-keyword kw">end</span></pre>
|
4173
4293
|
</div>
|
4174
4294
|
|
4175
4295
|
</div>
|
@@ -4181,7 +4301,7 @@ task to a dependend <a href="Task.html">Task</a> <tt>task</tt>. If
|
|
4181
4301
|
|
4182
4302
|
|
4183
4303
|
<div id="set-etermination-method" class="method-detail ">
|
4184
|
-
<a name="
|
4304
|
+
<a name="method-i-setDetermination"></a>
|
4185
4305
|
|
4186
4306
|
<div class="method-heading">
|
4187
4307
|
|
@@ -4203,10 +4323,10 @@ Set @startIsDetermed or @endIsDetermed (depending on _setStart) to
|
|
4203
4323
|
<div class="method-source-code"
|
4204
4324
|
id="set-etermination-source">
|
4205
4325
|
<pre>
|
4206
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
4207
|
-
|
4208
|
-
|
4209
|
-
|
4326
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1806</span>
|
4327
|
+
1806: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setDetermination</span>(<span class="ruby-identifier">setStart</span>, <span class="ruby-identifier">value</span>)
|
4328
|
+
1807: <span class="ruby-identifier">setStart</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@startIsDetermed</span> = <span class="ruby-identifier">value</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@endIsDetermed</span> = <span class="ruby-identifier">value</span>
|
4329
|
+
1808: <span class="ruby-keyword kw">end</span></pre>
|
4210
4330
|
</div>
|
4211
4331
|
|
4212
4332
|
</div>
|
@@ -4218,7 +4338,7 @@ Set @startIsDetermed or @endIsDetermed (depending on _setStart) to
|
|
4218
4338
|
|
4219
4339
|
|
4220
4340
|
<div id="targets-method" class="method-detail ">
|
4221
|
-
<a name="
|
4341
|
+
<a name="method-i-targets"></a>
|
4222
4342
|
|
4223
4343
|
<div class="method-heading">
|
4224
4344
|
|
@@ -4240,22 +4360,22 @@ depend on the current task.
|
|
4240
4360
|
<div class="method-source-code"
|
4241
4361
|
id="targets-source">
|
4242
4362
|
<pre>
|
4243
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
4244
|
-
|
4245
|
-
|
4246
|
-
|
4247
|
-
|
4248
|
-
|
4249
|
-
|
4250
|
-
|
4251
|
-
|
4252
|
-
|
4253
|
-
|
4254
|
-
|
4255
|
-
|
4256
|
-
|
4257
|
-
|
4258
|
-
|
4363
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1930</span>
|
4364
|
+
1930: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">targets</span>(<span class="ruby-identifier">list</span>)
|
4365
|
+
1931: <span class="ruby-comment cmt"># A target must be a leaf function that has no direct or indirect</span>
|
4366
|
+
1932: <span class="ruby-comment cmt"># (through parent) following tasks.</span>
|
4367
|
+
1933: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">leaf?</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">hasSuccessors</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">list</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@property</span>)
|
4368
|
+
1934: <span class="ruby-identifier">list</span> <span class="ruby-operator"><<</span> <span class="ruby-ivar">@property</span>
|
4369
|
+
1935: <span class="ruby-keyword kw">return</span>
|
4370
|
+
1936: <span class="ruby-keyword kw">end</span>
|
4371
|
+
1937:
|
4372
|
+
1938: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'endsuccs'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span>, <span class="ruby-identifier">onEnd</span><span class="ruby-operator">|</span>
|
4373
|
+
1939: <span class="ruby-identifier">t</span>.<span class="ruby-identifier">targets</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">list</span>)
|
4374
|
+
1940: <span class="ruby-keyword kw">end</span>
|
4375
|
+
1941:
|
4376
|
+
1942: <span class="ruby-comment cmt"># Check of indirect followers.</span>
|
4377
|
+
1943: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">targets</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">list</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">parent</span>
|
4378
|
+
1944: <span class="ruby-keyword kw">end</span></pre>
|
4259
4379
|
</div>
|
4260
4380
|
|
4261
4381
|
</div>
|
@@ -4267,7 +4387,7 @@ depend on the current task.
|
|
4267
4387
|
|
4268
4388
|
|
4269
4389
|
<div id="turnover-method" class="method-detail ">
|
4270
|
-
<a name="
|
4390
|
+
<a name="method-i-turnover"></a>
|
4271
4391
|
|
4272
4392
|
<div class="method-heading">
|
4273
4393
|
|
@@ -4294,59 +4414,59 @@ turnover directly generated by the resource is taken into account.
|
|
4294
4414
|
<div class="method-source-code"
|
4295
4415
|
id="turnover-source">
|
4296
4416
|
<pre>
|
4297
|
-
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line
|
4298
|
-
|
4299
|
-
|
4300
|
-
|
4301
|
-
|
4302
|
-
|
4303
|
-
|
4304
|
-
|
4305
|
-
|
4306
|
-
|
4307
|
-
|
4308
|
-
|
4309
|
-
|
4310
|
-
|
4311
|
-
|
4312
|
-
1930:
|
4313
|
-
1931: <span class="ruby-comment cmt"># Container tasks don't have resource cost.</span>
|
4314
|
-
1932: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
|
4315
|
-
1933: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resource</span>
|
4316
|
-
1934: <span class="ruby-identifier">resourceCost</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">cost</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
|
4317
|
-
1935: <span class="ruby-ivar">@property</span>)
|
4318
|
-
1936: <span class="ruby-keyword kw">else</span>
|
4319
|
-
1937: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'assignedresources'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
|
4320
|
-
1938: <span class="ruby-identifier">resourceCost</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">cost</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-ivar">@property</span>)
|
4321
|
-
1939: <span class="ruby-keyword kw">end</span>
|
4322
|
-
1940: <span class="ruby-keyword kw">end</span>
|
4323
|
-
1941: <span class="ruby-keyword kw">end</span>
|
4324
|
-
1942:
|
4325
|
-
1943: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'charge'</span>).<span class="ruby-identifier">empty?</span>
|
4326
|
-
1944: <span class="ruby-comment cmt"># Add one-time and periodic charges to the amount.</span>
|
4327
|
-
1945: <span class="ruby-identifier">startDate</span> = <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">startIdx</span> <span class="ruby-operator">:</span>
|
4328
|
-
1946: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">startIdx</span>)
|
4329
|
-
1947: <span class="ruby-identifier">endDate</span> = <span class="ruby-identifier">endIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">endIdx</span> <span class="ruby-operator">:</span>
|
4330
|
-
1948: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">endIdx</span>)
|
4331
|
-
1949: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">startDate</span>, <span class="ruby-identifier">endDate</span>)
|
4332
|
-
1950: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'charge'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">charge</span><span class="ruby-operator">|</span>
|
4333
|
-
1951: <span class="ruby-identifier">otherCost</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">charge</span>.<span class="ruby-identifier">turnover</span>(<span class="ruby-identifier">iv</span>)
|
4334
|
-
1952: <span class="ruby-keyword kw">end</span>
|
4335
|
-
1953: <span class="ruby-keyword kw">end</span>
|
4336
|
-
1954:
|
4337
|
-
1955: <span class="ruby-identifier">totalCost</span> = <span class="ruby-identifier">resourceCost</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">otherCost</span>
|
4338
|
-
1956: <span class="ruby-comment cmt"># Now weight the total cost by the share of the account</span>
|
4339
|
-
1957: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'chargeset'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">set</span><span class="ruby-operator">|</span>
|
4340
|
-
1958: <span class="ruby-identifier">set</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">accnt</span>, <span class="ruby-identifier">share</span><span class="ruby-operator">|</span>
|
4341
|
-
1959: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">share</span> <span class="ruby-operator">></span> <span class="ruby-value">0.0</span> <span class="ruby-operator">&&</span> (<span class="ruby-identifier">accnt</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">account</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">accnt</span>.<span class="ruby-identifier">isChildOf?</span>(<span class="ruby-identifier">account</span>))
|
4342
|
-
1960: <span class="ruby-identifier">amount</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">totalCost</span> * <span class="ruby-identifier">share</span>
|
4343
|
-
1961: <span class="ruby-keyword kw">end</span>
|
4344
|
-
1962: <span class="ruby-keyword kw">end</span>
|
4345
|
-
1963: <span class="ruby-keyword kw">end</span>
|
4346
|
-
1964: <span class="ruby-keyword kw">end</span>
|
4417
|
+
<span class="ruby-comment cmt"># File lib/TaskScenario.rb, line 1951</span>
|
4418
|
+
1951: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">turnover</span>(<span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">account</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
|
4419
|
+
1952: <span class="ruby-identifier">amount</span> = <span class="ruby-value">0.0</span>
|
4420
|
+
1953: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
|
4421
|
+
1954: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
|
4422
|
+
1955: <span class="ruby-identifier">amount</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">turnover</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-identifier">account</span>,
|
4423
|
+
1956: <span class="ruby-identifier">resource</span>)
|
4424
|
+
1957: <span class="ruby-keyword kw">end</span>
|
4425
|
+
1958: <span class="ruby-keyword kw">end</span>
|
4426
|
+
1959:
|
4427
|
+
1960: <span class="ruby-comment cmt"># If there are no chargeset defined for this task, we don't need to</span>
|
4428
|
+
1961: <span class="ruby-comment cmt"># compute the resource related or other cost.</span>
|
4429
|
+
1962: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'chargeset'</span>).<span class="ruby-identifier">empty?</span>
|
4430
|
+
1963: <span class="ruby-identifier">resourceCost</span> = <span class="ruby-value">0.0</span>
|
4431
|
+
1964: <span class="ruby-identifier">otherCost</span> = <span class="ruby-value">0.0</span>
|
4347
4432
|
1965:
|
4348
|
-
1966:
|
4349
|
-
1967:
|
4433
|
+
1966: <span class="ruby-comment cmt"># Container tasks don't have resource cost.</span>
|
4434
|
+
1967: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
|
4435
|
+
1968: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resource</span>
|
4436
|
+
1969: <span class="ruby-identifier">resourceCost</span> = <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">cost</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>,
|
4437
|
+
1970: <span class="ruby-ivar">@property</span>)
|
4438
|
+
1971: <span class="ruby-keyword kw">else</span>
|
4439
|
+
1972: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'assignedresources'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
|
4440
|
+
1973: <span class="ruby-identifier">resourceCost</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">cost</span>(<span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-identifier">startIdx</span>, <span class="ruby-identifier">endIdx</span>, <span class="ruby-ivar">@property</span>)
|
4441
|
+
1974: <span class="ruby-keyword kw">end</span>
|
4442
|
+
1975: <span class="ruby-keyword kw">end</span>
|
4443
|
+
1976: <span class="ruby-keyword kw">end</span>
|
4444
|
+
1977:
|
4445
|
+
1978: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'charge'</span>).<span class="ruby-identifier">empty?</span>
|
4446
|
+
1979: <span class="ruby-comment cmt"># Add one-time and periodic charges to the amount.</span>
|
4447
|
+
1980: <span class="ruby-identifier">startDate</span> = <span class="ruby-identifier">startIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">startIdx</span> <span class="ruby-operator">:</span>
|
4448
|
+
1981: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">startIdx</span>)
|
4449
|
+
1982: <span class="ruby-identifier">endDate</span> = <span class="ruby-identifier">endIdx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">endIdx</span> <span class="ruby-operator">:</span>
|
4450
|
+
1983: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">endIdx</span>)
|
4451
|
+
1984: <span class="ruby-identifier">iv</span> = <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">startDate</span>, <span class="ruby-identifier">endDate</span>)
|
4452
|
+
1985: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'charge'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">charge</span><span class="ruby-operator">|</span>
|
4453
|
+
1986: <span class="ruby-identifier">otherCost</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">charge</span>.<span class="ruby-identifier">turnover</span>(<span class="ruby-identifier">iv</span>)
|
4454
|
+
1987: <span class="ruby-keyword kw">end</span>
|
4455
|
+
1988: <span class="ruby-keyword kw">end</span>
|
4456
|
+
1989:
|
4457
|
+
1990: <span class="ruby-identifier">totalCost</span> = <span class="ruby-identifier">resourceCost</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">otherCost</span>
|
4458
|
+
1991: <span class="ruby-comment cmt"># Now weight the total cost by the share of the account</span>
|
4459
|
+
1992: <span class="ruby-identifier">a</span>(<span class="ruby-value str">'chargeset'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">set</span><span class="ruby-operator">|</span>
|
4460
|
+
1993: <span class="ruby-identifier">set</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">accnt</span>, <span class="ruby-identifier">share</span><span class="ruby-operator">|</span>
|
4461
|
+
1994: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">share</span> <span class="ruby-operator">></span> <span class="ruby-value">0.0</span> <span class="ruby-operator">&&</span> (<span class="ruby-identifier">accnt</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">account</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">accnt</span>.<span class="ruby-identifier">isChildOf?</span>(<span class="ruby-identifier">account</span>))
|
4462
|
+
1995: <span class="ruby-identifier">amount</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">totalCost</span> * <span class="ruby-identifier">share</span>
|
4463
|
+
1996: <span class="ruby-keyword kw">end</span>
|
4464
|
+
1997: <span class="ruby-keyword kw">end</span>
|
4465
|
+
1998: <span class="ruby-keyword kw">end</span>
|
4466
|
+
1999: <span class="ruby-keyword kw">end</span>
|
4467
|
+
2000:
|
4468
|
+
2001: <span class="ruby-identifier">amount</span>
|
4469
|
+
2002: <span class="ruby-keyword kw">end</span></pre>
|
4350
4470
|
</div>
|
4351
4471
|
|
4352
4472
|
</div>
|