taskjuggler 0.0.3 → 0.0.4
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/benchmarks/UTF-8-Strings.rb +58 -0
- data/data/css/tjmanual.css +52 -0
- data/data/css/tjreport.css +195 -0
- data/data/icons/details.png +0 -0
- data/data/icons/flag-green.png +0 -0
- data/data/icons/flag-red.png +0 -0
- data/data/icons/flag-yellow.png +0 -0
- data/data/icons/resource.png +0 -0
- data/data/icons/resourcegroup.png +0 -0
- data/data/icons/task.png +0 -0
- data/data/icons/taskgroup.png +0 -0
- data/data/icons/trend-down.png +0 -0
- data/data/icons/trend-flat.png +0 -0
- data/data/icons/trend-up.png +0 -0
- data/data/scripts/wz_tooltip.js +1301 -0
- data/doc/classes/AppConfig.html +298 -230
- data/doc/classes/Arguments.html +8 -8
- data/doc/classes/Object.html +7 -7
- data/doc/classes/String.html +89 -89
- data/doc/classes/TaskJuggler.html +396 -264
- data/doc/classes/TaskJuggler/Account.html +18 -18
- data/doc/classes/TaskJuggler/AccountAttribute.html +26 -26
- data/doc/classes/TaskJuggler/AccountScenario.html +12 -12
- data/doc/classes/TaskJuggler/Allocation.html +30 -30
- data/doc/classes/TaskJuggler/AllocationAttribute.html +26 -26
- data/doc/classes/TaskJuggler/AttributeBase.html +227 -115
- data/doc/classes/TaskJuggler/AttributeDefinition.html +6 -6
- data/doc/classes/TaskJuggler/BatchProcessor.html +117 -83
- data/doc/classes/TaskJuggler/Booking.html +18 -18
- data/doc/classes/TaskJuggler/BookingListAttribute.html +26 -26
- data/doc/classes/TaskJuggler/BooleanAttribute.html +26 -26
- data/doc/classes/TaskJuggler/CSVFile.html +24 -24
- data/doc/classes/TaskJuggler/CellSettingPattern.html +201 -0
- data/doc/classes/TaskJuggler/CellSettingPatternList.html +253 -0
- data/doc/classes/TaskJuggler/Charge.html +18 -18
- data/doc/classes/TaskJuggler/ChargeListAttribute.html +20 -20
- data/doc/classes/TaskJuggler/ChargeSet.html +37 -37
- data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +26 -26
- data/doc/classes/TaskJuggler/ColumnListAttribute.html +20 -20
- data/doc/classes/TaskJuggler/ColumnTable.html +40 -40
- data/doc/classes/TaskJuggler/DateAttribute.html +54 -15
- data/doc/classes/TaskJuggler/DefinitionListAttribute.html +10 -10
- data/doc/classes/TaskJuggler/DependencyListAttribute.html +47 -47
- data/doc/classes/TaskJuggler/DurationAttribute.html +30 -30
- data/doc/classes/TaskJuggler/FixnumAttribute.html +20 -20
- data/doc/classes/TaskJuggler/FlagListAttribute.html +43 -43
- data/doc/classes/TaskJuggler/FloatAttribute.html +30 -30
- data/doc/classes/TaskJuggler/FormatListAttribute.html +21 -21
- data/doc/classes/TaskJuggler/GanttChart.html +48 -48
- data/doc/classes/TaskJuggler/GanttContainer.html +42 -42
- data/doc/classes/TaskJuggler/GanttHeader.html +12 -12
- data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +12 -12
- data/doc/classes/TaskJuggler/GanttLine.html +24 -24
- data/doc/classes/TaskJuggler/GanttLoadStack.html +18 -18
- data/doc/classes/TaskJuggler/GanttMilestone.html +42 -42
- data/doc/classes/TaskJuggler/GanttRouter.html +24 -24
- data/doc/classes/TaskJuggler/GanttTaskBar.html +42 -42
- data/doc/classes/TaskJuggler/HTMLDocument.html +13 -13
- data/doc/classes/TaskJuggler/HTMLGraphics.html +12 -12
- data/doc/classes/TaskJuggler/Interval.html +57 -57
- data/doc/classes/TaskJuggler/IntervalListAttribute.html +47 -47
- data/doc/classes/TaskJuggler/JobInfo.html +68 -12
- data/doc/classes/TaskJuggler/Journal.html +266 -20
- data/doc/classes/TaskJuggler/JournalEntry.html +79 -23
- data/doc/classes/TaskJuggler/JournalEntryList.html +454 -0
- data/doc/classes/TaskJuggler/KeywordArray.html +10 -10
- data/doc/classes/TaskJuggler/KeywordDocumentation.html +171 -170
- data/doc/classes/TaskJuggler/Limits.html +36 -36
- data/doc/classes/TaskJuggler/Limits/Limit.html +30 -30
- data/doc/classes/TaskJuggler/LimitsAttribute.html +40 -40
- data/doc/classes/TaskJuggler/ListAttributeBase.html +20 -20
- data/doc/classes/TaskJuggler/Log.html +145 -107
- data/doc/classes/TaskJuggler/LogicalAttribute.html +65 -36
- data/doc/classes/TaskJuggler/LogicalExpression.html +61 -24
- data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +20 -20
- data/doc/classes/TaskJuggler/LogicalFlag.html +31 -51
- data/doc/classes/TaskJuggler/LogicalFunction.html +64 -53
- data/doc/classes/TaskJuggler/LogicalOperation.html +103 -55
- data/doc/classes/TaskJuggler/Macro.html +6 -6
- data/doc/classes/TaskJuggler/MacroParser.html +36 -36
- data/doc/classes/TaskJuggler/MacroTable.html +37 -37
- data/doc/classes/TaskJuggler/Message.html +12 -12
- data/doc/classes/TaskJuggler/MessageHandler.html +32 -20
- data/doc/classes/TaskJuggler/Navigator.html +110 -46
- data/doc/classes/TaskJuggler/NavigatorElement.html +449 -0
- data/doc/classes/TaskJuggler/OnShiftCache.html +24 -24
- data/doc/classes/TaskJuggler/Project.html +1158 -893
- data/doc/classes/TaskJuggler/ProjectFileParser.html +94 -91
- data/doc/classes/TaskJuggler/PropertyAttribute.html +20 -20
- data/doc/classes/TaskJuggler/PropertyList.html +225 -155
- data/doc/classes/TaskJuggler/PropertySet.html +375 -332
- data/doc/classes/TaskJuggler/PropertyTreeNode.html +750 -510
- data/doc/classes/TaskJuggler/Query.html +404 -139
- data/doc/classes/TaskJuggler/{RTPNavigator.html → RTFNavigator.html} +57 -56
- data/doc/classes/TaskJuggler/RTFQuery.html +343 -0
- data/doc/classes/TaskJuggler/{RTPReport.html → RTFReport.html} +70 -67
- data/doc/classes/TaskJuggler/RealFormat.html +18 -18
- data/doc/classes/TaskJuggler/RealFormatAttribute.html +10 -10
- data/doc/classes/TaskJuggler/ReferenceAttribute.html +107 -40
- data/doc/classes/TaskJuggler/RemoteServiceManager.html +335 -0
- data/doc/classes/TaskJuggler/Report.html +66 -64
- data/doc/classes/TaskJuggler/ReportBase.html +112 -123
- data/doc/classes/TaskJuggler/ReportContext.html +43 -38
- data/doc/classes/TaskJuggler/ReportServer.html +320 -0
- data/doc/classes/TaskJuggler/ReportTable.html +42 -42
- data/doc/classes/TaskJuggler/ReportTableCell.html +221 -129
- data/doc/classes/TaskJuggler/ReportTableColumn.html +27 -27
- data/doc/classes/TaskJuggler/ReportTableLegend.html +24 -24
- data/doc/classes/TaskJuggler/ReportTableLine.html +126 -80
- data/doc/classes/TaskJuggler/Resource.html +12 -12
- data/doc/classes/TaskJuggler/ResourceListAttribute.html +82 -47
- data/doc/classes/TaskJuggler/ResourceListRE.html +43 -39
- data/doc/classes/TaskJuggler/ResourceScenario.html +413 -321
- data/doc/classes/TaskJuggler/RichText.html +64 -248
- data/doc/classes/TaskJuggler/RichTextAttribute.html +94 -30
- data/doc/classes/TaskJuggler/RichTextDocument.html +87 -85
- data/doc/classes/TaskJuggler/RichTextElement.html +456 -363
- data/doc/classes/TaskJuggler/RichTextException.html +13 -13
- data/doc/classes/TaskJuggler/{RichTextProtocolExample.html → RichTextFunctionExample.html} +64 -63
- data/doc/classes/TaskJuggler/{RichTextProtocolHandler.html → RichTextFunctionHandler.html} +42 -36
- data/doc/classes/TaskJuggler/RichTextIntermediate.html +563 -0
- data/doc/classes/TaskJuggler/RichTextParser.html +54 -51
- data/doc/classes/TaskJuggler/RichTextScanner.html +94 -92
- data/doc/classes/TaskJuggler/RichTextSnip.html +96 -60
- data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +369 -227
- data/doc/classes/TaskJuggler/Scenario.html +6 -6
- data/doc/classes/TaskJuggler/ScenarioData.html +37 -37
- data/doc/classes/TaskJuggler/ScenarioListAttribute.html +31 -31
- data/doc/classes/TaskJuggler/Scoreboard.html +66 -66
- data/doc/classes/TaskJuggler/Shift.html +18 -18
- data/doc/classes/TaskJuggler/ShiftAssignment.html +54 -54
- data/doc/classes/TaskJuggler/ShiftAssignments.html +78 -78
- data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +40 -40
- data/doc/classes/TaskJuggler/ShiftScenario.html +24 -24
- data/doc/classes/TaskJuggler/SortListAttribute.html +22 -22
- data/doc/classes/TaskJuggler/SourceFileInfo.html +12 -12
- data/doc/classes/TaskJuggler/StringAttribute.html +30 -30
- data/doc/classes/TaskJuggler/SymbolAttribute.html +20 -20
- data/doc/classes/TaskJuggler/SyntaxReference.html +42 -42
- data/doc/classes/TaskJuggler/TOCEntry.html +12 -12
- data/doc/classes/TaskJuggler/TSResourceRecord.html +197 -0
- data/doc/classes/TaskJuggler/TSTaskRecord.html +215 -0
- data/doc/classes/TaskJuggler/TableColumnDefinition.html +64 -43
- data/doc/classes/TaskJuggler/TableOfContents.html +18 -18
- data/doc/classes/TaskJuggler/TableReport.html +447 -468
- data/doc/classes/TaskJuggler/Task.html +12 -12
- data/doc/classes/TaskJuggler/TaskDependency.html +12 -12
- data/doc/classes/TaskJuggler/TaskListAttribute.html +47 -47
- data/doc/classes/TaskJuggler/TaskListRE.html +43 -39
- data/doc/classes/TaskJuggler/TaskScenario.html +529 -282
- data/doc/classes/TaskJuggler/TextParser.html +215 -194
- data/doc/classes/TaskJuggler/TextParser/Pattern.html +97 -97
- data/doc/classes/TaskJuggler/TextParser/Rule.html +84 -84
- data/doc/classes/TaskJuggler/TextParser/StackElement.html +16 -15
- data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +12 -12
- data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +6 -6
- data/doc/classes/TaskJuggler/TextReport.html +77 -74
- data/doc/classes/TaskJuggler/TextScanner.html +294 -281
- data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +70 -70
- data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +59 -60
- data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +12 -12
- data/doc/classes/TaskJuggler/TimeSheetReport.html +406 -0
- data/doc/classes/TaskJuggler/TjException.html +6 -6
- data/doc/classes/TaskJuggler/TjTime.html +522 -513
- data/doc/classes/TaskJuggler/TjpExample.html +25 -25
- data/doc/classes/TaskJuggler/TjpExportRE.html +21 -24
- data/doc/classes/TaskJuggler/TjpSyntaxRules.html +6177 -4318
- data/doc/classes/TaskJuggler/UserManual.html +212 -213
- data/doc/classes/TaskJuggler/WorkingHours.html +49 -49
- data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +53 -53
- data/doc/classes/TaskJuggler/XMLBlob.html +21 -21
- data/doc/classes/TaskJuggler/XMLComment.html +21 -21
- data/doc/classes/TaskJuggler/XMLDocument.html +27 -26
- data/doc/classes/TaskJuggler/XMLElement.html +86 -50
- data/doc/classes/TaskJuggler/XMLNamedText.html +11 -11
- data/doc/classes/TaskJuggler/XMLText.html +36 -36
- data/doc/files/COPYING.html +1 -1
- data/doc/files/README.html +1 -1
- data/doc/files/lib/AccountScenario_rb.html +3 -2
- data/doc/files/lib/Account_rb.html +3 -2
- data/doc/files/lib/Allocation_rb.html +3 -2
- data/doc/files/lib/AppConfig_rb.html +5 -2
- data/doc/files/lib/AttributeBase_rb.html +3 -2
- data/doc/files/lib/AttributeDefinition_rb.html +3 -2
- data/doc/files/lib/Attributes_rb.html +3 -2
- data/doc/files/lib/BatchProcessor_rb.html +4 -3
- data/doc/files/lib/Booking_rb.html +3 -2
- data/doc/files/lib/ChargeSet_rb.html +3 -2
- data/doc/files/lib/Charge_rb.html +3 -2
- data/doc/files/lib/HTMLDocument_rb.html +3 -2
- data/doc/files/lib/Interval_rb.html +3 -2
- data/doc/files/lib/Journal_rb.html +4 -3
- data/doc/files/lib/KeywordArray_rb.html +3 -2
- data/doc/files/lib/KeywordDocumentation_rb.html +3 -2
- data/doc/files/lib/Limits_rb.html +3 -2
- data/doc/files/lib/Log_rb.html +3 -2
- data/doc/files/lib/LogicalExpression_rb.html +3 -2
- data/doc/files/lib/LogicalFunction_rb.html +3 -2
- data/doc/files/lib/LogicalOperation_rb.html +3 -2
- data/doc/files/lib/MacroParser_rb.html +3 -2
- data/doc/files/lib/MacroTable_rb.html +3 -2
- data/doc/files/lib/MessageHandler_rb.html +3 -2
- data/doc/files/lib/Message_rb.html +3 -2
- data/doc/files/lib/ProjectFileParser_rb.html +7 -4
- data/doc/files/lib/Project_rb.html +3 -2
- data/doc/files/lib/PropertyList_rb.html +3 -2
- data/doc/files/lib/PropertySet_rb.html +3 -2
- data/doc/files/lib/PropertyTreeNode_rb.html +3 -2
- data/doc/files/lib/Query_rb.html +3 -2
- data/doc/files/lib/{RTPNavigator_rb.html → RTFNavigator_rb.html} +8 -7
- data/doc/files/lib/RTFQuery_rb.html +121 -0
- data/doc/files/lib/{RTPReport_rb.html → RTFReport_rb.html} +8 -7
- data/doc/files/lib/RealFormat_rb.html +3 -2
- data/doc/files/lib/RemoteServiceManager_rb.html +117 -0
- data/doc/files/lib/ReportServer_rb.html +107 -0
- data/doc/files/lib/ResourceScenario_rb.html +3 -2
- data/doc/files/lib/Resource_rb.html +3 -2
- data/doc/files/lib/RichTextDocument_rb.html +4 -3
- data/doc/files/lib/RichTextElement_rb.html +3 -2
- data/doc/files/lib/{RichTextProtocolExample_rb.html → RichTextFunctionExample_rb.html} +8 -7
- data/doc/files/lib/{RichTextProtocolHandler_rb.html → RichTextFunctionHandler_rb.html} +7 -6
- data/doc/files/lib/RichTextParser_rb.html +3 -2
- data/doc/files/lib/RichTextScanner_rb.html +3 -2
- data/doc/files/lib/RichTextSnip_rb.html +3 -2
- data/doc/files/lib/RichTextSyntaxRules_rb.html +3 -2
- data/doc/files/lib/RichText_rb.html +3 -2
- data/doc/files/lib/ScenarioData_rb.html +3 -2
- data/doc/files/lib/Scenario_rb.html +3 -2
- data/doc/files/lib/Scoreboard_rb.html +3 -2
- data/doc/files/lib/ShiftAssignments_rb.html +3 -2
- data/doc/files/lib/ShiftScenario_rb.html +3 -2
- data/doc/files/lib/Shift_rb.html +3 -2
- data/doc/files/lib/SourceFileInfo_rb.html +3 -2
- data/doc/files/lib/SyntaxReference_rb.html +3 -2
- data/doc/files/lib/TOCEntry_rb.html +3 -2
- data/doc/files/lib/TableColumnDefinition_rb.html +3 -2
- data/doc/files/lib/TableOfContents_rb.html +3 -2
- data/doc/files/lib/TaskDependency_rb.html +3 -2
- data/doc/files/lib/TaskJuggler_rb.html +7 -2
- data/doc/files/lib/TaskScenario_rb.html +3 -2
- data/doc/files/lib/Task_rb.html +3 -2
- data/doc/files/lib/TextParser/Pattern_rb.html +4 -3
- data/doc/files/lib/TextParser/Rule_rb.html +4 -3
- data/doc/files/lib/TextParser/StackElement_rb.html +4 -3
- data/doc/files/lib/TextParser/TokenDoc_rb.html +4 -3
- data/doc/files/lib/TextParser_rb.html +3 -2
- data/doc/files/lib/TextScanner_rb.html +3 -2
- data/doc/files/lib/Tj3Config_rb.html +3 -2
- data/doc/files/lib/TjException_rb.html +3 -2
- data/doc/files/lib/TjTime_rb.html +3 -2
- data/doc/files/lib/TjpExample_rb.html +3 -2
- data/doc/files/lib/TjpSyntaxRules_rb.html +3 -2
- data/doc/files/lib/UTF8String_rb.html +14 -6
- data/doc/files/lib/UserManual_rb.html +6 -3
- data/doc/files/lib/WorkingHours_rb.html +3 -2
- data/doc/files/lib/XMLDocument_rb.html +3 -2
- data/doc/files/lib/XMLElement_rb.html +3 -2
- data/doc/files/lib/deep_copy_rb.html +3 -2
- data/doc/files/lib/reports/CSVFile_rb.html +3 -2
- data/doc/files/lib/reports/ColumnTable_rb.html +3 -2
- data/doc/files/lib/reports/GanttChart_rb.html +3 -2
- data/doc/files/lib/reports/GanttContainer_rb.html +3 -2
- data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +3 -2
- data/doc/files/lib/reports/GanttHeader_rb.html +3 -2
- data/doc/files/lib/reports/GanttLine_rb.html +3 -2
- data/doc/files/lib/reports/GanttLoadStack_rb.html +3 -2
- data/doc/files/lib/reports/GanttMilestone_rb.html +3 -2
- data/doc/files/lib/reports/GanttRouter_rb.html +3 -2
- data/doc/files/lib/reports/GanttTaskBar_rb.html +3 -2
- data/doc/files/lib/reports/HTMLGraphics_rb.html +3 -2
- data/doc/files/lib/reports/Navigator_rb.html +3 -2
- data/doc/files/lib/reports/ReportBase_rb.html +3 -2
- data/doc/files/lib/reports/ReportContext_rb.html +3 -2
- data/doc/files/lib/reports/ReportTableCell_rb.html +3 -2
- data/doc/files/lib/reports/ReportTableColumn_rb.html +3 -2
- data/doc/files/lib/reports/ReportTableLegend_rb.html +3 -2
- data/doc/files/lib/reports/ReportTableLine_rb.html +3 -2
- data/doc/files/lib/reports/ReportTable_rb.html +3 -2
- data/doc/files/lib/reports/Report_rb.html +7 -2
- data/doc/files/lib/reports/ResourceListRE_rb.html +3 -2
- data/doc/files/lib/reports/TableReport_rb.html +3 -2
- data/doc/files/lib/reports/TaskListRE_rb.html +3 -2
- data/doc/files/lib/reports/TextReport_rb.html +4 -3
- data/doc/files/lib/reports/TimeSheetReport_rb.html +117 -0
- data/doc/files/lib/reports/TjpExportRE_rb.html +3 -2
- data/doc/files/lib/taskjuggler3_rb.html +94 -77
- data/doc/files/lib/tj3client_rb.html +280 -0
- data/doc/files/lib/tj3man_rb.html +10 -9
- data/doc/fr_class_index.html +27 -5
- data/doc/fr_file_index.html +15 -7
- data/doc/fr_method_index.html +1312 -1020
- data/examples/tutorial.tjp +113 -14
- data/gem_spec.rb +2 -1
- data/lib/Account.rb +1 -1
- data/lib/AccountScenario.rb +1 -1
- data/lib/Allocation.rb +1 -1
- data/lib/AppConfig.rb +23 -10
- data/lib/AttributeBase.rb +34 -6
- data/lib/AttributeDefinition.rb +1 -1
- data/lib/Attributes.rb +51 -16
- data/lib/BatchProcessor.rb +204 -77
- data/lib/Booking.rb +1 -1
- data/lib/Charge.rb +1 -1
- data/lib/ChargeSet.rb +1 -1
- data/lib/HTMLDocument.rb +2 -2
- data/lib/Interval.rb +1 -1
- data/lib/Journal.rb +231 -9
- data/lib/KeywordArray.rb +1 -1
- data/lib/KeywordDocumentation.rb +6 -4
- data/lib/Limits.rb +1 -1
- data/lib/Log.rb +8 -1
- data/lib/LogicalExpression.rb +14 -13
- data/lib/LogicalFunction.rb +88 -14
- data/lib/LogicalOperation.rb +124 -53
- data/lib/MacroParser.rb +1 -1
- data/lib/MacroTable.rb +2 -2
- data/lib/Message.rb +1 -1
- data/lib/MessageHandler.rb +7 -3
- data/lib/Project.rb +93 -14
- data/lib/ProjectFileParser.rb +30 -15
- data/lib/PropertyList.rb +103 -36
- data/lib/PropertySet.rb +22 -10
- data/lib/PropertyTreeNode.rb +120 -15
- data/lib/Query.rb +119 -48
- data/lib/{RTPNavigator.rb → RTFNavigator.rb} +11 -10
- data/lib/RTFQuery.rb +166 -0
- data/lib/{RTPReport.rb → RTFReport.rb} +11 -8
- data/lib/RealFormat.rb +1 -1
- data/lib/RemoteServiceManager.rb +80 -0
- data/lib/ReportServer.rb +66 -0
- data/lib/Resource.rb +1 -1
- data/lib/ResourceScenario.rb +48 -19
- data/lib/RichText.rb +98 -41
- data/lib/RichTextDocument.rb +10 -8
- data/lib/RichTextElement.rb +72 -28
- data/lib/{RichTextProtocolExample.rb → RichTextFunctionExample.rb} +8 -7
- data/lib/{RichTextProtocolHandler.rb → RichTextFunctionHandler.rb} +12 -14
- data/lib/RichTextParser.rb +6 -3
- data/lib/RichTextScanner.rb +91 -19
- data/lib/RichTextSnip.rb +8 -3
- data/lib/RichTextSyntaxRules.rb +103 -45
- data/lib/Scenario.rb +1 -1
- data/lib/ScenarioData.rb +2 -2
- data/lib/Scoreboard.rb +1 -1
- data/lib/Shift.rb +1 -1
- data/lib/ShiftAssignments.rb +1 -1
- data/lib/ShiftScenario.rb +1 -1
- data/lib/SourceFileInfo.rb +1 -1
- data/lib/SyntaxReference.rb +2 -2
- data/lib/TOCEntry.rb +1 -1
- data/lib/TableColumnDefinition.rb +59 -16
- data/lib/TableOfContents.rb +1 -1
- data/lib/Task.rb +1 -1
- data/lib/TaskDependency.rb +1 -1
- data/lib/TaskJuggler.rb +31 -8
- data/lib/TaskScenario.rb +165 -16
- data/lib/TextParser.rb +36 -22
- data/lib/TextParser/Pattern.rb +3 -3
- data/lib/TextParser/Rule.rb +2 -2
- data/lib/TextParser/StackElement.rb +4 -3
- data/lib/TextParser/TokenDoc.rb +2 -2
- data/lib/TextScanner.rb +52 -37
- data/lib/Tj3Config.rb +6 -5
- data/lib/TjException.rb +1 -1
- data/lib/TjTime.rb +12 -3
- data/lib/TjpExample.rb +1 -1
- data/lib/TjpSyntaxRules.rb +1044 -150
- data/lib/UTF8String.rb +2 -1
- data/lib/UserManual.rb +18 -70
- data/lib/WorkingHours.rb +3 -3
- data/lib/XMLDocument.rb +3 -2
- data/lib/XMLElement.rb +6 -1
- data/lib/deep_copy.rb +1 -1
- data/lib/reports/CSVFile.rb +1 -1
- data/lib/reports/ColumnTable.rb +9 -9
- data/lib/reports/GanttChart.rb +1 -1
- data/lib/reports/GanttContainer.rb +1 -1
- data/lib/reports/GanttHeader.rb +1 -1
- data/lib/reports/GanttHeaderScaleItem.rb +1 -1
- data/lib/reports/GanttLine.rb +40 -40
- data/lib/reports/GanttLoadStack.rb +1 -1
- data/lib/reports/GanttMilestone.rb +1 -1
- data/lib/reports/GanttRouter.rb +1 -1
- data/lib/reports/GanttTaskBar.rb +1 -1
- data/lib/reports/HTMLGraphics.rb +1 -1
- data/lib/reports/Navigator.rb +149 -22
- data/lib/reports/Report.rb +115 -172
- data/lib/reports/ReportBase.rb +22 -27
- data/lib/reports/ReportContext.rb +29 -15
- data/lib/reports/ReportTable.rb +1 -1
- data/lib/reports/ReportTableCell.rb +120 -27
- data/lib/reports/ReportTableColumn.rb +3 -3
- data/lib/reports/ReportTableLegend.rb +1 -1
- data/lib/reports/ReportTableLine.rb +10 -2
- data/lib/reports/ResourceListRE.rb +5 -1
- data/lib/reports/TableReport.rb +237 -287
- data/lib/reports/TaskListRE.rb +5 -1
- data/lib/reports/TextReport.rb +7 -4
- data/lib/reports/TimeSheetReport.rb +233 -0
- data/lib/reports/TjpExportRE.rb +2 -2
- data/lib/taskjuggler3.rb +27 -11
- data/lib/tj3client.rb +110 -0
- data/lib/tj3man.rb +4 -4
- data/manual/Getting_Started +0 -50
- data/manual/How_To_Contribute +6 -13
- data/manual/Installation +102 -28
- data/manual/Intro +11 -1
- data/manual/Reporting_Bugs +23 -7
- data/manual/Rich_Text_Attributes +59 -6
- data/manual/TaskJuggler_2x_Migration +27 -0
- data/manual/The_TaskJuggler_Syntax +104 -0
- data/manual/Tutorial +10 -9
- data/prj_cfg.rb +8 -2
- data/tasks/csts.rake +1 -1
- data/tasks/manual.rake +5 -3
- data/test/MessageChecker.rb +1 -1
- data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
- data/test/TestSuite/HTML-Reports/Alerts.tjp +77 -0
- data/test/TestSuite/HTML-Reports/CellText.html +758 -0
- data/test/TestSuite/HTML-Reports/CellText.tjp +75 -0
- data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
- data/test/TestSuite/HTML-Reports/ColumnPeriods.tjp +44 -0
- data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
- data/test/TestSuite/HTML-Reports/IsOngoing.tjp +34 -0
- data/test/TestSuite/HTML-Reports/LogicalFunctions.html +80 -0
- data/test/TestSuite/HTML-Reports/LogicalFunctions.tjp +20 -0
- data/test/TestSuite/HTML-Reports/Query.html +31 -0
- data/test/TestSuite/HTML-Reports/Query.tjp +28 -0
- data/test/TestSuite/HTML-Reports/Sorting.tjp +68 -0
- data/test/TestSuite/HTML-Reports/TimeSheet.tjp +69 -0
- data/test/TestSuite/HTML-Reports/UDAQuery.tjp +27 -0
- data/test/TestSuite/HTML-Reports/css/tjmanual.css +52 -0
- data/test/TestSuite/HTML-Reports/css/tjreport.css +195 -0
- data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
- data/test/TestSuite/HTML-Reports/icons/details.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/flag-green.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/flag-red.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/flag-yellow.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/resource.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/resourcegroup.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/task.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/taskgroup.png +0 -0
- data/test/TestSuite/HTML-Reports/reference.tjp +7 -8
- data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +34 -0
- data/test/TestSuite/Syntax/Correct/Celltext.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -2
- data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +20 -0
- data/test/TestSuite/Syntax/Correct/Query.tjp +18 -0
- data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +45 -0
- data/test/TestSuite/Syntax/Correct/TimeSheet.tjp +49 -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/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +113 -14
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +28 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +12 -0
- data/test/all.rb +2 -2
- data/test/test_BatchProcessor.rb +42 -13
- data/test/test_CSV-Reports.rb +1 -1
- data/test/test_Journal.rb +176 -0
- data/test/test_Limits.rb +1 -1
- data/test/test_LogicalExpression.rb +14 -5
- data/test/test_MacroTable.rb +1 -1
- data/test/test_Project.rb +1 -1
- data/test/test_PropertySet.rb +1 -1
- data/test/test_Query.rb +1 -1
- data/test/test_RealFormat.rb +1 -1
- data/test/test_RichText.rb +30 -20
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +2 -2
- data/test/test_Syntax.rb +1 -1
- data/test/test_TextScanner.rb +1 -1
- data/test/test_TjTime.rb +1 -1
- data/test/test_TjpExample.rb +1 -1
- data/test/test_UTF8String.rb +1 -1
- data/test/test_WorkingHours.rb +1 -1
- data/test/test_deep_copy.rb +2 -2
- metadata +610 -532
- data/doc/files/lib/ms_test_rb.html +0 -90
- data/examples/ContactList.html +0 -1467
- data/examples/Deliveries.html +0 -485
- data/examples/Development.html +0 -2525
- data/examples/Overview.html +0 -747
- data/examples/Resource Graph.html +0 -616
- data/lib/ms_test.rb +0 -27
- data/test/TestSuite/HTML-Reports/reference-export.html +0 -187
|
@@ -99,6 +99,11 @@ balance cost rev
|
|
|
99
99
|
# *** EXAMPLE: balance -
|
|
100
100
|
|
|
101
101
|
# *** EXAMPLE: resources +
|
|
102
|
+
resource boss "Paul Henry Bullock" {
|
|
103
|
+
Email "phb@crappysoftware.com"
|
|
104
|
+
Phone "x100"
|
|
105
|
+
rate 480
|
|
106
|
+
}
|
|
102
107
|
resource dev "Developers" {
|
|
103
108
|
resource dev1 "Paul Smith" {
|
|
104
109
|
Email "paul@crappysoftware.com"
|
|
@@ -212,6 +217,18 @@ task AcSo "Accounting Software" {
|
|
|
212
217
|
effort 20d
|
|
213
218
|
allocate dev1, dev2
|
|
214
219
|
# *** EXAMPLE: software +
|
|
220
|
+
journalentry 2002-02-03 "Problems with the SQL Libary" {
|
|
221
|
+
author dev1
|
|
222
|
+
alert yellow
|
|
223
|
+
summary -8<-
|
|
224
|
+
We ran into some compatibility problems with the SQL
|
|
225
|
+
Library.
|
|
226
|
+
->8-
|
|
227
|
+
details -8<-
|
|
228
|
+
We have already contacted the vendor and are now waiting for
|
|
229
|
+
their advise.
|
|
230
|
+
->8-
|
|
231
|
+
}
|
|
215
232
|
}
|
|
216
233
|
# *** EXAMPLE: database -
|
|
217
234
|
# *** EXAMPLE: software -
|
|
@@ -278,6 +295,17 @@ task AcSo "Accounting Software" {
|
|
|
278
295
|
depends !!software
|
|
279
296
|
allocate test, dev2
|
|
280
297
|
note "Hopefully most bugs will be found and fixed here."
|
|
298
|
+
journalentry 2002-03-01 "Contract with Peter not yet signed" {
|
|
299
|
+
author boss
|
|
300
|
+
alert red
|
|
301
|
+
summary -8<-
|
|
302
|
+
The paperwork is stuck with HR and I can't hunt it down.
|
|
303
|
+
->8-
|
|
304
|
+
details -8<-
|
|
305
|
+
If we don't get the contract closed within the next week,
|
|
306
|
+
the start of the testing is at risk.
|
|
307
|
+
->8-
|
|
308
|
+
}
|
|
281
309
|
}
|
|
282
310
|
|
|
283
311
|
task beta "Beta Test" {
|
|
@@ -300,6 +328,10 @@ task AcSo "Accounting Software" {
|
|
|
300
328
|
purge chargeset
|
|
301
329
|
chargeset doc
|
|
302
330
|
# *** EXAMPLE: task1 +
|
|
331
|
+
journalentry 2002-02-28 "User manual completed" {
|
|
332
|
+
author boss
|
|
333
|
+
summary "The doc writers did a really great job to finish on time."
|
|
334
|
+
}
|
|
303
335
|
}
|
|
304
336
|
# *** EXAMPLE: manual -
|
|
305
337
|
# *** EXAMPLE: task1 -
|
|
@@ -380,8 +412,7 @@ navigator navbar {
|
|
|
380
412
|
|
|
381
413
|
# *** EXAMPLE: overview_report1 +
|
|
382
414
|
# *** EXAMPLE: overview_report2 +
|
|
383
|
-
textreport "
|
|
384
|
-
formats html
|
|
415
|
+
textreport "" {
|
|
385
416
|
# *** EXAMPLE: overview_report1 -
|
|
386
417
|
header -8<-
|
|
387
418
|
== Accounting Software Project ==
|
|
@@ -389,23 +420,46 @@ textreport "Overview" {
|
|
|
389
420
|
<[navigator id="navbar"]>
|
|
390
421
|
----
|
|
391
422
|
->8-
|
|
423
|
+
footer "----"
|
|
392
424
|
# *** EXAMPLE: overview_report1 +
|
|
393
|
-
|
|
425
|
+
textreport "Overview" {
|
|
426
|
+
formats html
|
|
427
|
+
center '<[report id="overview"]>'
|
|
428
|
+
}
|
|
394
429
|
# *** EXAMPLE: overview_report1 -
|
|
395
430
|
# *** EXAMPLE: overview_report2 -
|
|
396
431
|
|
|
432
|
+
textreport "Status" {
|
|
433
|
+
formats html
|
|
434
|
+
center -8<-
|
|
435
|
+
<[report id="status.dashboard"]>
|
|
436
|
+
----
|
|
437
|
+
<[report id="status.completed"]>
|
|
438
|
+
----
|
|
439
|
+
<[report id="status.ongoing"]>
|
|
440
|
+
----
|
|
441
|
+
<[report id="status.future"]>
|
|
442
|
+
->8-
|
|
443
|
+
}
|
|
444
|
+
|
|
397
445
|
textreport "Development" {
|
|
446
|
+
formats html
|
|
398
447
|
center '<[report id="development"]>'
|
|
399
448
|
}
|
|
400
449
|
|
|
401
450
|
textreport "Deliveries" {
|
|
451
|
+
formats html
|
|
402
452
|
center '<[report id="deliveries"]>'
|
|
403
453
|
}
|
|
404
454
|
|
|
405
455
|
textreport "ContactList" {
|
|
456
|
+
formats html
|
|
457
|
+
title "Contact List"
|
|
406
458
|
center '<[report id="contactList"]>'
|
|
407
459
|
}
|
|
408
|
-
textreport "
|
|
460
|
+
textreport "ResourceGraph" {
|
|
461
|
+
formats html
|
|
462
|
+
title "Resource Graph"
|
|
409
463
|
center '<[report id="resourceGraph"]>'
|
|
410
464
|
}
|
|
411
465
|
# *** EXAMPLE: overview_report1 +
|
|
@@ -429,11 +483,13 @@ taskreport overview "" {
|
|
|
429
483
|
# [[Development]]
|
|
430
484
|
# Testing
|
|
431
485
|
|
|
432
|
-
=== Project Plan ===
|
|
486
|
+
=== Original Project Plan ===
|
|
433
487
|
->8-
|
|
434
488
|
# *** EXAMPLE: overview4 -
|
|
435
489
|
# *** EXAMPLE: overview1 +
|
|
436
|
-
columns hierarchindex,
|
|
490
|
+
columns hierarchindex,
|
|
491
|
+
name { tooltip 1 "'''ID''': <-query attribute='id'->" },
|
|
492
|
+
start, end, effort, duration, cost,
|
|
437
493
|
revenue, chart
|
|
438
494
|
# *** EXAMPLE: overview1 -
|
|
439
495
|
# For this report we like to have the abbreviated weekday in front
|
|
@@ -467,29 +523,69 @@ taskreport overview "" {
|
|
|
467
523
|
# *** EXAMPLE: overview1 -
|
|
468
524
|
# *** EXAMPLE: overview -
|
|
469
525
|
|
|
526
|
+
# Macro to set the background color of a cell according to the alert
|
|
527
|
+
# level of the task.
|
|
528
|
+
macro AlertColor [
|
|
529
|
+
cellcolor plan.alert = 0 "#00D000" # green
|
|
530
|
+
cellcolor plan.alert = 1 "#D0D000" # yellow
|
|
531
|
+
cellcolor plan.alert = 2 "#D00000" # red
|
|
532
|
+
]
|
|
533
|
+
|
|
534
|
+
taskreport status "" {
|
|
535
|
+
columns wbs, name, start, end, effort, alert, status
|
|
536
|
+
scenarios delayed
|
|
537
|
+
|
|
538
|
+
taskreport dashboard "" {
|
|
539
|
+
headline "Project Dashboard (<-query attribute='now'->)"
|
|
540
|
+
columns name { title "Task" ${AlertColor} },
|
|
541
|
+
resources { width 200 ${AlertColor}
|
|
542
|
+
start ${projectstart} end ${projectend} },
|
|
543
|
+
alerttrend { title "Trend" ${AlertColor} },
|
|
544
|
+
alertmessage { width 260 ${AlertColor} }
|
|
545
|
+
hidetask ~hasalert(0)
|
|
546
|
+
sorttasks alert.down, delayed.end.up
|
|
547
|
+
period %{${now} - 1w} +1w
|
|
548
|
+
}
|
|
549
|
+
taskreport completed "" {
|
|
550
|
+
headline "Already completed tasks"
|
|
551
|
+
hidetask ~(delayed.end <= ${now})
|
|
552
|
+
}
|
|
553
|
+
taskreport ongoing "" {
|
|
554
|
+
headline "Ongoing tasks"
|
|
555
|
+
hidetask ~((delayed.start <= ${now}) & (delayed.end > ${now}))
|
|
556
|
+
}
|
|
557
|
+
taskreport future "" {
|
|
558
|
+
headline "Future tasks"
|
|
559
|
+
hidetask ~(delayed.start > ${now})
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
470
563
|
# A list of tasks showing the resources assigned to each task.
|
|
471
564
|
taskreport development "" {
|
|
565
|
+
scenarios delayed
|
|
472
566
|
headline "Development - Resource Allocation Report"
|
|
473
567
|
columns hierarchindex, name, start, end, effort { title "Work" },
|
|
474
|
-
duration, chart { scale day }
|
|
568
|
+
duration, chart { scale day width 500 }
|
|
475
569
|
timeformat "%Y-%m-%d"
|
|
476
|
-
hideresource ~isleaf()
|
|
570
|
+
hideresource ~(isleaf() & isleaf_())
|
|
477
571
|
sortresources name.up
|
|
478
572
|
}
|
|
479
573
|
|
|
480
574
|
# A list of all tasks with the percentage completed for each task
|
|
481
575
|
taskreport deliveries "" {
|
|
482
|
-
headline "Project
|
|
483
|
-
columns hierarchindex, name, start, end, note, complete, chart
|
|
576
|
+
headline "Project Deliverables"
|
|
577
|
+
columns hierarchindex, name, start, end, note { width 150 }, complete, chart
|
|
484
578
|
taskroot AcSo.deliveries
|
|
485
|
-
loadunit days
|
|
486
579
|
hideresource 1
|
|
487
580
|
scenarios plan, delayed
|
|
488
581
|
}
|
|
489
582
|
# A list of all employees with their contact details.
|
|
490
583
|
resourcereport contactList "" {
|
|
584
|
+
scenarios delayed
|
|
491
585
|
headline "Contact list and duty plan"
|
|
492
|
-
columns name,
|
|
586
|
+
columns name,
|
|
587
|
+
Email { celltext 1 "[mailto:<-Email-> <-Email->]" },
|
|
588
|
+
Phone,
|
|
493
589
|
chart { scale day }
|
|
494
590
|
hideresource ~isleaf()
|
|
495
591
|
sortresources name.up
|
|
@@ -499,9 +595,12 @@ resourcereport contactList "" {
|
|
|
499
595
|
# A graph showing resource allocation. It identifies whether each
|
|
500
596
|
# resource is under- or over-allocated for.
|
|
501
597
|
resourcereport resourceGraph "" {
|
|
598
|
+
scenarios delayed
|
|
502
599
|
headline "Resource Allocation Graph"
|
|
503
|
-
columns no, name, effort, rate, weekly
|
|
600
|
+
columns no, name, effort, rate, weekly
|
|
504
601
|
loadunit shortauto
|
|
505
|
-
|
|
602
|
+
# We only like to show leaf tasks for leaf resources.
|
|
603
|
+
hidetask ~(isleaf() & isleaf_())
|
|
506
604
|
sorttasks plan.start.up
|
|
507
605
|
}
|
|
606
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
project "Macro Stack Overflow" 2009-11-01 +2m
|
|
2
|
+
|
|
3
|
+
macro foo [ task "bar" { ${foo} } ]
|
|
4
|
+
|
|
5
|
+
# MARK: error 27 macro_stack_overflow
|
|
6
|
+
# MARK: info 3 macro_stack
|
|
7
|
+
# MARK: info 3 macro_stack
|
|
8
|
+
# MARK: info 3 macro_stack
|
|
9
|
+
# MARK: info 3 macro_stack
|
|
10
|
+
# MARK: info 3 macro_stack
|
|
11
|
+
# MARK: info 3 macro_stack
|
|
12
|
+
# MARK: info 3 macro_stack
|
|
13
|
+
# MARK: info 3 macro_stack
|
|
14
|
+
# MARK: info 3 macro_stack
|
|
15
|
+
# MARK: info 3 macro_stack
|
|
16
|
+
# MARK: info 3 macro_stack
|
|
17
|
+
# MARK: info 3 macro_stack
|
|
18
|
+
# MARK: info 3 macro_stack
|
|
19
|
+
# MARK: info 3 macro_stack
|
|
20
|
+
# MARK: info 3 macro_stack
|
|
21
|
+
# MARK: info 3 macro_stack
|
|
22
|
+
# MARK: info 3 macro_stack
|
|
23
|
+
# MARK: info 3 macro_stack
|
|
24
|
+
# MARK: info 3 macro_stack
|
|
25
|
+
# MARK: info 3 macro_stack
|
|
26
|
+
# MARK: info 3 macro_stack
|
|
27
|
+
${foo}
|
|
28
|
+
|
data/test/all.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env ruby -w
|
|
2
2
|
# encoding: UTF-8
|
|
3
3
|
#
|
|
4
|
-
# =
|
|
4
|
+
# = all.rb -- The TaskJuggler III Project Management Software
|
|
5
5
|
#
|
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
|
|
7
7
|
#
|
|
8
8
|
# This program is free software; you can redistribute it and/or modify
|
|
9
9
|
# it under the terms of version 2 of the GNU General Public License as
|
data/test/test_BatchProcessor.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env ruby -w
|
|
2
2
|
# encoding: UTF-8
|
|
3
3
|
#
|
|
4
|
-
# =
|
|
4
|
+
# = test_BatchProcessor.rb -- The TaskJuggler III Project Management Software
|
|
5
5
|
#
|
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
|
|
7
7
|
#
|
|
8
8
|
# This program is free software; you can redistribute it and/or modify
|
|
9
9
|
# it under the terms of version 2 of the GNU General Public License as
|
|
@@ -18,25 +18,54 @@ require 'BatchProcessor'
|
|
|
18
18
|
class TestProject < Test::Unit::TestCase
|
|
19
19
|
|
|
20
20
|
def test_simple
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
doRun(1, 1) { sleep 0.1 }
|
|
22
|
+
doRun(1, 2) { sleep 0.1 }
|
|
23
|
+
doRun(1, 7) { sleep 0.1 }
|
|
24
|
+
doRun(2, 1) { sleep 0.1 }
|
|
25
|
+
doRun(2, 2) { sleep 0.1 }
|
|
26
|
+
doRun(2, 33) { sleep 0.1 }
|
|
27
|
+
doRun(3, 1) { sleep 0.1 }
|
|
28
|
+
doRun(3, 3) { sleep 0.1 }
|
|
29
|
+
doRun(3, 67) { sleep 0.1 }
|
|
26
30
|
end
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
# This test case triggers a Ruby 1.9.x mutex bug
|
|
33
|
+
#def test_fileIO
|
|
34
|
+
# doRun(3, 200) do
|
|
35
|
+
# fname = "test#{$$}.txt"
|
|
36
|
+
# f = File.new(fname, 'w')
|
|
37
|
+
# 0.upto(10000) { |i| f.puts "#{i} Hello, world!" }
|
|
38
|
+
# f.close
|
|
39
|
+
# File.delete(fname)
|
|
40
|
+
# end
|
|
41
|
+
#end
|
|
42
|
+
|
|
43
|
+
def doRun(maxCPUs, jobs, &block)
|
|
44
|
+
bp = TaskJuggler::BatchProcessor.new(maxCPUs)
|
|
45
|
+
jobs.times do |i|
|
|
46
|
+
bp.queue("job #{i}") { runJob(i, &block) }
|
|
47
|
+
end
|
|
48
|
+
@cnt = 0
|
|
49
|
+
lock = Monitor.new
|
|
50
|
+
bp.wait do |j|
|
|
51
|
+
puts "Signal error" if j.retVal.signaled?
|
|
52
|
+
postprocess(j)
|
|
53
|
+
lock.synchronize { @cnt += 1 }
|
|
54
|
+
end
|
|
55
|
+
assert_equal(jobs, @cnt, "Not all threads terminated propertly (#{@cnt})")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def runJob(n, &block)
|
|
29
59
|
puts "Job #{n} started"
|
|
30
|
-
|
|
60
|
+
yield
|
|
31
61
|
$stderr.puts "Error #{n}" if n % 2 == 0
|
|
32
62
|
puts "Job #{n} finished"
|
|
33
|
-
|
|
63
|
+
n
|
|
34
64
|
end
|
|
35
65
|
|
|
36
66
|
def postprocess(job)
|
|
37
|
-
|
|
38
|
-
assert_equal(job.retVal.
|
|
39
|
-
assert_equal(job.retVal.pid, job.pid)
|
|
67
|
+
assert_equal(job.retVal.exitstatus, job.jobId, 'JobID mismatch')
|
|
68
|
+
assert_equal(job.retVal.pid, job.pid, 'PID mismatch')
|
|
40
69
|
assert_equal("job #{job.jobId}", job.tag)
|
|
41
70
|
text = <<"EOT"
|
|
42
71
|
Job #{job.jobId} started
|
data/test/test_CSV-Reports.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# = test_CSV-Reports.rb -- The TaskJuggler III Project Management Software
|
|
5
5
|
#
|
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
|
|
7
7
|
#
|
|
8
8
|
# This program is free software; you can redistribute it and/or modify
|
|
9
9
|
# it under the terms of version 2 of the GNU General Public License as
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
#!/usr/bin/env ruby -w
|
|
2
|
+
# encoding: UTF-8
|
|
3
|
+
#
|
|
4
|
+
# = test_Journal.rb -- The TaskJuggler III Project Management Software
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
|
|
7
|
+
#
|
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
|
9
|
+
# it under the terms of version 2 of the GNU General Public License as
|
|
10
|
+
# published by the Free Software Foundation.
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib') if __FILE__ == $0
|
|
14
|
+
|
|
15
|
+
require 'test/unit'
|
|
16
|
+
require 'Project'
|
|
17
|
+
|
|
18
|
+
class TaskJuggler
|
|
19
|
+
|
|
20
|
+
class TestJournal < Test::Unit::TestCase
|
|
21
|
+
|
|
22
|
+
def setup
|
|
23
|
+
@p = TaskJuggler::Project.new('hello', 'Hello World', '1.0',
|
|
24
|
+
MessageHandler.new(true))
|
|
25
|
+
@p['start'] = tm('2009-11-01')
|
|
26
|
+
@p['end'] = tm('2009-12-31')
|
|
27
|
+
@j = @p['journal']
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def teardown
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_add
|
|
34
|
+
# First some simple add tests.
|
|
35
|
+
@j.addEntry(e = JournalEntry.new(@j, tm('2009-11-29'), "E1", 1))
|
|
36
|
+
assert_equal(1, @j.entries.count)
|
|
37
|
+
|
|
38
|
+
# Make sure we don't add the same entry twice.
|
|
39
|
+
@j.addEntry(e)
|
|
40
|
+
assert_equal(1, @j.entries.count)
|
|
41
|
+
|
|
42
|
+
@j.addEntry(JournalEntry.new(@j, tm('2009-11-30'), "E2", 2))
|
|
43
|
+
@j.addEntry(JournalEntry.new(@j, tm('2009-12-01'), "E3", 3))
|
|
44
|
+
assert_equal(3, @j.entries.count)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_sort
|
|
48
|
+
# Add a bunch of entries and see if the sorting by date works properly.
|
|
49
|
+
@j.addEntry(JournalEntry.new(@j, tm('2009-12-10'), "E4", 4))
|
|
50
|
+
@j.addEntry(JournalEntry.new(@j, tm('2009-12-03'), "E2", 2))
|
|
51
|
+
@j.addEntry(JournalEntry.new(@j, tm('2009-12-06'), "E3", 3))
|
|
52
|
+
@j.addEntry(JournalEntry.new(@j, tm('2009-11-29'), "E0", 0))
|
|
53
|
+
@j.addEntry(JournalEntry.new(@j, tm('2009-12-01'), "E1", 1))
|
|
54
|
+
@j.addEntry(JournalEntry.new(@j, tm('2009-12-24'), "E5", 5))
|
|
55
|
+
|
|
56
|
+
pList = []
|
|
57
|
+
@j.entries.each { |e| pList << e.property }
|
|
58
|
+
pList.each do |i|
|
|
59
|
+
assert_equal(pList.index(i), i)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_sortSameDate
|
|
64
|
+
# Add a bunch of entries and see if the sorting by date works properly.
|
|
65
|
+
@j.addEntry(e = JournalEntry.new(@j, tm('2009-12-10'), "A2", 0))
|
|
66
|
+
e.alertLevel = 2
|
|
67
|
+
@j.addEntry(e = JournalEntry.new(@j, tm('2009-12-10'), "A0", 0))
|
|
68
|
+
e.alertLevel = 0
|
|
69
|
+
@j.addEntry(e = JournalEntry.new(@j, tm('2009-12-10'), "A1", 0))
|
|
70
|
+
e.alertLevel = 1
|
|
71
|
+
@j.addEntry(e = JournalEntry.new(@j, tm('2009-12-10'), "A3", 0))
|
|
72
|
+
e.alertLevel = 3
|
|
73
|
+
|
|
74
|
+
i = 0
|
|
75
|
+
@j.entries.each do |entry|
|
|
76
|
+
assert_equal(i, entry.alertLevel)
|
|
77
|
+
i += 1
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_currentEntries
|
|
82
|
+
createTaskTree
|
|
83
|
+
# Set a 0 alert for a task
|
|
84
|
+
a1 = addAlert('2009-11-29', 0, t = task('p1.m1.l1'))
|
|
85
|
+
ce = @j.currentEntriesR(tm('2009-12-05'), t)
|
|
86
|
+
assert_equal(1, ce.count)
|
|
87
|
+
assert_equal(a1, ce[0])
|
|
88
|
+
|
|
89
|
+
# Add a later alert for the same task
|
|
90
|
+
a2 = addAlert('2009-11-30', 0, t = task('p1.m1.l1'))
|
|
91
|
+
ce = @j.currentEntriesR(tm('2009-12-05'), t)
|
|
92
|
+
assert_equal(1, ce.count)
|
|
93
|
+
assert_equal(a2, ce[0])
|
|
94
|
+
|
|
95
|
+
# Add another alert to the sister task and check parent
|
|
96
|
+
a3 = addAlert('2009-11-30', 0, t = task('p1.m1.l2'))
|
|
97
|
+
ce = @j.currentEntriesR(tm('2009-12-05'), task('p1.m1'))
|
|
98
|
+
assert_equal(2, ce.count)
|
|
99
|
+
assert_equal(a2, ce[0])
|
|
100
|
+
assert_equal(a3, ce[1])
|
|
101
|
+
|
|
102
|
+
# Check root task
|
|
103
|
+
ce = @j.currentEntriesR(tm('2009-12-05'), task('p1'))
|
|
104
|
+
assert_equal(2, ce.count)
|
|
105
|
+
assert_equal(a2, ce[0])
|
|
106
|
+
assert_equal(a3, ce[1])
|
|
107
|
+
|
|
108
|
+
# Add old override alert to p1.m1
|
|
109
|
+
a4 = addAlert('2009-11-29', 0, t = task('p1.m1'))
|
|
110
|
+
ce = @j.currentEntriesR(tm('2009-12-05'), task('p1'))
|
|
111
|
+
assert_equal(2, ce.count)
|
|
112
|
+
assert_equal(a2, ce[0])
|
|
113
|
+
assert_equal(a3, ce[1])
|
|
114
|
+
|
|
115
|
+
# Add new override alert to p1.m1
|
|
116
|
+
a5 = addAlert('2009-12-01', 0, t = task('p1.m1'))
|
|
117
|
+
ce = @j.currentEntriesR(tm('2009-12-05'), task('p1'))
|
|
118
|
+
assert_equal(1, ce.count)
|
|
119
|
+
assert_equal(a5, ce[0])
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def test_alertSimple
|
|
123
|
+
createTaskTree
|
|
124
|
+
# Set a 0 alert for a task
|
|
125
|
+
addAlert('2009-11-29', 0, t = task('p1.m1.l1'))
|
|
126
|
+
assert_equal(0, @j.alertLevel(tm('2009-12-01'), t))
|
|
127
|
+
|
|
128
|
+
# Now add a later 1 alert
|
|
129
|
+
addAlert('2009-12-01', 1, t)
|
|
130
|
+
assert_equal(1, @j.alertLevel(tm('2009-12-02'), t))
|
|
131
|
+
|
|
132
|
+
# Set a 2 alert for p1.m1.l2
|
|
133
|
+
addAlert('2009-11-29', 2, task('p1.m1.l2'))
|
|
134
|
+
assert_equal(2, @j.alertLevel(tm('2009-12-01'), task('p1')))
|
|
135
|
+
|
|
136
|
+
# Overide p1.m1 with 0 alert
|
|
137
|
+
addAlert('2009-12-01', 0, task('p1.m1'))
|
|
138
|
+
assert_equal(0, @j.alertLevel(tm('2009-12-01'), task('p1')))
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
private
|
|
142
|
+
|
|
143
|
+
def tm(s)
|
|
144
|
+
TjTime.new(s)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def addAlert(date, level, property)
|
|
148
|
+
raise "No property" unless property
|
|
149
|
+
@j.addEntry(e = JournalEntry.new(@j, tm(date),
|
|
150
|
+
"Set #{property.fullId} " +
|
|
151
|
+
"to level #{level}i at #{date}",
|
|
152
|
+
property))
|
|
153
|
+
e.alertLevel = level
|
|
154
|
+
e
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def createTaskTree
|
|
158
|
+
p1 = newTask(nil, 'p1')
|
|
159
|
+
m1 = newTask(p1, 'm1')
|
|
160
|
+
m2 = newTask(p1, 'm2')
|
|
161
|
+
newTask(m1, 'l1')
|
|
162
|
+
newTask(m1, 'l2')
|
|
163
|
+
newTask(nil, 'p2')
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def newTask(parent, id)
|
|
167
|
+
t = Task.new(@p, id, 'Task #{id}', parent)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def task(id)
|
|
171
|
+
@p.task(id) || ( raise "Unknown task id #{id}" )
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|