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