taskjuggler 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2086 -0
- data/benchmarks/666tasks.tjp +3183 -0
- data/benchmarks/booking.tjp +14 -10
- data/doc/AppConfig.html +95 -73
- data/doc/Arguments.html +22 -2
- data/doc/CHANGELOG.html +2587 -0
- data/doc/COPYING.html +21 -1
- data/doc/Object.html +161 -122
- data/doc/README.html +21 -1
- data/doc/RuntimeConfig.html +26 -6
- data/doc/String.html +38 -18
- data/doc/StringIO.html +579 -0
- data/doc/TaskJuggler.html +251 -143
- data/doc/TaskJuggler/Account.html +26 -6
- data/doc/TaskJuggler/AccountAttribute.html +28 -8
- data/doc/TaskJuggler/AccountScenario.html +24 -4
- data/doc/TaskJuggler/Allocation.html +30 -10
- data/doc/TaskJuggler/AllocationAttribute.html +28 -8
- data/doc/TaskJuggler/AttributeBase.html +46 -26
- data/doc/TaskJuggler/AttributeDefinition.html +22 -2
- data/doc/TaskJuggler/BatchProcessor.html +40 -20
- data/doc/TaskJuggler/Booking.html +26 -6
- data/doc/TaskJuggler/BookingListAttribute.html +28 -8
- data/doc/TaskJuggler/BooleanAttribute.html +28 -8
- data/doc/TaskJuggler/CSVFile.html +308 -146
- data/doc/TaskJuggler/CellSettingPattern.html +22 -2
- data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
- data/doc/TaskJuggler/Charge.html +26 -6
- data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
- data/doc/TaskJuggler/ChargeSet.html +33 -13
- data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
- data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
- data/doc/TaskJuggler/ColumnTable.html +24 -4
- data/doc/TaskJuggler/Daemon.html +26 -6
- data/doc/TaskJuggler/DateAttribute.html +26 -6
- data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
- data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
- data/doc/TaskJuggler/DurationAttribute.html +28 -8
- data/doc/TaskJuggler/FixnumAttribute.html +24 -4
- data/doc/TaskJuggler/FlagListAttribute.html +28 -8
- data/doc/TaskJuggler/FloatAttribute.html +26 -6
- data/doc/TaskJuggler/FormatListAttribute.html +24 -4
- data/doc/TaskJuggler/GanttChart.html +147 -126
- data/doc/TaskJuggler/GanttContainer.html +34 -14
- data/doc/TaskJuggler/GanttHeader.html +28 -8
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
- data/doc/TaskJuggler/GanttLine.html +38 -18
- data/doc/TaskJuggler/GanttLoadStack.html +26 -6
- data/doc/TaskJuggler/GanttMilestone.html +34 -14
- data/doc/TaskJuggler/GanttRouter.html +50 -30
- data/doc/TaskJuggler/GanttTaskBar.html +34 -14
- data/doc/TaskJuggler/HTMLDocument.html +26 -6
- data/doc/TaskJuggler/HTMLGraphics.html +30 -10
- data/doc/TaskJuggler/Interval.html +40 -22
- data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
- data/doc/TaskJuggler/JobInfo.html +24 -4
- data/doc/TaskJuggler/Journal.html +226 -147
- data/doc/TaskJuggler/JournalEntry.html +22 -2
- data/doc/TaskJuggler/JournalEntryList.html +129 -112
- data/doc/TaskJuggler/KeywordArray.html +26 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
- data/doc/TaskJuggler/Limits.html +152 -123
- data/doc/TaskJuggler/Limits/Limit.html +149 -70
- data/doc/TaskJuggler/LimitsAttribute.html +36 -51
- data/doc/TaskJuggler/ListAttributeBase.html +24 -4
- data/doc/TaskJuggler/Log.html +50 -32
- data/doc/TaskJuggler/LogFile.html +37 -17
- data/doc/TaskJuggler/LogicalAttribute.html +53 -33
- data/doc/TaskJuggler/LogicalExpression.html +26 -6
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
- data/doc/TaskJuggler/LogicalFlag.html +42 -22
- data/doc/TaskJuggler/LogicalFunction.html +204 -140
- data/doc/TaskJuggler/LogicalOperation.html +135 -111
- data/doc/TaskJuggler/Macro.html +22 -2
- data/doc/TaskJuggler/MacroParser.html +32 -12
- data/doc/TaskJuggler/MacroTable.html +32 -12
- data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
- data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
- data/doc/TaskJuggler/Message.html +24 -4
- data/doc/TaskJuggler/MessageHandler.html +24 -4
- data/doc/TaskJuggler/Navigator.html +104 -71
- data/doc/TaskJuggler/NavigatorElement.html +32 -12
- data/doc/TaskJuggler/NikuProject.html +22 -2
- data/doc/TaskJuggler/NikuReport.html +310 -228
- data/doc/TaskJuggler/NikuResource.html +22 -2
- data/doc/TaskJuggler/NodeListAttribute.html +615 -0
- data/doc/TaskJuggler/OnShiftCache.html +32 -12
- data/doc/TaskJuggler/ProcessIntercom.html +205 -78
- data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
- data/doc/TaskJuggler/Project.html +708 -660
- data/doc/TaskJuggler/ProjectBroker.html +506 -304
- data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
- data/doc/TaskJuggler/ProjectFileParser.html +429 -373
- data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
- data/doc/TaskJuggler/ProjectRecord.html +80 -60
- data/doc/TaskJuggler/ProjectServer.html +312 -237
- data/doc/TaskJuggler/ProjectServerIface.html +101 -43
- data/doc/TaskJuggler/PropertyAttribute.html +32 -12
- data/doc/TaskJuggler/PropertyList.html +166 -145
- data/doc/TaskJuggler/PropertySet.html +254 -224
- data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
- data/doc/TaskJuggler/Query.html +169 -148
- data/doc/TaskJuggler/RTFHandlers.html +622 -0
- data/doc/TaskJuggler/RTFNavigator.html +28 -8
- data/doc/TaskJuggler/RTFQuery.html +40 -20
- data/doc/TaskJuggler/RTFReport.html +62 -25
- data/doc/TaskJuggler/RTFReportLink.html +765 -0
- data/doc/TaskJuggler/RealFormat.html +26 -6
- data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
- data/doc/TaskJuggler/Report.html +402 -251
- data/doc/TaskJuggler/ReportBase.html +162 -137
- data/doc/TaskJuggler/ReportContext.html +112 -29
- data/doc/TaskJuggler/ReportServer.html +89 -64
- data/doc/TaskJuggler/ReportServerIface.html +75 -55
- data/doc/TaskJuggler/ReportServerRecord.html +54 -31
- data/doc/TaskJuggler/ReportServlet.html +980 -0
- data/doc/TaskJuggler/ReportTable.html +41 -21
- data/doc/TaskJuggler/ReportTableCell.html +214 -170
- data/doc/TaskJuggler/ReportTableColumn.html +30 -10
- data/doc/TaskJuggler/ReportTableLegend.html +36 -16
- data/doc/TaskJuggler/ReportTableLine.html +32 -12
- data/doc/TaskJuggler/Resource.html +99 -87
- data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
- data/doc/TaskJuggler/ResourceListRE.html +47 -26
- data/doc/TaskJuggler/ResourceScenario.html +403 -437
- data/doc/TaskJuggler/RichText.html +26 -6
- data/doc/TaskJuggler/RichTextAttribute.html +50 -30
- data/doc/TaskJuggler/RichTextDocument.html +37 -17
- data/doc/TaskJuggler/RichTextElement.html +475 -413
- data/doc/TaskJuggler/RichTextException.html +22 -2
- data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
- data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
- data/doc/TaskJuggler/RichTextImage.html +22 -2
- data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
- data/doc/TaskJuggler/RichTextParser.html +56 -34
- data/doc/TaskJuggler/RichTextScanner.html +82 -61
- data/doc/TaskJuggler/RichTextSnip.html +34 -14
- data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
- data/doc/TaskJuggler/Scenario.html +22 -2
- data/doc/TaskJuggler/ScenarioData.html +30 -46
- data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
- data/doc/TaskJuggler/Scoreboard.html +42 -22
- data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
- data/doc/TaskJuggler/SheetReceiver.html +333 -295
- data/doc/TaskJuggler/SheetSender.html +253 -230
- data/doc/TaskJuggler/Shift.html +26 -6
- data/doc/TaskJuggler/ShiftAssignment.html +89 -73
- data/doc/TaskJuggler/ShiftAssignments.html +226 -234
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
- data/doc/TaskJuggler/ShiftScenario.html +28 -8
- data/doc/TaskJuggler/SortListAttribute.html +34 -14
- data/doc/TaskJuggler/SourceFileInfo.html +24 -4
- data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
- data/doc/TaskJuggler/StatusSheetReport.html +168 -153
- data/doc/TaskJuggler/StatusSheetSender.html +24 -3
- data/doc/TaskJuggler/StringAttribute.html +38 -18
- data/doc/TaskJuggler/SymbolAttribute.html +32 -12
- data/doc/TaskJuggler/SyntaxReference.html +40 -20
- data/doc/TaskJuggler/TOCEntry.html +26 -6
- data/doc/TaskJuggler/TSResourceRecord.html +22 -2
- data/doc/TaskJuggler/TSTaskRecord.html +22 -2
- data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
- data/doc/TaskJuggler/TableOfContents.html +26 -6
- data/doc/TaskJuggler/TableReport.html +937 -904
- data/doc/TaskJuggler/Task.html +55 -36
- data/doc/TaskJuggler/TaskDependency.html +24 -4
- data/doc/TaskJuggler/TaskListAttribute.html +50 -30
- data/doc/TaskJuggler/TaskListRE.html +27 -7
- data/doc/TaskJuggler/TaskScenario.html +1273 -1153
- data/doc/TaskJuggler/TextFormatter.html +28 -8
- data/doc/TaskJuggler/TextParser.html +585 -338
- data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
- data/doc/TaskJuggler/TextParser/Rule.html +95 -73
- data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
- data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
- data/doc/TaskJuggler/TextReport.html +28 -8
- data/doc/TaskJuggler/TextScanner.html +400 -1404
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
- data/doc/TaskJuggler/TimeSheet.html +48 -28
- data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
- data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
- data/doc/TaskJuggler/TimeSheetReport.html +154 -133
- data/doc/TaskJuggler/TimeSheetSender.html +24 -3
- data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
- data/doc/TaskJuggler/TimeSheets.html +26 -6
- data/doc/TaskJuggler/Tj3AppBase.html +85 -58
- data/doc/TaskJuggler/Tj3Client.html +292 -238
- data/doc/TaskJuggler/Tj3Daemon.html +159 -74
- data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
- data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
- data/doc/TaskJuggler/Tj3SsSender.html +53 -26
- data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
- data/doc/TaskJuggler/Tj3TsSender.html +26 -6
- data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
- data/doc/TaskJuggler/TjException.html +22 -2
- data/doc/TaskJuggler/TjTime.html +216 -160
- data/doc/TaskJuggler/TjpExample.html +34 -14
- data/doc/TaskJuggler/TjpExportRE.html +403 -407
- data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
- data/doc/TaskJuggler/URLParameter.html +649 -0
- data/doc/TaskJuggler/UserManual.html +42 -22
- data/doc/TaskJuggler/WebServer.html +702 -0
- data/doc/TaskJuggler/WorkingHours.html +38 -18
- data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
- data/doc/TaskJuggler/XMLBlob.html +24 -4
- data/doc/TaskJuggler/XMLComment.html +24 -4
- data/doc/TaskJuggler/XMLDocument.html +30 -10
- data/doc/TaskJuggler/XMLElement.html +34 -14
- data/doc/TaskJuggler/XMLNamedText.html +22 -2
- data/doc/TaskJuggler/XMLText.html +24 -4
- data/doc/index.html +1841 -1666
- data/doc/lib/AccountScenario_rb.html +1 -1
- data/doc/lib/Account_rb.html +1 -1
- data/doc/lib/Allocation_rb.html +1 -1
- data/doc/lib/AppConfig_rb.html +2 -2
- data/doc/lib/AttributeBase_rb.html +1 -1
- data/doc/lib/AttributeDefinition_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +2 -2
- data/doc/lib/BatchProcessor_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/ChargeSet_rb.html +1 -1
- data/doc/lib/Charge_rb.html +1 -1
- data/doc/lib/HTMLDocument_rb.html +1 -1
- data/doc/lib/Interval_rb.html +1 -1
- data/doc/lib/Journal_rb.html +2 -2
- data/doc/lib/KeywordArray_rb.html +1 -1
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/Limits_rb.html +2 -2
- data/doc/lib/LogFile_rb.html +2 -2
- data/doc/lib/Log_rb.html +1 -1
- data/doc/lib/LogicalExpression_rb.html +1 -1
- data/doc/lib/LogicalFunction_rb.html +2 -2
- data/doc/lib/LogicalOperation_rb.html +2 -2
- data/doc/lib/MacroParser_rb.html +1 -1
- data/doc/lib/MacroTable_rb.html +1 -1
- data/doc/lib/MessageHandler_rb.html +1 -1
- data/doc/lib/Message_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +4 -8
- data/doc/lib/ProjectFileScanner_rb.html +67 -0
- data/doc/lib/Project_rb.html +2 -2
- data/doc/lib/PropertyList_rb.html +2 -2
- data/doc/lib/PropertySet_rb.html +2 -2
- data/doc/lib/PropertyTreeNode_rb.html +2 -2
- data/doc/lib/Query_rb.html +2 -2
- data/doc/lib/RTFHandlers_rb.html +73 -0
- data/doc/lib/RTFNavigator_rb.html +1 -1
- data/doc/lib/RTFQuery_rb.html +1 -1
- data/doc/lib/RTFReportLink_rb.html +71 -0
- data/doc/lib/RTFReport_rb.html +2 -2
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +2 -2
- data/doc/lib/Resource_rb.html +2 -2
- data/doc/lib/RichTextDocument_rb.html +1 -1
- data/doc/lib/RichTextElement_rb.html +2 -2
- data/doc/lib/RichTextFunctionExample_rb.html +1 -1
- data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +2 -2
- data/doc/lib/RichTextScanner_rb.html +2 -2
- data/doc/lib/RichTextSnip_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
- data/doc/lib/RichText_rb.html +1 -1
- data/doc/lib/RuntimeConfig_rb.html +1 -1
- data/doc/lib/ScenarioData_rb.html +2 -2
- data/doc/lib/Scenario_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/SheetHandlerBase_rb.html +1 -1
- data/doc/lib/SheetReceiver_rb.html +2 -2
- data/doc/lib/SheetSender_rb.html +4 -2
- data/doc/lib/ShiftAssignments_rb.html +4 -2
- data/doc/lib/ShiftScenario_rb.html +1 -1
- data/doc/lib/Shift_rb.html +1 -1
- data/doc/lib/SourceFileInfo_rb.html +1 -1
- data/doc/lib/StatusSheetReceiver_rb.html +2 -2
- data/doc/lib/StatusSheetSender_rb.html +2 -2
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TOCEntry_rb.html +1 -1
- data/doc/lib/TableColumnDefinition_rb.html +2 -2
- data/doc/lib/TableOfContents_rb.html +1 -1
- data/doc/lib/TaskDependency_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +2 -2
- data/doc/lib/TaskScenario_rb.html +2 -2
- data/doc/lib/Task_rb.html +2 -2
- data/doc/lib/TextFormatter_rb.html +1 -1
- data/doc/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/TextParser/Rule_rb.html +2 -2
- data/doc/lib/TextParser/StackElement_rb.html +2 -2
- data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/TextParser_rb.html +2 -2
- data/doc/lib/TextScanner_rb.html +6 -2
- data/doc/lib/TimeSheetReceiver_rb.html +2 -2
- data/doc/lib/TimeSheetSender_rb.html +2 -2
- data/doc/lib/TimeSheetSummary_rb.html +2 -2
- data/doc/lib/TimeSheets_rb.html +2 -2
- data/doc/lib/Tj3AppBase_rb.html +2 -2
- data/doc/lib/Tj3Config_rb.html +2 -2
- data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
- data/doc/lib/TjException_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +2 -2
- data/doc/lib/TjpExample_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +2 -2
- data/doc/lib/URLParameter_rb.html +67 -0
- data/doc/lib/UTF8String_rb.html +1 -1
- data/doc/lib/UserManual_rb.html +1 -1
- data/doc/lib/WorkingHours_rb.html +1 -1
- data/doc/lib/XMLDocument_rb.html +2 -2
- data/doc/lib/XMLElement_rb.html +1 -1
- data/doc/lib/daemon/Daemon_rb.html +1 -1
- data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
- data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
- data/doc/lib/daemon/ProjectServer_rb.html +2 -2
- data/doc/lib/daemon/ReportServer_rb.html +2 -2
- data/doc/lib/daemon/WebServer_rb.html +75 -0
- data/doc/lib/deep_copy_rb.html +2 -2
- data/doc/lib/reports/CSVFile_rb.html +2 -2
- data/doc/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/reports/GanttChart_rb.html +2 -2
- data/doc/lib/reports/GanttContainer_rb.html +1 -1
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/lib/reports/GanttHeader_rb.html +1 -1
- data/doc/lib/reports/GanttLine_rb.html +1 -1
- data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
- data/doc/lib/reports/GanttMilestone_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +1 -1
- data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
- data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
- data/doc/lib/reports/Navigator_rb.html +2 -2
- data/doc/lib/reports/NikuReport_rb.html +2 -2
- data/doc/lib/reports/ReportBase_rb.html +2 -2
- data/doc/lib/reports/ReportContext_rb.html +2 -2
- data/doc/lib/reports/ReportTableCell_rb.html +2 -2
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +2 -2
- data/doc/lib/reports/Report_rb.html +2 -2
- data/doc/lib/reports/ResourceListRE_rb.html +2 -2
- data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
- data/doc/lib/reports/TableReport_rb.html +2 -2
- data/doc/lib/reports/TaskListRE_rb.html +2 -2
- data/doc/lib/reports/TextReport_rb.html +1 -1
- data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
- data/doc/lib/reports/TjpExportRE_rb.html +2 -2
- data/doc/lib/ruby-signal-bug_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +2 -2
- data/doc/lib/tj3client_rb.html +2 -2
- data/doc/lib/tj3d_rb.html +2 -2
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +2 -2
- data/doc/lib/tj3ts_receiver_rb.html +2 -2
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/doc/rdoc.css +9 -4
- data/examples/tutorial.tjp +17 -15
- data/gem_spec.rb +3 -0
- data/lib/AppConfig.rb +3 -1
- data/lib/Attributes.rb +10 -8
- data/lib/Journal.rb +55 -20
- data/lib/Limits.rb +72 -46
- data/lib/LogFile.rb +3 -3
- data/lib/LogicalFunction.rb +19 -6
- data/lib/LogicalOperation.rb +5 -1
- data/lib/Project.rb +37 -9
- data/lib/ProjectFileParser.rb +25 -22
- data/lib/ProjectFileScanner.rb +365 -0
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +14 -4
- data/lib/PropertyTreeNode.rb +42 -29
- data/lib/Query.rb +3 -1
- data/lib/RTFHandlers.rb +35 -0
- data/lib/RTFReport.rb +23 -6
- data/lib/RTFReportLink.rb +72 -0
- data/lib/Resource.rb +8 -16
- data/lib/ResourceScenario.rb +1 -22
- data/lib/RichTextElement.rb +42 -0
- data/lib/RichTextParser.rb +6 -4
- data/lib/RichTextScanner.rb +5 -5
- data/lib/RichTextSyntaxRules.rb +48 -10
- data/lib/ScenarioData.rb +5 -3
- data/lib/SheetReceiver.rb +24 -6
- data/lib/SheetSender.rb +17 -13
- data/lib/ShiftAssignments.rb +56 -52
- data/lib/StatusSheetReceiver.rb +1 -0
- data/lib/StatusSheetSender.rb +1 -0
- data/lib/TableColumnDefinition.rb +4 -2
- data/lib/Task.rb +8 -9
- data/lib/TaskJuggler.rb +21 -11
- data/lib/TaskScenario.rb +61 -26
- data/lib/TextParser.rb +268 -106
- data/lib/TextParser/Rule.rb +4 -2
- data/lib/TextParser/StackElement.rb +6 -4
- data/lib/TextScanner.rb +283 -700
- data/lib/TimeSheetReceiver.rb +1 -0
- data/lib/TimeSheetSender.rb +1 -0
- data/lib/TimeSheetSummary.rb +51 -26
- data/lib/TimeSheets.rb +1 -1
- data/lib/Tj3AppBase.rb +8 -1
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +5 -0
- data/lib/TjpSyntaxRules.rb +360 -144
- data/lib/URLParameter.rb +30 -0
- data/lib/XMLDocument.rb +2 -2
- data/lib/daemon/ProcessIntercom.rb +50 -9
- data/lib/daemon/ProjectBroker.rb +63 -10
- data/lib/daemon/ProjectServer.rb +47 -16
- data/lib/daemon/ReportServer.rb +9 -4
- data/lib/daemon/WebServer.rb +204 -0
- data/lib/deep_copy.rb +4 -1
- data/lib/reports/CSVFile.rb +150 -66
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/Navigator.rb +18 -5
- data/lib/reports/NikuReport.rb +32 -2
- data/lib/reports/Report.rb +65 -37
- data/lib/reports/ReportBase.rb +14 -9
- data/lib/reports/ReportContext.rb +19 -4
- data/lib/reports/ReportTable.rb +2 -2
- data/lib/reports/ReportTableCell.rb +54 -30
- data/lib/reports/ResourceListRE.rb +4 -3
- data/lib/reports/StatusSheetReport.rb +8 -13
- data/lib/reports/TableReport.rb +47 -32
- data/lib/reports/TaskListRE.rb +3 -3
- data/lib/reports/TimeSheetReport.rb +14 -5
- data/lib/reports/TjpExportRE.rb +14 -19
- data/lib/taskjuggler3.rb +15 -0
- data/lib/tj3client.rb +9 -7
- data/lib/tj3d.rb +38 -10
- data/lib/tj3ss_sender.rb +7 -0
- data/lib/tj3ts_receiver.rb +1 -0
- data/manual/Day_To_Day_Juggling +1 -1
- data/manual/Rich_Text_Attributes +8 -0
- data/manual/TaskJuggler_2x_Migration +7 -0
- data/manual/The_TaskJuggler_Syntax +20 -6
- data/prj_cfg.rb +3 -2
- data/tasks/changelog.rake +36 -0
- data/tasks/csts.rake +2 -3
- data/tasks/gem.rake +10 -0
- data/tasks/missing.rake +0 -17
- data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
- data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
- data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
- data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
- data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
- data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
- data/test/TestSuite/StatusSheets/run +3 -2
- data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
- data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
- data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
- data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
- data/test/TestSuite/TimeSheets/run +5 -5
- data/test/test_CSVFile.rb +75 -0
- data/test/test_Limits.rb +63 -5
- data/test/test_ProjectFileScanner.rb +163 -0
- data/test/test_ReportGenerator.rb +81 -0
- data/test/test_RichText.rb +21 -3
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +4 -4
- data/test/test_Syntax.rb +1 -1
- data/test/test_URLParameter.rb +30 -0
- metadata +126 -32
- data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
- data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
- data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
- data/test/TestSuite/TimeSheets/receiver.log +0 -102
- data/test/TestSuite/TimeSheets/sender.log +0 -794
- data/test/TestSuite/TimeSheets/summary.log +0 -884
- data/test/TestSuite/TimeSheets/timesheets.log +0 -45
- data/test/TestSuite/TimeSheets/tj3d.log +0 -292
- data/test/test_TextScanner.rb +0 -95
@@ -39,15 +39,16 @@ class TaskJuggler
|
|
39
39
|
resourceList.setSorting(@report.get('sortResources'))
|
40
40
|
resourceList = filterResourceList(resourceList, nil,
|
41
41
|
@report.get('hideResource'),
|
42
|
-
@report.get('rollupResource')
|
43
|
-
|
42
|
+
@report.get('rollupResource'),
|
43
|
+
@report.get('openNodes'))
|
44
|
+
resourceList.query = @report.project.reportContexts.last.query
|
44
45
|
resourceList.sort!
|
45
46
|
|
46
47
|
# Prepare the task list. Don't filter it yet! It would break the
|
47
48
|
# *_() LogicalFunctions.
|
48
49
|
taskList = PropertyList.new(@project.tasks)
|
49
50
|
taskList.setSorting(@report.get('sortTasks'))
|
50
|
-
taskList.query = @report.project.
|
51
|
+
taskList.query = @report.project.reportContexts.last.query
|
51
52
|
taskList.sort!
|
52
53
|
|
53
54
|
adjustReportPeriod(taskList, @report.get('scenarios'),
|
@@ -74,7 +74,8 @@ class TaskJuggler
|
|
74
74
|
resourceList.setSorting(@report.get('sortResources'))
|
75
75
|
resourceList = filterResourceList(resourceList, nil,
|
76
76
|
@report.get('hideResource'),
|
77
|
-
@report.get('rollupResource')
|
77
|
+
@report.get('rollupResource'),
|
78
|
+
@report.get('openNodes'))
|
78
79
|
# Prepare a template for the Query we will use to get all the data.
|
79
80
|
scenarioIdx = a('scenarios')[0]
|
80
81
|
queryAttrs = { 'project' => @project,
|
@@ -94,7 +95,7 @@ class TaskJuggler
|
|
94
95
|
taskList = PropertyList.new(@project.tasks)
|
95
96
|
taskList.setSorting(@report.get('sortTasks'))
|
96
97
|
taskList = filterTaskList(taskList, nil, @report.get('hideTask'),
|
97
|
-
@report.get('rollupTask'))
|
98
|
+
@report.get('rollupTask'), @report.get('openNodes'))
|
98
99
|
taskList.sort!
|
99
100
|
|
100
101
|
resourceList.each do |resource|
|
@@ -118,16 +119,10 @@ class TaskJuggler
|
|
118
119
|
@managers << (manager = ManagerStatusRecord.new(resource))
|
119
120
|
|
120
121
|
topLevelTasks.each do |task|
|
121
|
-
|
122
|
-
#
|
123
|
-
|
124
|
-
|
125
|
-
oldEntries = @project['journal'].currentEntries(a('end'), task,
|
126
|
-
0, a('start'))
|
127
|
-
# Remove entries that are in both lists.
|
128
|
-
oldEntries.delete_if { |e| entries.include?(e) }
|
129
|
-
# Combine the list with oldEntries going first.
|
130
|
-
entries = oldEntries + entries
|
122
|
+
# Get a list of all the current Journal entries for this task and
|
123
|
+
# all it's sub tasks.
|
124
|
+
entries = @project['journal'].currentEntriesR(a('end'), task,
|
125
|
+
0, a('start') + 1)
|
131
126
|
next if entries.empty?
|
132
127
|
|
133
128
|
manager.responsibilities << ManagerResponsibilities.new(task, entries)
|
@@ -185,7 +180,7 @@ class TaskJuggler
|
|
185
180
|
end
|
186
181
|
@file << "\n"
|
187
182
|
end
|
188
|
-
@file << " # author #{entry.author.fullId}\n"
|
183
|
+
@file << " # author #{entry.author.fullId}\n" if entry.author
|
189
184
|
if entry.summary
|
190
185
|
@file << " # summary -8<-\n" +
|
191
186
|
indentBlock(4, entry.summary.richText.inputText) +
|
data/lib/reports/TableReport.rb
CHANGED
@@ -26,33 +26,35 @@ class TaskJuggler
|
|
26
26
|
attr_reader :legend
|
27
27
|
|
28
28
|
@@propertiesById = {
|
29
|
-
# ID
|
30
|
-
'alert'
|
31
|
-
'
|
32
|
-
'
|
33
|
-
'alerttrend'
|
34
|
-
'complete'
|
35
|
-
'cost'
|
36
|
-
'duration'
|
37
|
-
'effort'
|
38
|
-
'effortdone'
|
39
|
-
'effortleft'
|
40
|
-
'freetime'
|
41
|
-
'followers'
|
42
|
-
'id'
|
43
|
-
'journal'
|
44
|
-
'
|
45
|
-
'
|
46
|
-
'
|
47
|
-
'
|
48
|
-
'
|
49
|
-
'
|
50
|
-
'
|
51
|
-
'
|
52
|
-
'
|
53
|
-
'
|
54
|
-
'
|
55
|
-
'
|
29
|
+
# ID Header Indent Align Scen Spec.
|
30
|
+
'alert' => [ 'Alert', true, :left, false ],
|
31
|
+
'alertmessages' => [ 'Alert Messages', false, :left, false ],
|
32
|
+
'alertsummaries' => [ 'Alert Summaries', false, :left, false ],
|
33
|
+
'alerttrend' => [ 'Alert Trend', false, :left, false ],
|
34
|
+
'complete' => [ 'Completion', false, :right, true ],
|
35
|
+
'cost' => [ 'Cost', true, :right, true ],
|
36
|
+
'duration' => [ 'Duration', true, :right, true ],
|
37
|
+
'effort' => [ 'Effort', true, :right, true ],
|
38
|
+
'effortdone' => [ 'Effort Done', true, :right, true ],
|
39
|
+
'effortleft' => [ 'Effort Left', true, :right, true ],
|
40
|
+
'freetime' => [ 'Free Time', true, :right, true ],
|
41
|
+
'followers' => [ 'Followers', false, :left, true ],
|
42
|
+
'id' => [ 'Id', false, :left, false ],
|
43
|
+
'journal' => [ 'Journal', false, :left, false ],
|
44
|
+
'journalmessages' => [ 'Journal Messages', false, :left, false ],
|
45
|
+
'journalsummaries' => [ 'Journal Summaries', false, :left, false ],
|
46
|
+
'line' => [ 'Line No.', false, :right, false ],
|
47
|
+
'name' => [ 'Name', true, :left, false ],
|
48
|
+
'no' => [ 'No.', false, :right, false ],
|
49
|
+
'precursors' => [ 'Precursors', false, :left, true ],
|
50
|
+
'rate' => [ 'Rate', true, :right, true ],
|
51
|
+
'resources' => [ 'Resources', false, :left, true ],
|
52
|
+
'responsible' => [ 'Responsible', false, :left, true ],
|
53
|
+
'revenue' => [ 'Revenue', true, :right, true ],
|
54
|
+
'scenario' => [ 'Scenario', false, :left, true ],
|
55
|
+
'status' => [ 'Status', false, :left, true ],
|
56
|
+
'targets' => [ 'Targets', false, :left, true ],
|
57
|
+
'wbs' => [ 'WBS', false, :left, false ]
|
56
58
|
}
|
57
59
|
@@propertiesByType = {
|
58
60
|
# Type Indent Align
|
@@ -84,6 +86,9 @@ class TaskJuggler
|
|
84
86
|
def to_html
|
85
87
|
html = []
|
86
88
|
|
89
|
+
html << XMLComment.new("Dynamic Report ID: " +
|
90
|
+
"#{@report.project.reportContexts.last.
|
91
|
+
dynamicReportId}")
|
87
92
|
html << rt_to_html('header')
|
88
93
|
html << (tableFrame = generateHtmlTableFrame)
|
89
94
|
|
@@ -333,7 +338,7 @@ class TaskJuggler
|
|
333
338
|
taskList.each do |task|
|
334
339
|
# Get the current Query from the report context and create a copy. We
|
335
340
|
# are going to modify it.
|
336
|
-
query = @project.
|
341
|
+
query = @project.reportContexts.last.query.dup
|
337
342
|
query.property = task
|
338
343
|
query.scopeProperty = scopeLine ? scopeLine.property : nil
|
339
344
|
|
@@ -363,7 +368,7 @@ class TaskJuggler
|
|
363
368
|
# filter.
|
364
369
|
resourceList.setSorting(a('sortResources'))
|
365
370
|
assignedResourceList = filterResourceList(resourceList, task,
|
366
|
-
a('hideResource'), a('rollupResource'))
|
371
|
+
a('hideResource'), a('rollupResource'), a('openNodes'))
|
367
372
|
assignedResourceList.sort!
|
368
373
|
lineNo = generateResourceList(assignedResourceList, nil, line)
|
369
374
|
end
|
@@ -397,7 +402,7 @@ class TaskJuggler
|
|
397
402
|
resourceList.each do |resource|
|
398
403
|
# Get the current Query from the report context and create a copy. We
|
399
404
|
# are going to modify it.
|
400
|
-
query = @project.
|
405
|
+
query = @project.reportContexts.last.query.dup
|
401
406
|
query.property = resource
|
402
407
|
query.scopeProperty = scopeLine ? scopeLine.property : nil
|
403
408
|
|
@@ -427,8 +432,8 @@ class TaskJuggler
|
|
427
432
|
# filter.
|
428
433
|
taskList.setSorting(a('sortTasks'))
|
429
434
|
assignedTaskList = filterTaskList(taskList, resource,
|
430
|
-
a('hideTask'),
|
431
|
-
a('
|
435
|
+
a('hideTask'), a('rollupTask'),
|
436
|
+
a('openNodes'))
|
432
437
|
assignedTaskList.sort!
|
433
438
|
lineNo = generateTaskList(assignedTaskList, nil, line)
|
434
439
|
end
|
@@ -629,6 +634,11 @@ class TaskJuggler
|
|
629
634
|
cellColor = columnDef.cellColor.getPattern(query)
|
630
635
|
cell.cellColor = cellColor if cellColor
|
631
636
|
|
637
|
+
# Replace the default cell alignment if the user has requested a custom
|
638
|
+
# alignment.
|
639
|
+
hAlign = columnDef.hAlign.getPattern(query)
|
640
|
+
cell.alignment = hAlign if hAlign
|
641
|
+
|
632
642
|
# If the user has requested a custom tooltip, add it to the cell.
|
633
643
|
cell.tooltip = columnDef.tooltip.getPattern(query) || nil
|
634
644
|
|
@@ -710,6 +720,11 @@ class TaskJuggler
|
|
710
720
|
fontColor = columnDef.fontColor.getPattern(query)
|
711
721
|
cell.fontColor = fontColor if fontColor
|
712
722
|
|
723
|
+
# Replace the default cell alignment if the user has requested a custom
|
724
|
+
# alignment.
|
725
|
+
hAlign = columnDef.hAlign.getPattern(query)
|
726
|
+
cell.alignment = hAlign if hAlign
|
727
|
+
|
713
728
|
# Register the custom tooltip if the user has requested one.
|
714
729
|
cdTooltip = columnDef.tooltip.getPattern(query)
|
715
730
|
cell.tooltip = cdTooltip if cdTooltip
|
data/lib/reports/TaskListRE.rb
CHANGED
@@ -38,15 +38,15 @@ class TaskJuggler
|
|
38
38
|
taskList = PropertyList.new(@project.tasks)
|
39
39
|
taskList.setSorting(@report.get('sortTasks'))
|
40
40
|
taskList = filterTaskList(taskList, nil, @report.get('hideTask'),
|
41
|
-
@report.get('rollupTask'))
|
42
|
-
taskList.query = @report.project.
|
41
|
+
@report.get('rollupTask'), @report.get('openNodes'))
|
42
|
+
taskList.query = @report.project.reportContexts.last.query
|
43
43
|
taskList.sort!
|
44
44
|
|
45
45
|
# Prepare the resource list. Don't filter it yet! It would break the
|
46
46
|
# *_() LogicalFunctions.
|
47
47
|
resourceList = PropertyList.new(@project.resources)
|
48
48
|
resourceList.setSorting(@report.get('sortResources'))
|
49
|
-
resourceList.query = @report.project.
|
49
|
+
resourceList.query = @report.project.reportContexts.last.query
|
50
50
|
resourceList.sort!
|
51
51
|
|
52
52
|
adjustReportPeriod(taskList, @report.get('scenarios'),
|
@@ -128,10 +128,18 @@ EOT
|
|
128
128
|
# newtask new.task.id "A task title" {
|
129
129
|
# work X%
|
130
130
|
# remaining Y.Yd
|
131
|
+
# status green "Your headline here!" {
|
132
|
+
# summary -8<-
|
133
|
+
# A summary text
|
134
|
+
# -8<-
|
135
|
+
# details -8<-
|
136
|
+
# Some more details
|
137
|
+
# ->8-
|
138
|
+
# }
|
131
139
|
# }
|
132
140
|
|
133
141
|
# You can use the following section to report personal notes.
|
134
|
-
# status green "
|
142
|
+
# status green "Your headline here!" {
|
135
143
|
# summary -8<-
|
136
144
|
# A summary text
|
137
145
|
# ->8-
|
@@ -169,7 +177,8 @@ EOT
|
|
169
177
|
resourceList.setSorting(@report.get('sortResources'))
|
170
178
|
resourceList = filterResourceList(resourceList, nil,
|
171
179
|
@report.get('hideResource'),
|
172
|
-
@report.get('rollupResource')
|
180
|
+
@report.get('rollupResource'),
|
181
|
+
@report.get('openNodes'))
|
173
182
|
# Prepare a template for the Query we will use to get all the data.
|
174
183
|
scenarioIdx = a('scenarios')[0]
|
175
184
|
queryAttrs = { 'project' => @project,
|
@@ -189,7 +198,7 @@ EOT
|
|
189
198
|
taskList = PropertyList.new(@project.tasks)
|
190
199
|
taskList.setSorting(@report.get('sortTasks'))
|
191
200
|
taskList = filterTaskList(taskList, nil, @report.get('hideTask'),
|
192
|
-
@report.get('rollupTask'))
|
201
|
+
@report.get('rollupTask'), @report.get('openNodes'))
|
193
202
|
|
194
203
|
records = []
|
195
204
|
resourceList.each do |resource|
|
@@ -219,8 +228,8 @@ EOT
|
|
219
228
|
# Now we have to find all the task that the resource is allocated to
|
220
229
|
# during the report period.
|
221
230
|
assignedTaskList = filterTaskList(taskList, resource,
|
222
|
-
a('hideTask'),
|
223
|
-
a('
|
231
|
+
a('hideTask'), a('rollupTask'),
|
232
|
+
a('openNodes'))
|
224
233
|
queryAttrs['scopeProperty'] = resource
|
225
234
|
assignedTaskList.query = Query.new(queryAttrs)
|
226
235
|
assignedTaskList.sort!
|
data/lib/reports/TjpExportRE.rb
CHANGED
@@ -18,15 +18,10 @@ class TaskJuggler
|
|
18
18
|
# project data in the TJP syntax format.
|
19
19
|
class TjpExportRE < ReportBase
|
20
20
|
|
21
|
-
attr_reader :mainFile
|
22
|
-
|
23
21
|
# Create a new object and set some default values.
|
24
22
|
def initialize(report)
|
25
23
|
super(report)
|
26
24
|
|
27
|
-
# Indicates whether this is a full .tjp file or just an .tji include file.
|
28
|
-
@mainFile = a('name')[-4, 4] != '.tji'
|
29
|
-
|
30
25
|
@supportedTaskAttrs = %w( booking complete depends flags maxend
|
31
26
|
maxstart minend minstart note priority
|
32
27
|
responsible )
|
@@ -52,20 +47,21 @@ class TaskJuggler
|
|
52
47
|
@resourceList = PropertyList.new(@project.resources)
|
53
48
|
@resourceList.setSorting(a('sortResources'))
|
54
49
|
@resourceList = filterResourceList(@resourceList, nil, a('hideResource'),
|
55
|
-
a('rollupResource'))
|
50
|
+
a('rollupResource'), a('openNodes'))
|
56
51
|
@resourceList.sort!
|
57
52
|
|
58
53
|
# Prepare the task list.
|
59
54
|
@taskList = PropertyList.new(@project.tasks)
|
60
55
|
@taskList.setSorting(a('sortTasks'))
|
61
|
-
@taskList = filterTaskList(@taskList, nil, a('hideTask'), a('rollupTask')
|
56
|
+
@taskList = filterTaskList(@taskList, nil, a('hideTask'), a('rollupTask'),
|
57
|
+
a('openNodes'))
|
62
58
|
@taskList.sort!
|
63
59
|
|
64
60
|
getBookings
|
65
61
|
|
66
62
|
@file = ''
|
67
63
|
|
68
|
-
generateProjectProperty
|
64
|
+
generateProjectProperty if a('definitions').include?('project')
|
69
65
|
|
70
66
|
generateFlagDeclaration if a('definitions').include?('flags')
|
71
67
|
generateProjectIDs if a('definitions').include?('projectids')
|
@@ -136,11 +132,11 @@ class TaskJuggler
|
|
136
132
|
a('scenarios').each do |scenarioIdx|
|
137
133
|
@taskList.each do |task|
|
138
134
|
pid = task['projectid', scenarioIdx]
|
139
|
-
projectIDs << pid unless projectIDs.include?(pid)
|
135
|
+
projectIDs << pid unless pid.nil? || projectIDs.include?(pid)
|
140
136
|
end
|
141
137
|
end
|
142
138
|
|
143
|
-
@file << "projectids #{projectIDs.join(', ')}\n\n"
|
139
|
+
@file << "projectids #{projectIDs.join(', ')}\n\n" unless projectIDs.empty?
|
144
140
|
end
|
145
141
|
|
146
142
|
def generateResourceList
|
@@ -220,19 +216,18 @@ class TaskJuggler
|
|
220
216
|
if isLeafTask
|
221
217
|
a('scenarios').each do |scenarioIdx|
|
222
218
|
generateAttribute(task, 'start', indent + 2, scenarioIdx)
|
223
|
-
|
219
|
+
if task['milestone', scenarioIdx]
|
220
|
+
generateAttributeText('milestone', indent + 2, scenarioIdx)
|
221
|
+
else
|
224
222
|
generateAttribute(task, 'end', indent + 2, scenarioIdx)
|
223
|
+
generateAttributeText('scheduling ' +
|
224
|
+
(task['forward', scenarioIdx] ?
|
225
|
+
'asap' : 'alap'),
|
226
|
+
indent + 2, scenarioIdx)
|
225
227
|
end
|
226
228
|
if task['scheduled', scenarioIdx]
|
227
229
|
generateAttributeText('scheduled', indent + 2, scenarioIdx)
|
228
230
|
end
|
229
|
-
generateAttributeText('scheduling ' +
|
230
|
-
(task['forward', scenarioIdx] ?
|
231
|
-
'asap' : 'alap'),
|
232
|
-
indent + 2, scenarioIdx)
|
233
|
-
if task['milestone', scenarioIdx]
|
234
|
-
generateAttributeText('milestone', indent + 2, scenarioIdx)
|
235
|
-
end
|
236
231
|
end
|
237
232
|
end
|
238
233
|
|
@@ -332,7 +327,7 @@ class TaskJuggler
|
|
332
327
|
def generateAttributeText(text, indent, scenarioIdx)
|
333
328
|
@file << ' ' * indent
|
334
329
|
tag = ''
|
335
|
-
|
330
|
+
if !scenarioIdx.nil? && scenarioIdx != 0
|
336
331
|
tag = @project.scenario(scenarioIdx).id
|
337
332
|
@file << "#{tag}:"
|
338
333
|
end
|
data/lib/taskjuggler3.rb
CHANGED
@@ -57,6 +57,14 @@ def processArguments(argv)
|
|
57
57
|
'Turn on warnings for requested changes in time sheets') do
|
58
58
|
@warnTsDeltas = true
|
59
59
|
end
|
60
|
+
opts.on('--check-syntax',
|
61
|
+
'Only parse the input files and check the syntax.') do
|
62
|
+
@checkSyntax = true
|
63
|
+
end
|
64
|
+
opts.on('--no-reports',
|
65
|
+
'Just schedule the project, but don\'t generate any reports.') do
|
66
|
+
@noReports = true
|
67
|
+
end
|
60
68
|
opts.on('-o', '--output-dir <directory>', String,
|
61
69
|
'Directory the reports should go into') do |arg|
|
62
70
|
@outputDir = arg + '/'
|
@@ -106,6 +114,8 @@ def main
|
|
106
114
|
@maxCpuCores = 1
|
107
115
|
@forceReports = false
|
108
116
|
@warnTsDeltas = false
|
117
|
+
@checkSyntax = false
|
118
|
+
@noReports = false
|
109
119
|
@outputDir = ''
|
110
120
|
@timeSheets = []
|
111
121
|
@statusSheets = []
|
@@ -122,6 +132,9 @@ def main
|
|
122
132
|
tj.warnTsDeltas = @warnTsDeltas
|
123
133
|
keepParser = !@timeSheets.empty? || !@statusSheets.empty?
|
124
134
|
exit 1 unless tj.parse(files, keepParser)
|
135
|
+
|
136
|
+
exit 0 if @checkSyntax
|
137
|
+
|
125
138
|
if !tj.schedule
|
126
139
|
exit 1 unless @forceReports
|
127
140
|
end
|
@@ -135,6 +148,8 @@ def main
|
|
135
148
|
exit 1 if !tj.checkStatusSheet(ss, File.read(ss)) || tj.errors > 0
|
136
149
|
end
|
137
150
|
|
151
|
+
exit 0 if @noReports
|
152
|
+
|
138
153
|
exit 1 if !tj.generateReports(@outputDir) || tj.errors > 0
|
139
154
|
|
140
155
|
end
|
data/lib/tj3client.rb
CHANGED
@@ -206,7 +206,7 @@ EOT
|
|
206
206
|
end
|
207
207
|
rescue
|
208
208
|
error("TaskJuggler server on host '#{@host}' port " +
|
209
|
-
"#{@port} is not responding
|
209
|
+
"#{@port} is not responding")
|
210
210
|
end
|
211
211
|
end
|
212
212
|
|
@@ -222,6 +222,7 @@ EOT
|
|
222
222
|
$stdout.puts callDaemon(:status, [])
|
223
223
|
when 'terminate'
|
224
224
|
callDaemon(:stop, [])
|
225
|
+
info('Daemon terminated')
|
225
226
|
when 'add'
|
226
227
|
# Ask the daemon to create a new ProjectServer process and return a
|
227
228
|
# DRbObject to access it.
|
@@ -240,6 +241,7 @@ EOT
|
|
240
241
|
error("Project '#{arg}' not found in list")
|
241
242
|
end
|
242
243
|
end
|
244
|
+
info('Project removed')
|
243
245
|
when 'report'
|
244
246
|
# The first value of args is the project ID. The following values
|
245
247
|
# could be either report IDs or TJI file # names ('.' or '*.tji').
|
@@ -259,7 +261,7 @@ EOT
|
|
259
261
|
unless failed
|
260
262
|
reportIds.each do |reportId|
|
261
263
|
unless @reportServer.generateReport(@rs_authKey, reportId,
|
262
|
-
@regExpMode)
|
264
|
+
@regExpMode, nil)
|
263
265
|
failed = true
|
264
266
|
break
|
265
267
|
end
|
@@ -373,11 +375,6 @@ EOT
|
|
373
375
|
error("Report server termination failed: #{$!}")
|
374
376
|
end
|
375
377
|
@reportServer = nil
|
376
|
-
begin
|
377
|
-
@projectServer.dropReportServer(@ps_authKey, @rs_uri)
|
378
|
-
rescue
|
379
|
-
error("Cannot drop report server: #{$!}")
|
380
|
-
end
|
381
378
|
@rs_uri = nil
|
382
379
|
@rs_authKey = nil
|
383
380
|
@projectServer = nil
|
@@ -431,6 +428,11 @@ EOT
|
|
431
428
|
true
|
432
429
|
end
|
433
430
|
|
431
|
+
def info(message)
|
432
|
+
return if @silent
|
433
|
+
$stdout.puts "#{message}"
|
434
|
+
end
|
435
|
+
|
434
436
|
def error(message)
|
435
437
|
$stderr.puts "ERROR: #{message}"
|
436
438
|
exit 1
|