taskjuggler 0.0.11 → 0.1.0
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 +6 -1550
- data/benchmarks/UTF-8-Strings.rb +58 -0
- data/benchmarks/profile.clt +36082 -0
- data/benchmarks/profile.html +58182 -0
- data/benchmarks/runbench.rb +2 -2
- data/data/css/tjmanual.css +0 -1
- data/doc/AppConfig.html +1491 -0
- data/doc/CHANGELOG.html +557 -0
- data/doc/COPYING.html +899 -0
- data/doc/Diff.html +1193 -0
- data/doc/Diff/Hunk.html +1026 -0
- data/doc/Diffable.html +684 -0
- data/doc/DiffableString.html +684 -0
- data/doc/Object.html +720 -0
- data/doc/README_rdoc.html +742 -0
- data/doc/RuntimeConfig.html +856 -0
- data/doc/String.html +1005 -0
- data/doc/TaskJuggler.html +2639 -0
- data/doc/TaskJuggler/Account.html +753 -0
- data/doc/TaskJuggler/AccountAttribute.html +769 -0
- data/doc/TaskJuggler/AccountScenario.html +712 -0
- data/doc/TaskJuggler/Allocation.html +963 -0
- data/doc/TaskJuggler/AllocationAttribute.html +799 -0
- data/doc/TaskJuggler/AttributeBase.html +1328 -0
- data/doc/TaskJuggler/AttributeDefinition.html +815 -0
- data/doc/TaskJuggler/AttributeOverwrite.html +606 -0
- data/doc/TaskJuggler/BatchProcessor.html +1178 -0
- data/doc/TaskJuggler/Booking.html +859 -0
- data/doc/TaskJuggler/BookingListAttribute.html +769 -0
- data/doc/TaskJuggler/BooleanAttribute.html +769 -0
- data/doc/TaskJuggler/CSVFile.html +1128 -0
- data/doc/TaskJuggler/CellSettingPattern.html +700 -0
- data/doc/TaskJuggler/CellSettingPatternList.html +749 -0
- data/doc/TaskJuggler/Charge.html +777 -0
- data/doc/TaskJuggler/ChargeListAttribute.html +733 -0
- data/doc/TaskJuggler/ChargeSet.html +949 -0
- data/doc/TaskJuggler/ChargeSetListAttribute.html +778 -0
- data/doc/TaskJuggler/CollisionDetector.html +1089 -0
- data/doc/TaskJuggler/ColumnListAttribute.html +733 -0
- data/doc/TaskJuggler/ColumnTable.html +763 -0
- data/doc/TaskJuggler/Daemon.html +819 -0
- data/doc/TaskJuggler/DataCache.html +1025 -0
- data/doc/TaskJuggler/DataCacheEntry.html +737 -0
- data/doc/TaskJuggler/DateAttribute.html +737 -0
- data/doc/TaskJuggler/DefinitionListAttribute.html +655 -0
- data/doc/TaskJuggler/DependencyListAttribute.html +773 -0
- data/doc/TaskJuggler/DurationAttribute.html +770 -0
- data/doc/TaskJuggler/FileList.html +793 -0
- data/doc/TaskJuggler/FileRecord.html +702 -0
- data/doc/TaskJuggler/FixnumAttribute.html +691 -0
- data/doc/TaskJuggler/FlagListAttribute.html +769 -0
- data/doc/TaskJuggler/FloatAttribute.html +733 -0
- data/doc/TaskJuggler/FormatListAttribute.html +697 -0
- data/doc/TaskJuggler/GanttChart.html +1487 -0
- data/doc/TaskJuggler/GanttContainer.html +945 -0
- data/doc/TaskJuggler/GanttHeader.html +948 -0
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +762 -0
- data/doc/TaskJuggler/GanttLine.html +1325 -0
- data/doc/TaskJuggler/GanttLoadStack.html +828 -0
- data/doc/TaskJuggler/GanttMilestone.html +926 -0
- data/doc/TaskJuggler/GanttRouter.html +1136 -0
- data/doc/TaskJuggler/GanttTaskBar.html +948 -0
- data/doc/TaskJuggler/HTMLDocument.html +754 -0
- data/doc/TaskJuggler/HTMLElements.html +599 -0
- data/doc/TaskJuggler/HTMLGraphics.html +837 -0
- data/doc/TaskJuggler/Interval.html +1076 -0
- data/doc/TaskJuggler/IntervalList.html +797 -0
- data/doc/TaskJuggler/IntervalListAttribute.html +773 -0
- data/doc/TaskJuggler/JobInfo.html +943 -0
- data/doc/TaskJuggler/Journal.html +1248 -0
- data/doc/TaskJuggler/JournalEntry.html +860 -0
- data/doc/TaskJuggler/JournalEntryList.html +1229 -0
- data/doc/TaskJuggler/KeywordArray.html +696 -0
- data/doc/TaskJuggler/KeywordDocumentation.html +2250 -0
- data/doc/TaskJuggler/Limits.html +1036 -0
- data/doc/TaskJuggler/Limits/Limit.html +947 -0
- data/doc/TaskJuggler/LimitsAttribute.html +734 -0
- data/doc/TaskJuggler/ListAttributeBase.html +703 -0
- data/doc/TaskJuggler/Log.html +1163 -0
- data/doc/TaskJuggler/LogFile.html +980 -0
- data/doc/TaskJuggler/LogicalAttribute.html +760 -0
- data/doc/TaskJuggler/LogicalExpression.html +801 -0
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +691 -0
- data/doc/TaskJuggler/LogicalExpressionListAttribute.html +691 -0
- data/doc/TaskJuggler/LogicalFlag.html +753 -0
- data/doc/TaskJuggler/LogicalFunction.html +1409 -0
- data/doc/TaskJuggler/LogicalOperation.html +1144 -0
- data/doc/TaskJuggler/ManagerResponsibilities.html +736 -0
- data/doc/TaskJuggler/ManagerStatusRecord.html +740 -0
- data/doc/TaskJuggler/Message.html +837 -0
- data/doc/TaskJuggler/MessageHandler.html +1056 -0
- data/doc/TaskJuggler/Navigator.html +943 -0
- data/doc/TaskJuggler/NavigatorElement.html +994 -0
- data/doc/TaskJuggler/NikuProject.html +724 -0
- data/doc/TaskJuggler/NikuReport.html +1470 -0
- data/doc/TaskJuggler/NikuResource.html +694 -0
- data/doc/TaskJuggler/NodeListAttribute.html +655 -0
- data/doc/TaskJuggler/PlaceHolderCell.html +748 -0
- data/doc/TaskJuggler/ProcessIntercom.html +1017 -0
- data/doc/TaskJuggler/ProcessIntercomIface.html +773 -0
- data/doc/TaskJuggler/Project.html +3478 -0
- data/doc/TaskJuggler/ProjectBroker.html +1676 -0
- data/doc/TaskJuggler/ProjectBrokerIface.html +851 -0
- data/doc/TaskJuggler/ProjectFileParser.html +2102 -0
- data/doc/TaskJuggler/ProjectFileScanner.html +1896 -0
- data/doc/TaskJuggler/ProjectRecord.html +978 -0
- data/doc/TaskJuggler/ProjectServer.html +1249 -0
- data/doc/TaskJuggler/ProjectServerIface.html +868 -0
- data/doc/TaskJuggler/PropertyAttribute.html +691 -0
- data/doc/TaskJuggler/PropertyList.html +1399 -0
- data/doc/TaskJuggler/PropertySet.html +1796 -0
- data/doc/TaskJuggler/PropertyTreeNode.html +2851 -0
- data/doc/TaskJuggler/Query.html +1756 -0
- data/doc/TaskJuggler/RTFHandlers.html +664 -0
- data/doc/TaskJuggler/RTFNavigator.html +792 -0
- data/doc/TaskJuggler/RTFQuery.html +1083 -0
- data/doc/TaskJuggler/RTFReport.html +820 -0
- data/doc/TaskJuggler/RTFReportLink.html +812 -0
- data/doc/TaskJuggler/RTFWithQuerySupport.html +702 -0
- data/doc/TaskJuggler/RealFormat.html +805 -0
- data/doc/TaskJuggler/RealFormatAttribute.html +655 -0
- data/doc/TaskJuggler/ReferenceAttribute.html +880 -0
- data/doc/TaskJuggler/Report.html +1501 -0
- data/doc/TaskJuggler/ReportBase.html +1266 -0
- data/doc/TaskJuggler/ReportContext.html +837 -0
- data/doc/TaskJuggler/ReportServer.html +1068 -0
- data/doc/TaskJuggler/ReportServerIface.html +902 -0
- data/doc/TaskJuggler/ReportServerRecord.html +781 -0
- data/doc/TaskJuggler/ReportServlet.html +1029 -0
- data/doc/TaskJuggler/ReportTable.html +1179 -0
- data/doc/TaskJuggler/ReportTableCell.html +1666 -0
- data/doc/TaskJuggler/ReportTableColumn.html +890 -0
- data/doc/TaskJuggler/ReportTableLegend.html +1060 -0
- data/doc/TaskJuggler/ReportTableLine.html +1067 -0
- data/doc/TaskJuggler/Resource.html +1004 -0
- data/doc/TaskJuggler/ResourceListAttribute.html +829 -0
- data/doc/TaskJuggler/ResourceListRE.html +737 -0
- data/doc/TaskJuggler/ResourceScenario.html +2549 -0
- data/doc/TaskJuggler/RichText.html +879 -0
- data/doc/TaskJuggler/RichTextAttribute.html +811 -0
- data/doc/TaskJuggler/RichTextDocument.html +1038 -0
- data/doc/TaskJuggler/RichTextElement.html +1780 -0
- data/doc/TaskJuggler/RichTextFunctionExample.html +799 -0
- data/doc/TaskJuggler/RichTextFunctionHandler.html +750 -0
- data/doc/TaskJuggler/RichTextImage.html +712 -0
- data/doc/TaskJuggler/RichTextIntermediate.html +1285 -0
- data/doc/TaskJuggler/RichTextParser.html +868 -0
- data/doc/TaskJuggler/RichTextScanner.html +1565 -0
- data/doc/TaskJuggler/RichTextSnip.html +1000 -0
- data/doc/TaskJuggler/RichTextSyntaxRules.html +2052 -0
- data/doc/TaskJuggler/Scenario.html +656 -0
- data/doc/TaskJuggler/ScenarioData.html +838 -0
- data/doc/TaskJuggler/ScenarioListAttribute.html +733 -0
- data/doc/TaskJuggler/Scoreboard.html +1201 -0
- data/doc/TaskJuggler/SheetHandlerBase.html +1297 -0
- data/doc/TaskJuggler/SheetReceiver.html +1398 -0
- data/doc/TaskJuggler/SheetSender.html +1168 -0
- data/doc/TaskJuggler/Shift.html +751 -0
- data/doc/TaskJuggler/ShiftAssignment.html +1008 -0
- data/doc/TaskJuggler/ShiftAssignments.html +1413 -0
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +734 -0
- data/doc/TaskJuggler/ShiftScenario.html +782 -0
- data/doc/TaskJuggler/SimpleQueryExpander.html +732 -0
- data/doc/TaskJuggler/SortListAttribute.html +691 -0
- data/doc/TaskJuggler/StatusSheetReceiver.html +678 -0
- data/doc/TaskJuggler/StatusSheetReport.html +935 -0
- data/doc/TaskJuggler/StatusSheetSender.html +808 -0
- data/doc/TaskJuggler/StdIoWrapper.html +696 -0
- data/doc/TaskJuggler/StringAttribute.html +733 -0
- data/doc/TaskJuggler/SymbolAttribute.html +691 -0
- data/doc/TaskJuggler/SyntaxReference.html +1240 -0
- data/doc/TaskJuggler/TOCEntry.html +836 -0
- data/doc/TaskJuggler/TSResourceRecord.html +732 -0
- data/doc/TaskJuggler/TSTaskRecord.html +744 -0
- data/doc/TaskJuggler/TableColumnDefinition.html +949 -0
- data/doc/TaskJuggler/TableOfContents.html +790 -0
- data/doc/TaskJuggler/TableReport.html +2555 -0
- data/doc/TaskJuggler/Task.html +890 -0
- data/doc/TaskJuggler/TaskDepListAttribute.html +773 -0
- data/doc/TaskJuggler/TaskDependency.html +832 -0
- data/doc/TaskJuggler/TaskListAttribute.html +773 -0
- data/doc/TaskJuggler/TaskListRE.html +736 -0
- data/doc/TaskJuggler/TaskScenario.html +5180 -0
- data/doc/TaskJuggler/TernarySearchTree.html +1341 -0
- data/doc/TaskJuggler/TextFormatter.html +973 -0
- data/doc/TaskJuggler/TextParser.html +1862 -0
- data/doc/TaskJuggler/TextParser/Macro.html +708 -0
- data/doc/TaskJuggler/TextParser/MacroTable.html +832 -0
- data/doc/TaskJuggler/TextParser/Pattern.html +1743 -0
- data/doc/TaskJuggler/TextParser/Rule.html +1419 -0
- data/doc/TaskJuggler/TextParser/Scanner.html +1516 -0
- data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +661 -0
- data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +727 -0
- data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +724 -0
- data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +1095 -0
- data/doc/TaskJuggler/TextParser/SourceFileInfo.html +760 -0
- data/doc/TaskJuggler/TextParser/StackElement.html +940 -0
- data/doc/TaskJuggler/TextParser/State.html +1015 -0
- data/doc/TaskJuggler/TextParser/StateTransition.html +808 -0
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +711 -0
- data/doc/TaskJuggler/TextParser/TokenDoc.html +742 -0
- data/doc/TaskJuggler/TextReport.html +921 -0
- data/doc/TaskJuggler/TimeSheet.html +1264 -0
- data/doc/TaskJuggler/TimeSheetReceiver.html +675 -0
- data/doc/TaskJuggler/TimeSheetRecord.html +1415 -0
- data/doc/TaskJuggler/TimeSheetReport.html +1013 -0
- data/doc/TaskJuggler/TimeSheetSender.html +700 -0
- data/doc/TaskJuggler/TimeSheetSummary.html +959 -0
- data/doc/TaskJuggler/TimeSheets.html +736 -0
- data/doc/TaskJuggler/Tj3.html +857 -0
- data/doc/TaskJuggler/Tj3AppBase.html +942 -0
- data/doc/TaskJuggler/Tj3Client.html +1510 -0
- data/doc/TaskJuggler/Tj3Daemon.html +870 -0
- data/doc/TaskJuggler/Tj3Man.html +768 -0
- data/doc/TaskJuggler/Tj3SheetAppBase.html +758 -0
- data/doc/TaskJuggler/Tj3SsReceiver.html +747 -0
- data/doc/TaskJuggler/Tj3SsSender.html +780 -0
- data/doc/TaskJuggler/Tj3TsReceiver.html +747 -0
- data/doc/TaskJuggler/Tj3TsSender.html +767 -0
- data/doc/TaskJuggler/Tj3TsSummary.html +775 -0
- data/doc/TaskJuggler/TjException.html +692 -0
- data/doc/TaskJuggler/TjRuntimeError.html +606 -0
- data/doc/TaskJuggler/TjTime.html +3117 -0
- data/doc/TaskJuggler/TjpExample.html +897 -0
- data/doc/TaskJuggler/TjpExportRE.html +1772 -0
- data/doc/TaskJuggler/TjpSyntaxRules.html +14329 -0
- data/doc/TaskJuggler/URLParameter.html +691 -0
- data/doc/TaskJuggler/UserManual.html +1224 -0
- data/doc/TaskJuggler/VimSyntax.html +1064 -0
- data/doc/TaskJuggler/WebServer.html +757 -0
- data/doc/TaskJuggler/WelcomePage.html +789 -0
- data/doc/TaskJuggler/WorkingHours.html +1218 -0
- data/doc/TaskJuggler/WorkingHoursAttribute.html +756 -0
- data/doc/TaskJuggler/XMLBlob.html +707 -0
- data/doc/TaskJuggler/XMLComment.html +702 -0
- data/doc/TaskJuggler/XMLDocument.html +803 -0
- data/doc/TaskJuggler/XMLElement.html +990 -0
- data/doc/TaskJuggler/XMLNamedText.html +663 -0
- data/doc/TaskJuggler/XMLText.html +717 -0
- data/doc/index.html +4518 -0
- data/doc/lib/taskjuggler/AccountScenario_rb.html +69 -0
- data/doc/lib/taskjuggler/Account_rb.html +71 -0
- data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +67 -0
- data/doc/lib/taskjuggler/Allocation_rb.html +71 -0
- data/doc/lib/taskjuggler/AppConfig_rb.html +69 -0
- data/doc/lib/taskjuggler/AttributeBase_rb.html +69 -0
- data/doc/lib/taskjuggler/AttributeDefinition_rb.html +67 -0
- data/doc/lib/taskjuggler/Attributes_rb.html +83 -0
- data/doc/lib/taskjuggler/BatchProcessor_rb.html +71 -0
- data/doc/lib/taskjuggler/Booking_rb.html +67 -0
- data/doc/lib/taskjuggler/ChargeSet_rb.html +69 -0
- data/doc/lib/taskjuggler/Charge_rb.html +69 -0
- data/doc/lib/taskjuggler/DataCache_rb.html +71 -0
- data/doc/lib/taskjuggler/FileList_rb.html +67 -0
- data/doc/lib/taskjuggler/HTMLDocument_rb.html +71 -0
- data/doc/lib/taskjuggler/HTMLElements_rb.html +69 -0
- data/doc/lib/taskjuggler/IntervalList_rb.html +69 -0
- data/doc/lib/taskjuggler/Interval_rb.html +69 -0
- data/doc/lib/taskjuggler/Journal_rb.html +67 -0
- data/doc/lib/taskjuggler/KeywordArray_rb.html +67 -0
- data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +77 -0
- data/doc/lib/taskjuggler/Limits_rb.html +69 -0
- data/doc/lib/taskjuggler/LogFile_rb.html +69 -0
- data/doc/lib/taskjuggler/Log_rb.html +71 -0
- data/doc/lib/taskjuggler/LogicalExpression_rb.html +73 -0
- data/doc/lib/taskjuggler/LogicalFunction_rb.html +69 -0
- data/doc/lib/taskjuggler/LogicalOperation_rb.html +69 -0
- data/doc/lib/taskjuggler/MessageHandler_rb.html +69 -0
- data/doc/lib/taskjuggler/ProjectFileParser_rb.html +77 -0
- data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +69 -0
- data/doc/lib/taskjuggler/Project_rb.html +113 -0
- data/doc/lib/taskjuggler/PropertyList_rb.html +67 -0
- data/doc/lib/taskjuggler/PropertySet_rb.html +71 -0
- data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +67 -0
- data/doc/lib/taskjuggler/Query_rb.html +69 -0
- data/doc/lib/taskjuggler/RealFormat_rb.html +67 -0
- data/doc/lib/taskjuggler/ResourceScenario_rb.html +69 -0
- data/doc/lib/taskjuggler/Resource_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/Document_rb.html +73 -0
- data/doc/lib/taskjuggler/RichText/Element_rb.html +75 -0
- data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +73 -0
- data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +67 -0
- data/doc/lib/taskjuggler/RichText/Parser_rb.html +75 -0
- data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +75 -0
- data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +73 -0
- data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +73 -0
- data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +75 -0
- data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +69 -0
- data/doc/lib/taskjuggler/RichText/Scanner_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/Snip_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +67 -0
- data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText_rb.html +73 -0
- data/doc/lib/taskjuggler/RuntimeConfig_rb.html +69 -0
- data/doc/lib/taskjuggler/ScenarioData_rb.html +71 -0
- data/doc/lib/taskjuggler/Scenario_rb.html +69 -0
- data/doc/lib/taskjuggler/Scoreboard_rb.html +69 -0
- data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +75 -0
- data/doc/lib/taskjuggler/SheetReceiver_rb.html +81 -0
- data/doc/lib/taskjuggler/SheetSender_rb.html +79 -0
- data/doc/lib/taskjuggler/ShiftAssignments_rb.html +71 -0
- data/doc/lib/taskjuggler/ShiftScenario_rb.html +69 -0
- data/doc/lib/taskjuggler/Shift_rb.html +71 -0
- data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +69 -0
- data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +69 -0
- data/doc/lib/taskjuggler/StatusSheetSender_rb.html +69 -0
- data/doc/lib/taskjuggler/StdIoWrapper_rb.html +67 -0
- data/doc/lib/taskjuggler/SyntaxReference_rb.html +75 -0
- data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +67 -0
- data/doc/lib/taskjuggler/TaskDependency_rb.html +67 -0
- data/doc/lib/taskjuggler/TaskJuggler_rb.html +75 -0
- data/doc/lib/taskjuggler/TaskScenario_rb.html +71 -0
- data/doc/lib/taskjuggler/Task_rb.html +71 -0
- data/doc/lib/taskjuggler/TernarySearchTree_rb.html +69 -0
- data/doc/lib/taskjuggler/TextFormatter_rb.html +69 -0
- data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +71 -0
- data/doc/lib/taskjuggler/TextParser/Rule_rb.html +69 -0
- data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +77 -0
- data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser/State_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser_rb.html +79 -0
- data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +69 -0
- data/doc/lib/taskjuggler/TimeSheetSender_rb.html +69 -0
- data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +69 -0
- data/doc/lib/taskjuggler/TimeSheets_rb.html +67 -0
- data/doc/lib/taskjuggler/Tj3AppBase_rb.html +79 -0
- data/doc/lib/taskjuggler/Tj3Config_rb.html +71 -0
- data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +69 -0
- data/doc/lib/taskjuggler/TjException_rb.html +67 -0
- data/doc/lib/taskjuggler/TjTime_rb.html +71 -0
- data/doc/lib/taskjuggler/TjpExample_rb.html +69 -0
- data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +67 -0
- data/doc/lib/taskjuggler/URLParameter_rb.html +69 -0
- data/doc/lib/taskjuggler/UTF8String_rb.html +69 -0
- data/doc/lib/taskjuggler/UserManual_rb.html +81 -0
- data/doc/lib/taskjuggler/VimSyntax_rb.html +69 -0
- data/doc/lib/taskjuggler/WorkingHours_rb.html +71 -0
- data/doc/lib/taskjuggler/XMLDocument_rb.html +69 -0
- data/doc/lib/taskjuggler/XMLElement_rb.html +69 -0
- data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +75 -0
- data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +75 -0
- data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +75 -0
- data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3_rb.html +71 -0
- data/doc/lib/taskjuggler/daemon/Daemon_rb.html +69 -0
- data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +71 -0
- data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +83 -0
- data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +85 -0
- data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +73 -0
- data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +69 -0
- data/doc/lib/taskjuggler/daemon/WebServer_rb.html +81 -0
- data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +71 -0
- data/doc/lib/taskjuggler/deep_copy_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/CSVFile_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttChart_rb.html +75 -0
- data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttLine_rb.html +79 -0
- data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/Navigator_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/NikuReport_rb.html +71 -0
- data/doc/lib/taskjuggler/reports/ReportBase_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportContext_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/ReportTable_rb.html +71 -0
- data/doc/lib/taskjuggler/reports/Report_rb.html +93 -0
- data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +75 -0
- data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/TableReport_rb.html +77 -0
- data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +75 -0
- data/doc/lib/taskjuggler/reports/TextReport_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +69 -0
- data/doc/lib/tj3_rb.html +69 -0
- data/doc/lib/tj3client_rb.html +69 -0
- data/doc/lib/tj3d_rb.html +69 -0
- data/doc/lib/tj3man_rb.html +69 -0
- data/doc/lib/tj3ss_receiver_rb.html +69 -0
- data/doc/lib/tj3ss_sender_rb.html +69 -0
- data/doc/lib/tj3ts_receiver_rb.html +69 -0
- data/doc/lib/tj3ts_sender_rb.html +69 -0
- data/doc/lib/tj3ts_summary_rb.html +69 -0
- data/doc/rdoc.css +706 -0
- data/examples/tutorial.tjp +2 -1
- data/lib/taskjuggler/Attributes.rb +33 -12
- data/lib/taskjuggler/DataCache.rb +17 -0
- data/lib/taskjuggler/FileList.rb +9 -0
- data/lib/taskjuggler/HTMLDocument.rb +19 -21
- data/lib/taskjuggler/HTMLElements.rb +46 -0
- data/lib/taskjuggler/Journal.rb +95 -46
- data/lib/taskjuggler/KeywordDocumentation.rb +248 -185
- data/lib/taskjuggler/LogicalExpression.rb +2 -2
- data/lib/taskjuggler/LogicalFunction.rb +22 -1
- data/lib/taskjuggler/LogicalOperation.rb +15 -5
- data/lib/taskjuggler/Project.rb +73 -16
- data/lib/taskjuggler/ProjectFileParser.rb +1 -1
- data/lib/taskjuggler/ProjectFileScanner.rb +27 -0
- data/lib/taskjuggler/PropertySet.rb +22 -45
- data/lib/taskjuggler/PropertyTreeNode.rb +99 -128
- data/lib/taskjuggler/Query.rb +39 -8
- data/lib/taskjuggler/Resource.rb +15 -6
- data/lib/taskjuggler/RichText/Document.rb +3 -3
- data/lib/taskjuggler/RichText/RTFQuery.rb +4 -4
- data/lib/taskjuggler/SheetHandlerBase.rb +14 -12
- data/lib/taskjuggler/SheetReceiver.rb +17 -15
- data/lib/taskjuggler/SheetSender.rb +16 -10
- data/{spec/support → lib/taskjuggler}/StdIoWrapper.rb +17 -0
- data/lib/taskjuggler/SyntaxReference.rb +2 -2
- data/lib/taskjuggler/TableColumnDefinition.rb +4 -3
- data/lib/taskjuggler/Task.rb +7 -2
- data/lib/taskjuggler/TaskJuggler.rb +74 -0
- data/lib/taskjuggler/TaskScenario.rb +62 -83
- data/lib/taskjuggler/TextParser.rb +20 -13
- data/lib/taskjuggler/TextParser/Scanner.rb +17 -1
- data/lib/taskjuggler/TimeSheetSummary.rb +9 -5
- data/lib/taskjuggler/TimeSheets.rb +6 -1
- data/lib/taskjuggler/Tj3AppBase.rb +41 -18
- data/lib/taskjuggler/Tj3Config.rb +1 -1
- data/lib/taskjuggler/TjTime.rb +6 -1
- data/lib/taskjuggler/TjpSyntaxRules.rb +408 -227
- data/lib/taskjuggler/UTF8String.rb +10 -0
- data/lib/taskjuggler/UserManual.rb +89 -81
- data/lib/taskjuggler/WorkingHours.rb +2 -3
- data/lib/taskjuggler/XMLDocument.rb +13 -4
- data/lib/taskjuggler/XMLElement.rb +31 -3
- data/lib/taskjuggler/apps/Tj3.rb +53 -21
- data/lib/taskjuggler/apps/Tj3Client.rb +19 -17
- data/lib/taskjuggler/apps/Tj3Daemon.rb +24 -21
- data/lib/taskjuggler/{Tj3Man.rb → apps/Tj3Man.rb} +2 -2
- data/lib/taskjuggler/apps/Tj3SsReceiver.rb +14 -11
- data/lib/taskjuggler/apps/Tj3SsSender.rb +17 -14
- data/lib/taskjuggler/apps/Tj3TsReceiver.rb +14 -11
- data/lib/taskjuggler/apps/Tj3TsSender.rb +16 -13
- data/lib/taskjuggler/apps/Tj3TsSummary.rb +16 -13
- data/lib/taskjuggler/reports/GanttChart.rb +1 -1
- data/lib/taskjuggler/reports/GanttRouter.rb +0 -2
- data/lib/taskjuggler/reports/GanttTaskBar.rb +2 -1
- data/lib/taskjuggler/reports/Navigator.rb +2 -1
- data/lib/taskjuggler/reports/NikuReport.rb +11 -7
- data/lib/taskjuggler/reports/ReportContext.rb +1 -0
- data/lib/taskjuggler/reports/StatusSheetReport.rb +7 -2
- data/lib/taskjuggler/reports/TableReport.rb +6 -4
- data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -0
- data/lib/taskjuggler/reports/TjpExportRE.rb +4 -4
- data/lib/tj3man.rb +1 -1
- data/manual/Day_To_Day_Juggling +134 -137
- data/manual/TaskJuggler_2x_Migration +39 -32
- data/manual/The_TaskJuggler_Syntax +6 -0
- data/prj_cfg.rb +2 -3
- data/spec/StatusSheets_spec.rb +314 -0
- data/spec/TimeSheets_spec.rb +237 -16
- data/spec/Tj3_spec.rb +1 -1
- data/spec/support/DaemonControl.rb +1 -1
- data/tasks/changelog.rake +13 -3
- data/tasks/manual.rake +1 -1
- data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/taskreport.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +1 -1
- data/test/TestSuite/CSV-Reports/sortByTree.tjp +3 -1
- data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +4 -1
- data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -1
- data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +4 -1
- data/test/TestSuite/CSV-Reports/taskreport.tjp +3 -1
- data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +3 -1
- data/test/TestSuite/CSV-Reports/weekly.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Account.tjp +25 -30
- data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +43 -72
- data/test/TestSuite/Export-Reports/refs/Alternative.tjp +17 -22
- data/test/TestSuite/Export-Reports/refs/AutoID.tjp +11 -10
- data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Booking.tjp +16 -23
- data/test/TestSuite/Export-Reports/refs/Caption.tjp +13 -16
- data/test/TestSuite/Export-Reports/refs/Celltext.tjp +12 -16
- data/test/TestSuite/Export-Reports/refs/Comments.tjp +15 -19
- data/test/TestSuite/Export-Reports/refs/Complete.tjp +17 -26
- data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
- data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Depends1.tjp +5 -4
- data/test/TestSuite/Export-Reports/refs/Durations.tjp +18 -27
- data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +21 -20
- data/test/TestSuite/Export-Reports/refs/EnvVar.tjp +21 -0
- data/test/TestSuite/Export-Reports/refs/Flags.tjp +6 -5
- data/test/TestSuite/Export-Reports/refs/Gap.tjp +2 -1
- data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +15 -19
- data/test/TestSuite/Export-Reports/refs/Include.tjp +21 -20
- data/test/TestSuite/Export-Reports/refs/Journal.tjp +6 -5
- data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +92 -140
- data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +293 -566
- data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +17 -22
- data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +32 -53
- data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Manager.tjp +51 -50
- data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +22 -31
- data/test/TestSuite/Export-Reports/refs/Milestone.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/MinMax.tjp +2 -1
- data/test/TestSuite/Export-Reports/refs/Niku.tjp +80 -139
- data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Period.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Persistent.tjp +17 -21
- data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Priority.tjp +121 -107
- data/test/TestSuite/Export-Reports/refs/Project.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Query.tjp +17 -26
- data/test/TestSuite/Export-Reports/refs/Reports.tjp +42 -61
- data/test/TestSuite/Export-Reports/refs/Resource.tjp +21 -20
- data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +16 -20
- data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +36 -35
- data/test/TestSuite/Export-Reports/refs/Responsible.tjp +17 -21
- data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +36 -35
- data/test/TestSuite/Export-Reports/refs/Scenario.tjp +3 -1
- data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Select.tjp +29 -43
- data/test/TestSuite/Export-Reports/refs/Shift.tjp +12 -11
- data/test/TestSuite/Export-Reports/refs/Simple.tjp +15 -19
- data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +33 -47
- data/test/TestSuite/Export-Reports/refs/String.tjp +9 -10
- data/test/TestSuite/Export-Reports/refs/Supplement.tjp +7 -8
- data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +10 -11
- data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +10 -9
- data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +9 -9
- data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +25 -37
- data/test/TestSuite/Export-Reports/refs/Timezone.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Vacation.tjp +26 -25
- data/test/TestSuite/Export-Reports/refs/tutorial.tjp +453 -821
- data/test/TestSuite/HTML-Reports/Alerts.html +160 -412
- data/test/TestSuite/HTML-Reports/CellText.html +758 -0
- data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
- data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
- data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
- data/test/TestSuite/HTML-Reports/Query.html +31 -0
- data/test/TestSuite/HTML-Reports/css/tjmanual.css +0 -20
- data/test/TestSuite/HTML-Reports/css/tjreport.css +6 -7
- data/test/TestSuite/HTML-Reports/depArrows.html +851 -0
- data/test/TestSuite/HTML-Reports/profile.html +37581 -0
- data/test/TestSuite/{ReportGenerator/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +27 -3
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions3.tjp +20 -0
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions4.tjp +16 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/DependencyList-1.csv +4 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-2.csv +8 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions3-1.csv +4 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions4-1.csv +2 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +3 -1
- data/test/TestSuite/Scheduler/Correct/Booking.tjp +8 -7
- data/test/TestSuite/Scheduler/Correct/Booking2.tjp +16 -9
- data/test/TestSuite/Scheduler/Correct/Booking3.tjp +28 -0
- data/test/TestSuite/Scheduler/Correct/Container.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Depends.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +4 -4
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +3 -1
- data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/MultipleMandatories.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Optimize-1.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Optimize-2.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/Optimize-3.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/Optimize-4.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/Optimize-5.tjp +7 -7
- data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Shift.tjp +7 -5
- data/test/TestSuite/Scheduler/Correct/Shift2.tjp +1 -1
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +5 -2
- data/test/TestSuite/Scheduler/Errors/booking_no_duty.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/ts_alert1_more_details.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_alert2_more_details.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_expected_end.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_headline1.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_rem_or_end.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_remaining.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_status_work.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_work.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_res_new_task.tjp +5 -2
- data/test/TestSuite/Scheduler/Errors/ts_work_too_high.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_work_too_low.tjp +4 -2
- data/test/TestSuite/StatusSheets/dev2.tji +22 -0
- data/test/TestSuite/StatusSheets/run +1 -1
- data/test/TestSuite/Syntax/Correct/Booking.tjp +0 -5
- data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
- data/test/TestSuite/Syntax/Correct/EnvVar.tjp +12 -0
- data/test/TestSuite/Syntax/Correct/Freeze.tjp +1 -3
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +9 -5
- data/test/TestSuite/Syntax/Correct/Priority.tjp +22 -11
- data/test/TestSuite/Syntax/Correct/Scenario.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +2 -0
- data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -4
- data/test/TestSuite/Syntax/Correct/css/tjmanual.css +20 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -6
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +2 -1
- data/test/TestSuite/Syntax/Errors/no_own_resource_booking.tjp +16 -0
- data/test/TestSuite/Syntax/Errors/no_own_task_booking.tjp +16 -0
- data/test/TestSuite/Syntax/Errors/resourceroot_leaf.tjp +10 -0
- data/test/TestSuite/Syntax/Errors/runaway_token.tjp +8 -0
- data/test/TestSuite/Syntax/Errors/sorting_bsi.tjp +11 -0
- data/test/TestSuite/Syntax/Errors/ss_no_tracking_scenario.tjp +14 -0
- data/test/TestSuite/Syntax/Errors/taskroot_leaf.tjp +8 -0
- data/test/TestSuite/Syntax/Errors/ts_bad_priority.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_default_details.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_default_summary.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_duplicate_task.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_end_too_early.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_headline_too_long.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_no_headline2.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_no_tracking_scenario.tjp +14 -0
- data/test/TestSuite/Syntax/Errors/ts_summary_too_long.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/unknown_env_var.tjp +7 -0
- data/test/TestSuite/TimeSheets/resrep.tji +7 -0
- data/test/TestSuite/TimeSheets/ts.tji +351 -0
- data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
- data/test/test_Export-Reports.rb +3 -0
- data/test/test_Journal.rb +4 -4
- data/test/test_PropertySet.rb +5 -5
- data/test/test_Syntax.rb +3 -0
- data/test/test_WorkingHours.rb +11 -18
- metadata +1012 -649
- data/lib/exchangebug.rb +0 -42
- data/lib/ruby-signal-bug.rb +0 -55
- data/spec/tj3client.log +0 -23
- data/test/TestSuite/CSV-Reports/alert.tjp +0 -9
- data/test/TestSuite/CSV-Reports/refs/alert.csv +0 -15
- data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +0 -41
- data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -89
- data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -79
- data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
- data/test/TestSuite/HTML-Reports/reference.html +0 -51
- data/test/TestSuite/ReportGenerator/Correct/Alerts-1.csv +0 -1
- data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -78
- data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -6
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
- data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +0 -66
- data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +0 -413
- 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-1.csv +0 -2
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -86
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +0 -413
- data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
- data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
- data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
- data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
- data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +0 -33
- data/test/TestSuite/Syntax/Correct/DST.tjp +0 -11
- data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
- data/test/TestSuite/Syntax/Correct/niku.xml +0 -30
- data/test/TestSuite/Syntax/Errors/sorting_wbs.tjp +0 -11
- data/test/TestSuite/TimeSheets/uu.txt +0 -29
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
require 'taskjuggler/UTF8String'
|
|
15
15
|
require 'taskjuggler/AppConfig'
|
|
16
16
|
|
|
17
|
-
AppConfig.version = '0.0
|
|
17
|
+
AppConfig.version = '0.1.0'
|
|
18
18
|
AppConfig.packageName = 'taskjuggler'
|
|
19
19
|
AppConfig.softwareName = 'TaskJuggler III'
|
|
20
20
|
AppConfig.packageInfo = 'A Project Management Software'
|
data/lib/taskjuggler/TjTime.rb
CHANGED
|
@@ -143,32 +143,37 @@ class TaskJuggler
|
|
|
143
143
|
|
|
144
144
|
# Return true if time is smaller than _t_.
|
|
145
145
|
def <(t)
|
|
146
|
+
return false unless t
|
|
146
147
|
@time < t.time
|
|
147
148
|
end
|
|
148
149
|
|
|
149
150
|
# Return true if time is smaller or equal than _t_.
|
|
150
151
|
def <=(t)
|
|
152
|
+
return false unless t
|
|
151
153
|
@time <= t.time
|
|
152
154
|
end
|
|
153
155
|
|
|
154
156
|
# Return true if time is larger than _t_.
|
|
155
157
|
def >(t)
|
|
158
|
+
return true unless t
|
|
156
159
|
@time > t.time
|
|
157
160
|
end
|
|
158
161
|
|
|
159
162
|
# Return true if time is larger or equal than _t_.
|
|
160
163
|
def >=(t)
|
|
164
|
+
return true unless t
|
|
161
165
|
@time >= t.time
|
|
162
166
|
end
|
|
163
167
|
|
|
164
168
|
# Return true if time and _t_ are identical.
|
|
165
169
|
def ==(t)
|
|
166
|
-
return false
|
|
170
|
+
return false unless t
|
|
167
171
|
@time == t.time
|
|
168
172
|
end
|
|
169
173
|
|
|
170
174
|
# Coparison operator for time with another time _t_.
|
|
171
175
|
def <=>(t)
|
|
176
|
+
return -1 unless t
|
|
172
177
|
@time <=> t.time
|
|
173
178
|
end
|
|
174
179
|
|
|
@@ -635,21 +635,22 @@ each cell.
|
|
|
635
635
|
EOT
|
|
636
636
|
)
|
|
637
637
|
|
|
638
|
-
pattern(%w(
|
|
639
|
-
@column.
|
|
638
|
+
pattern(%w( _listitem $STRING ), lambda {
|
|
639
|
+
@column.listItem = @val[1]
|
|
640
640
|
})
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
641
|
+
doc('listitem.column', <<'EOT'
|
|
642
|
+
Specifies a RichText pattern that is used to generate the text for the list
|
|
643
|
+
items. The pattern should contain at least one ''''<nowiki><</nowiki>-query
|
|
644
|
+
attribute='XXX'->'''' element that will be replaced with the value of
|
|
645
|
+
attribute XXX. For the replacement, the property of the query will be the list
|
|
646
|
+
item.
|
|
646
647
|
EOT
|
|
647
648
|
)
|
|
648
649
|
|
|
649
650
|
pattern(%w( _listtype !listType ), lambda {
|
|
650
651
|
@column.listType = @val[1]
|
|
651
652
|
})
|
|
652
|
-
also(%w(
|
|
653
|
+
also(%w( listitem.column ))
|
|
653
654
|
doc('listtype.column', <<'EOT'
|
|
654
655
|
Specifies what type of list should be used. This attribute only affects
|
|
655
656
|
columns that contain a list of items.
|
|
@@ -727,6 +728,22 @@ EOT
|
|
|
727
728
|
)
|
|
728
729
|
end
|
|
729
730
|
|
|
731
|
+
def rule_currencyFormat
|
|
732
|
+
pattern(%w( _currencyformat $STRING $STRING $STRING $STRING $INTEGER ),
|
|
733
|
+
lambda {
|
|
734
|
+
RealFormat.new(@val.slice(1, 5))
|
|
735
|
+
})
|
|
736
|
+
doc('currencyformat',
|
|
737
|
+
'These values specify the default format used for all currency ' +
|
|
738
|
+
'values.')
|
|
739
|
+
example('Currencyformat')
|
|
740
|
+
arg(1, 'negativeprefix', 'Prefix for negative numbers')
|
|
741
|
+
arg(2, 'negativesuffix', 'Suffix for negative numbers')
|
|
742
|
+
arg(3, 'thousandsep', 'Separator used for every 3rd digit')
|
|
743
|
+
arg(4, 'fractionsep', 'Separator used to separate the fraction digits')
|
|
744
|
+
arg(5, 'fractiondigits', 'Number of fraction digits to show')
|
|
745
|
+
end
|
|
746
|
+
|
|
730
747
|
def rule_date
|
|
731
748
|
pattern(%w( !dateCalcedOrNot ), lambda {
|
|
732
749
|
resolution = @project.nil? ? Project.maxScheduleGranularity :
|
|
@@ -870,7 +887,7 @@ EOT
|
|
|
870
887
|
|
|
871
888
|
# By default, we export all scenarios.
|
|
872
889
|
scenarios = Array.new(@project.scenarios.items) { |i| i }
|
|
873
|
-
scenarios.delete_if { |sc| !@project.scenario(sc).get('
|
|
890
|
+
scenarios.delete_if { |sc| !@project.scenario(sc).get('active') }
|
|
874
891
|
report.set('scenarios', scenarios)
|
|
875
892
|
# Show all tasks, sorted by seqno-up.
|
|
876
893
|
report.set('hideTask', LogicalExpression.new(LogicalOperation.new(0)))
|
|
@@ -925,9 +942,12 @@ EOT
|
|
|
925
942
|
{ 'vacation' => 'Include vacations',
|
|
926
943
|
'workinghours' => 'Include working hours' })
|
|
927
944
|
|
|
945
|
+
pattern(%w( !rollupresource ))
|
|
946
|
+
pattern(%w( !rolluptask ))
|
|
947
|
+
|
|
928
948
|
pattern(%w( _scenarios !scenarioIdList ), lambda {
|
|
929
949
|
# Don't include disabled scenarios in the report
|
|
930
|
-
@val[1].delete_if { |sc| !@project.scenario(sc).get('
|
|
950
|
+
@val[1].delete_if { |sc| !@project.scenario(sc).get('active') }
|
|
931
951
|
@property.set('scenarios', @val[1])
|
|
932
952
|
})
|
|
933
953
|
doc('scenarios.export', <<'EOT'
|
|
@@ -1125,8 +1145,7 @@ EOT
|
|
|
1125
1145
|
def rule_fail
|
|
1126
1146
|
pattern(%w( _fail !logicalExpression ), lambda {
|
|
1127
1147
|
begin
|
|
1128
|
-
@property
|
|
1129
|
-
@property['fail', @scenarioIdx] + [ @val[1] ]
|
|
1148
|
+
@property.set('fail', @property.get('fail') + [ @val[1] ])
|
|
1130
1149
|
rescue AttributeOverwrite
|
|
1131
1150
|
end
|
|
1132
1151
|
})
|
|
@@ -1149,15 +1168,109 @@ EOT
|
|
|
1149
1168
|
})
|
|
1150
1169
|
end
|
|
1151
1170
|
|
|
1171
|
+
def rule_flagLogicalExpression
|
|
1172
|
+
pattern(%w( !flagOperation ), lambda {
|
|
1173
|
+
LogicalExpression.new(@val[0], sourceFileInfo)
|
|
1174
|
+
})
|
|
1175
|
+
doc('logicalflagexpression', <<'EOT'
|
|
1176
|
+
A logical flag expression is a combination of operands and mathematical
|
|
1177
|
+
operations. The final result of a logical expression is always true or false.
|
|
1178
|
+
Logical expressions are used the reduce the properties in a report to a
|
|
1179
|
+
certain subset or to select alternatives for the cell content of a table. When
|
|
1180
|
+
used with attributes like [[hidejournalentry]] the logical expression
|
|
1181
|
+
evaluates to true for a certain property, this property is hidden or rolled-up
|
|
1182
|
+
in the report.
|
|
1183
|
+
|
|
1184
|
+
Operands must be previously declared flags or another logical expression.
|
|
1185
|
+
When you combine logical operations to a more complex expression, the
|
|
1186
|
+
operators are evaluated from left to right. '''a | b & c''' is identical to
|
|
1187
|
+
'''(a | b) & c'''. It's highly recommended that you always use brackets to
|
|
1188
|
+
control the evaluation sequence. Currently, TaskJuggler does not support the
|
|
1189
|
+
concept of operator precedence or right-left associativity. This may change in
|
|
1190
|
+
the future.
|
|
1191
|
+
EOT
|
|
1192
|
+
)
|
|
1193
|
+
also(%w( functions ))
|
|
1194
|
+
end
|
|
1195
|
+
|
|
1196
|
+
def rule_flagOperand
|
|
1197
|
+
pattern(%w( _( !flagOperation _) ), lambda {
|
|
1198
|
+
@val[1]
|
|
1199
|
+
})
|
|
1200
|
+
pattern(%w( _~ !flagOperand ), lambda {
|
|
1201
|
+
operation = LogicalOperation.new(@val[1])
|
|
1202
|
+
operation.operator = '~'
|
|
1203
|
+
operation
|
|
1204
|
+
})
|
|
1205
|
+
|
|
1206
|
+
pattern(%w( $ID ), lambda {
|
|
1207
|
+
unless @project['flags'].include?(@val[0])
|
|
1208
|
+
error('operand_unkn_flag', "Undeclared flag '#{@val[0]}'",
|
|
1209
|
+
@sourceFileInfo[0])
|
|
1210
|
+
end
|
|
1211
|
+
LogicalFlag.new(@val[0])
|
|
1212
|
+
})
|
|
1213
|
+
end
|
|
1214
|
+
|
|
1215
|
+
def rule_flagOperation
|
|
1216
|
+
pattern(%w( !flagOperand !flagOperationChain ), lambda {
|
|
1217
|
+
operation = LogicalOperation.new(@val[0])
|
|
1218
|
+
if @val[1]
|
|
1219
|
+
# Further operators/operands create an operation tree.
|
|
1220
|
+
@val[1].each do |ops|
|
|
1221
|
+
operation = LogicalOperation.new(operation)
|
|
1222
|
+
operation.operator = ops[0]
|
|
1223
|
+
operation.operand2 = ops[1]
|
|
1224
|
+
end
|
|
1225
|
+
end
|
|
1226
|
+
operation
|
|
1227
|
+
})
|
|
1228
|
+
arg(0, 'operand', <<'EOT'
|
|
1229
|
+
An operand is a declared flag. An operand can be a negated operand by
|
|
1230
|
+
prefixing a ~ charater or it can be another logical expression enclosed in
|
|
1231
|
+
braces.
|
|
1232
|
+
EOT
|
|
1233
|
+
)
|
|
1234
|
+
end
|
|
1235
|
+
|
|
1236
|
+
def rule_flagOperationChain
|
|
1237
|
+
optional
|
|
1238
|
+
repeatable
|
|
1239
|
+
pattern(%w( !flagOperatorAndOperand), lambda {
|
|
1240
|
+
@val[0]
|
|
1241
|
+
})
|
|
1242
|
+
end
|
|
1243
|
+
|
|
1244
|
+
def rule_flagOperatorAndOperand
|
|
1245
|
+
pattern(%w( !flagOperator !flagOperand), lambda{
|
|
1246
|
+
[ @val[0], @val[1] ]
|
|
1247
|
+
})
|
|
1248
|
+
arg(1, 'operand', <<'EOT'
|
|
1249
|
+
An operand is a declared flag. An operand can be a negated operand by
|
|
1250
|
+
prefixing a ~ charater or it can be another logical expression enclosed in
|
|
1251
|
+
braces.
|
|
1252
|
+
EOT
|
|
1253
|
+
)
|
|
1254
|
+
end
|
|
1255
|
+
|
|
1256
|
+
def rule_flagOperator
|
|
1257
|
+
singlePattern('_|')
|
|
1258
|
+
descr('The \'or\' operator')
|
|
1259
|
+
|
|
1260
|
+
singlePattern('_&')
|
|
1261
|
+
descr('The \'and\' operator')
|
|
1262
|
+
end
|
|
1263
|
+
|
|
1264
|
+
|
|
1152
1265
|
def rule_flags
|
|
1153
1266
|
pattern(%w( _flags !flagList ), lambda {
|
|
1154
1267
|
@val[1].each do |flag|
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1268
|
+
next if @property['flags', @scenarioIdx].include?(flag)
|
|
1269
|
+
|
|
1270
|
+
# We allow multiple instances of flag definitions.
|
|
1271
|
+
begin
|
|
1272
|
+
@property['flags', @scenarioIdx] << flag
|
|
1273
|
+
rescue AttributeOverwrite
|
|
1161
1274
|
end
|
|
1162
1275
|
end
|
|
1163
1276
|
})
|
|
@@ -1245,6 +1358,14 @@ EOT
|
|
|
1245
1358
|
)
|
|
1246
1359
|
arg(2, 'ID', 'A scenario ID')
|
|
1247
1360
|
|
|
1361
|
+
pattern(%w( _ischildof _( $ID _) ))
|
|
1362
|
+
doc('ischildof', <<'EOT'
|
|
1363
|
+
Will evaluate to true for tasks and resources if current property is a child
|
|
1364
|
+
of the provided parent property.
|
|
1365
|
+
EOT
|
|
1366
|
+
)
|
|
1367
|
+
arg(2, 'ID', 'The ID of the parent')
|
|
1368
|
+
|
|
1248
1369
|
pattern(%w( _isdependencyof _( $ID _, $ID _, $INTEGER _) ))
|
|
1249
1370
|
doc('isdependencyof', <<'EOT'
|
|
1250
1371
|
Will evaluate to true for tasks that depend on the specified task in
|
|
@@ -1278,6 +1399,13 @@ EOT
|
|
|
1278
1399
|
pattern(['_isleaf', '_(', '_)' ])
|
|
1279
1400
|
doc('isleaf', 'The result is true if the property is not a container.')
|
|
1280
1401
|
|
|
1402
|
+
pattern(%w( _ismilestone _( $ID _) ))
|
|
1403
|
+
doc('ismilestone', <<'EOT'
|
|
1404
|
+
The result is true if the property is a milestone in the provided scenario.
|
|
1405
|
+
EOT
|
|
1406
|
+
)
|
|
1407
|
+
arg(2, 'Scenario ID', 'A scenario ID')
|
|
1408
|
+
|
|
1281
1409
|
pattern(%w( _isongoing _( $ID _) ))
|
|
1282
1410
|
doc('isongoing', <<'EOT'
|
|
1283
1411
|
Will evaluate to true for tasks that overlap with the report period in given
|
|
@@ -1332,14 +1460,24 @@ EOT
|
|
|
1332
1460
|
)
|
|
1333
1461
|
end
|
|
1334
1462
|
|
|
1463
|
+
def rule_hidejournalentry
|
|
1464
|
+
pattern(%w( _hidejournalentry !flagLogicalExpression ), lambda {
|
|
1465
|
+
@property.set('hideJournalEntry', @val[1])
|
|
1466
|
+
})
|
|
1467
|
+
doc('hidejournalentry', <<'EOT'
|
|
1468
|
+
Do not include journal entries that match the specified logical expression.
|
|
1469
|
+
EOT
|
|
1470
|
+
)
|
|
1471
|
+
end
|
|
1472
|
+
|
|
1335
1473
|
def rule_hideresource
|
|
1336
1474
|
pattern(%w( _hideresource !logicalExpression ), lambda {
|
|
1337
1475
|
@property.set('hideResource', @val[1])
|
|
1338
1476
|
})
|
|
1339
1477
|
doc('hideresource', <<'EOT'
|
|
1340
1478
|
Do not include resources that match the specified logical expression. If the
|
|
1341
|
-
report is sorted in tree mode (default) then enclosing resources are
|
|
1342
|
-
even if the expression matches the resource.
|
|
1479
|
+
report is sorted in ''''tree'''' mode (default) then enclosing resources are
|
|
1480
|
+
listed even if the expression matches the resource.
|
|
1343
1481
|
EOT
|
|
1344
1482
|
)
|
|
1345
1483
|
also(%w( sortresources ))
|
|
@@ -1351,8 +1489,8 @@ EOT
|
|
|
1351
1489
|
})
|
|
1352
1490
|
doc('hidetask', <<'EOT'
|
|
1353
1491
|
Do not include tasks that match the specified logical expression. If the
|
|
1354
|
-
report is sorted in tree mode (default) then enclosing tasks are
|
|
1355
|
-
if the expression matches the task.
|
|
1492
|
+
report is sorted in ''''tree'''' mode (default) then enclosing tasks are
|
|
1493
|
+
listed even if the expression matches the task.
|
|
1356
1494
|
EOT
|
|
1357
1495
|
)
|
|
1358
1496
|
also(%w( sorttasks ))
|
|
@@ -1611,6 +1749,19 @@ EOT
|
|
|
1611
1749
|
|
|
1612
1750
|
pattern(%w( !author ))
|
|
1613
1751
|
|
|
1752
|
+
pattern(%w( _flags !flagList ), lambda {
|
|
1753
|
+
@val[1].each do |flag|
|
|
1754
|
+
next if @journalEntry.flags.include?(flag)
|
|
1755
|
+
|
|
1756
|
+
@journalEntry.flags << flag
|
|
1757
|
+
end
|
|
1758
|
+
})
|
|
1759
|
+
doc('flags.journalentry', <<'EOT'
|
|
1760
|
+
Journal entries can have flags attached to them. These can be used to
|
|
1761
|
+
include only entries in a report that have a certain flag.
|
|
1762
|
+
EOT
|
|
1763
|
+
)
|
|
1764
|
+
|
|
1614
1765
|
pattern(%w( !summary ))
|
|
1615
1766
|
|
|
1616
1767
|
pattern(%w( !details ))
|
|
@@ -1983,7 +2134,7 @@ EOT
|
|
|
1983
2134
|
end
|
|
1984
2135
|
|
|
1985
2136
|
def rule_morePredTasks
|
|
1986
|
-
commaListRule('!
|
|
2137
|
+
commaListRule('!taskPred')
|
|
1987
2138
|
end
|
|
1988
2139
|
|
|
1989
2140
|
def rule_moreSortCriteria
|
|
@@ -2042,10 +2193,16 @@ EOT
|
|
|
2042
2193
|
pattern(%w( !headline ))
|
|
2043
2194
|
pattern(%w( !hideresource ))
|
|
2044
2195
|
pattern(%w( !hidetask ))
|
|
2196
|
+
|
|
2197
|
+
pattern(%w( !numberFormat ), lambda {
|
|
2198
|
+
@property.set('numberFormat', @val[0])
|
|
2199
|
+
})
|
|
2200
|
+
|
|
2045
2201
|
pattern(%w( !reportEnd ))
|
|
2046
2202
|
pattern(%w( !reportPeriod ))
|
|
2047
2203
|
pattern(%w( !reportStart ))
|
|
2048
2204
|
pattern(%w( !reportTitle ))
|
|
2205
|
+
|
|
2049
2206
|
pattern(%w( _timeoff $STRING $STRING ), lambda {
|
|
2050
2207
|
@property.set('timeOffId', @val[1])
|
|
2051
2208
|
@property.set('timeOffName', @val[2])
|
|
@@ -2067,6 +2224,7 @@ EOF
|
|
|
2067
2224
|
def rule_nikuReportHeader
|
|
2068
2225
|
pattern(%w( _nikureport !optionalID $STRING ), lambda {
|
|
2069
2226
|
newReport(@val[1], @val[2], :niku, sourceFileInfo)
|
|
2227
|
+
@property.set('numberFormat', RealFormat.new(['-', '', '', '.', 2]))
|
|
2070
2228
|
})
|
|
2071
2229
|
arg(1, 'file name', <<'EOT'
|
|
2072
2230
|
The name of the time sheet report file to generate. It must end with a .tji
|
|
@@ -2139,6 +2297,21 @@ EOT
|
|
|
2139
2297
|
singlePattern('$FLOAT')
|
|
2140
2298
|
end
|
|
2141
2299
|
|
|
2300
|
+
def rule_numberFormat
|
|
2301
|
+
pattern(%w( _numberformat $STRING $STRING $STRING $STRING $INTEGER ),
|
|
2302
|
+
lambda {
|
|
2303
|
+
RealFormat.new(@val.slice(1, 5))
|
|
2304
|
+
})
|
|
2305
|
+
doc('numberformat',
|
|
2306
|
+
'These values specify the default format used for all numerical ' +
|
|
2307
|
+
'real values.')
|
|
2308
|
+
arg(1, 'negativeprefix', 'Prefix for negative numbers')
|
|
2309
|
+
arg(2, 'negativesuffix', 'Suffix for negative numbers')
|
|
2310
|
+
arg(3, 'thousandsep', 'Separator used for every 3rd digit')
|
|
2311
|
+
arg(4, 'fractionsep', 'Separator used to separate the fraction digits')
|
|
2312
|
+
arg(5, 'fractiondigits', 'Number of fraction digits to show')
|
|
2313
|
+
end
|
|
2314
|
+
|
|
2142
2315
|
def rule_operand
|
|
2143
2316
|
pattern(%w( _( !operation _) ), lambda {
|
|
2144
2317
|
@val[1]
|
|
@@ -2160,7 +2333,7 @@ EOT
|
|
|
2160
2333
|
error('operand_unkn_scen', "Unknown scenario ID #{scenario}",
|
|
2161
2334
|
@sourceFileInfo[0])
|
|
2162
2335
|
end
|
|
2163
|
-
LogicalAttribute.new(attribute, scenarioIdx)
|
|
2336
|
+
LogicalAttribute.new(attribute, @project.scenario(scenarioIdx))
|
|
2164
2337
|
})
|
|
2165
2338
|
pattern(%w( !date ), lambda {
|
|
2166
2339
|
LogicalOperation.new(@val[0])
|
|
@@ -2345,19 +2518,9 @@ EOT
|
|
|
2345
2518
|
repeatable
|
|
2346
2519
|
optional
|
|
2347
2520
|
|
|
2348
|
-
pattern(%w(
|
|
2349
|
-
|
|
2350
|
-
@project['currencyFormat'] = RealFormat.new(@val.slice(1, 5))
|
|
2521
|
+
pattern(%w( !currencyFormat ), lambda {
|
|
2522
|
+
@project['currencyFormat'] = @val[0]
|
|
2351
2523
|
})
|
|
2352
|
-
doc('currencyformat',
|
|
2353
|
-
'These values specify the default format used for all currency ' +
|
|
2354
|
-
'values.')
|
|
2355
|
-
example('Currencyformat')
|
|
2356
|
-
arg(1, 'negativeprefix', 'Prefix for negative numbers')
|
|
2357
|
-
arg(2, 'negativesuffix', 'Suffix for negative numbers')
|
|
2358
|
-
arg(3, 'thousandsep', 'Separator used for every 3rd digit')
|
|
2359
|
-
arg(4, 'fractionsep', 'Separator used to separate the fraction digits')
|
|
2360
|
-
arg(5, 'fractiondigits', 'Number of fraction digits to show')
|
|
2361
2524
|
|
|
2362
2525
|
pattern(%w( _currency $STRING ), lambda {
|
|
2363
2526
|
@project['currency'] = @val[1]
|
|
@@ -2416,18 +2579,9 @@ EOT
|
|
|
2416
2579
|
arg(1, 'date', 'Alternative date to be used as current date for all ' +
|
|
2417
2580
|
'computations')
|
|
2418
2581
|
|
|
2419
|
-
pattern(%w(
|
|
2420
|
-
|
|
2421
|
-
@project['numberFormat'] = RealFormat.new(@val.slice(1, 5))
|
|
2582
|
+
pattern(%w( !numberFormat ), lambda {
|
|
2583
|
+
@project['numberFormat'] = @val[0]
|
|
2422
2584
|
})
|
|
2423
|
-
doc('numberformat',
|
|
2424
|
-
'These values specify the default format used for all numerical ' +
|
|
2425
|
-
'real values.')
|
|
2426
|
-
arg(1, 'negativeprefix', 'Prefix for negative numbers')
|
|
2427
|
-
arg(2, 'negativesuffix', 'Suffix for negative numbers')
|
|
2428
|
-
arg(3, 'thousandsep', 'Separator used for every 3rd digit')
|
|
2429
|
-
arg(4, 'fractionsep', 'Separator used to separate the fraction digits')
|
|
2430
|
-
arg(5, 'fractiondigits', 'Number of fraction digits to show')
|
|
2431
2585
|
|
|
2432
2586
|
pattern(%w( !scenario ))
|
|
2433
2587
|
pattern(%w( _shorttimeformat $STRING ), lambda {
|
|
@@ -2478,6 +2632,29 @@ Do not use this option after you've set the time zone!
|
|
|
2478
2632
|
EOT
|
|
2479
2633
|
)
|
|
2480
2634
|
|
|
2635
|
+
pattern(%w( _trackingscenario !scenarioId ), lambda {
|
|
2636
|
+
@project['trackingScenarioIdx'] = @val[1]
|
|
2637
|
+
# The tracking scenario and all child scenarios will always be scheduled
|
|
2638
|
+
# in projection mode.
|
|
2639
|
+
@project.scenario(@val[1]).all.each do |scenario|
|
|
2640
|
+
scenario.set('projection', true)
|
|
2641
|
+
end
|
|
2642
|
+
})
|
|
2643
|
+
doc('trackingscenario', <<'EOT'
|
|
2644
|
+
Specifies which scenario is used to capture what actually has happened with
|
|
2645
|
+
the project. All sub-scenarios of this scenario inherit the bookings of the
|
|
2646
|
+
tracking scenario and may not have any bookings of their own. The tracking
|
|
2647
|
+
scenario must also be specified to use time and status sheet reports.
|
|
2648
|
+
|
|
2649
|
+
The tracking scenario and all scenarios derived from it will be scheduled in
|
|
2650
|
+
projection mode. This means that the scheduler will only add bookings after
|
|
2651
|
+
the current date or the date specified by [[now]]. It is assumed that all
|
|
2652
|
+
allocations prior to this date have been provided as [[booking.task|
|
|
2653
|
+
task bookings]] or [[booking.resource|resource bookings]].
|
|
2654
|
+
EOT
|
|
2655
|
+
)
|
|
2656
|
+
example('TimeSheet1', '2')
|
|
2657
|
+
|
|
2481
2658
|
pattern(%w( _weekstartsmonday ), lambda {
|
|
2482
2659
|
@project['weekStartsMonday'] = true
|
|
2483
2660
|
})
|
|
@@ -2514,6 +2691,14 @@ EOT
|
|
|
2514
2691
|
|
|
2515
2692
|
def rule_projectDeclaration
|
|
2516
2693
|
pattern(%w( !projectHeader !projectBody ), lambda {
|
|
2694
|
+
# If the user has specified a tracking scenario, we mark all children of
|
|
2695
|
+
# that scenario to disallow own bookings. These scenarios will inherit
|
|
2696
|
+
# their bookings from the tracking scenario.
|
|
2697
|
+
if (idx = @project['trackingScenarioIdx'])
|
|
2698
|
+
@project.scenario(idx).allLeaves(true).each do |scenario|
|
|
2699
|
+
scenario.set('ownbookings', false)
|
|
2700
|
+
end
|
|
2701
|
+
end
|
|
2517
2702
|
@val[0]
|
|
2518
2703
|
})
|
|
2519
2704
|
doc('project', <<'EOT'
|
|
@@ -2554,19 +2739,23 @@ EOT
|
|
|
2554
2739
|
optional
|
|
2555
2740
|
repeatable
|
|
2556
2741
|
pattern(%w( _sloppy ), lambda {
|
|
2557
|
-
|
|
2742
|
+
warning('projection_sloppy',
|
|
2743
|
+
'The sloppy projection mode has been deprecated. The ' +
|
|
2744
|
+
'functionality is no longer supported.')
|
|
2558
2745
|
})
|
|
2559
2746
|
doc('sloppy.projection', <<'EOT'
|
|
2560
|
-
|
|
2747
|
+
The sloppy projection mode has been deprecated. Please use
|
|
2748
|
+
[[trackingscenario]] feature instead.
|
|
2561
2749
|
EOT
|
|
2562
2750
|
)
|
|
2563
2751
|
|
|
2564
2752
|
pattern(%w( _strict ), lambda {
|
|
2565
|
-
|
|
2753
|
+
warning('projection_strict',
|
|
2754
|
+
'The strict mode is now always used.')
|
|
2566
2755
|
})
|
|
2567
2756
|
doc('strict.projection', <<'EOT'
|
|
2568
|
-
|
|
2569
|
-
|
|
2757
|
+
The strict projection mode has been deprecated. Please use
|
|
2758
|
+
[[trackingscenario]] feature instead.
|
|
2570
2759
|
EOT
|
|
2571
2760
|
)
|
|
2572
2761
|
end
|
|
@@ -2748,16 +2937,6 @@ part-time, or vice versa, please refer to the 'Shift' property.
|
|
|
2748
2937
|
EOT
|
|
2749
2938
|
)
|
|
2750
2939
|
arg(1, 'name', 'Name or purpose of the vacation')
|
|
2751
|
-
|
|
2752
|
-
pattern(%w( _trackingscenario !scenarioId ), lambda {
|
|
2753
|
-
@project['trackingScenarioIdx'] = @val[1]
|
|
2754
|
-
})
|
|
2755
|
-
doc('trackingscenario', <<'EOT'
|
|
2756
|
-
Specifies which scenario should be used for time sheet reports. By default,
|
|
2757
|
-
the top-level scenario will be used.
|
|
2758
|
-
EOT
|
|
2759
|
-
)
|
|
2760
|
-
example('TimeSheet1', '2')
|
|
2761
2940
|
end
|
|
2762
2941
|
|
|
2763
2942
|
def rule_propertiesFile
|
|
@@ -2800,7 +2979,7 @@ EOT
|
|
|
2800
2979
|
"#{@val[1]} is not a list attribute. Only those can be purged.",
|
|
2801
2980
|
@sourceFileInfo[1])
|
|
2802
2981
|
end
|
|
2803
|
-
@property.
|
|
2982
|
+
@property.getAttribute(@val[1], @scenarioIdx).reset
|
|
2804
2983
|
})
|
|
2805
2984
|
doc('purge', <<'EOT'
|
|
2806
2985
|
List attributes, like regular attributes, can inherit their values from the
|
|
@@ -2935,13 +3114,7 @@ EOT
|
|
|
2935
3114
|
descr(<<'EOT'
|
|
2936
3115
|
The resources that have this resource assigned as manager.
|
|
2937
3116
|
|
|
2938
|
-
The list can be customized by the [
|
|
2939
|
-
following modes are supported:
|
|
2940
|
-
|
|
2941
|
-
# ID
|
|
2942
|
-
# Name ''(This is the default)''
|
|
2943
|
-
# Name (ID)
|
|
2944
|
-
# ID: Name
|
|
3117
|
+
The list can be customized by the [listitem.column listitem] attribute.
|
|
2945
3118
|
EOT
|
|
2946
3119
|
)
|
|
2947
3120
|
|
|
@@ -2983,21 +3156,9 @@ symbols are used for <nowiki><dep></nowiki>.
|
|
|
2983
3156
|
* '''<nowiki>]->]</nowiki>''': End-to-End dependency
|
|
2984
3157
|
* '''<nowiki>[->]</nowiki>''': Start-to-End dependency
|
|
2985
3158
|
|
|
2986
|
-
The list can be customized by the [
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
# ID <nowiki><dep></nowiki> Date
|
|
2990
|
-
# Name <nowiki><dep></nowiki> Date
|
|
2991
|
-
# Name (ID) <nowiki><dep></nowiki> Date
|
|
2992
|
-
# ID: Name <nowiki><dep></nowiki> Date
|
|
2993
|
-
# ID <nowiki><dep></nowiki>
|
|
2994
|
-
# Name <nowiki><dep></nowiki>
|
|
2995
|
-
# Name (ID) <nowiki><dep></nowiki>
|
|
2996
|
-
# ID: Name <nowiki><dep></nowiki>
|
|
2997
|
-
# ID
|
|
2998
|
-
# Name
|
|
2999
|
-
# Name (ID)
|
|
3000
|
-
# ID: Name
|
|
3159
|
+
The list can be customized by the [listitem.column listitem] attribute.
|
|
3160
|
+
The dependency symbol can be generated via the ''''dependency'''' attribute
|
|
3161
|
+
inthe query, the target date via the ''''date'''' attribute.
|
|
3001
3162
|
EOT
|
|
3002
3163
|
)
|
|
3003
3164
|
|
|
@@ -3022,9 +3183,9 @@ EOT
|
|
|
3022
3183
|
descr('The headcount number of the resource or group')
|
|
3023
3184
|
|
|
3024
3185
|
pattern([ '_hierarchindex' ], lambda {
|
|
3025
|
-
'
|
|
3186
|
+
'bsi'
|
|
3026
3187
|
})
|
|
3027
|
-
descr('Deprecated alias for
|
|
3188
|
+
descr('Deprecated alias for bsi')
|
|
3028
3189
|
|
|
3029
3190
|
singlePattern('_hourly')
|
|
3030
3191
|
descr('A group of columns with one column for each hour')
|
|
@@ -3041,17 +3202,7 @@ A list of milestones that are a prerequiste for the current task. For
|
|
|
3041
3202
|
container tasks it will also include the inputs of the child tasks. Inputs may
|
|
3042
3203
|
not have any predecessors.
|
|
3043
3204
|
|
|
3044
|
-
The list can be customized by the [
|
|
3045
|
-
following modes are supported:
|
|
3046
|
-
|
|
3047
|
-
# ID
|
|
3048
|
-
# Name
|
|
3049
|
-
# Name (ID)
|
|
3050
|
-
# ID: Name
|
|
3051
|
-
# ID (Date)
|
|
3052
|
-
# Name (Date)
|
|
3053
|
-
# Name (ID) Date ''(This is the default)''
|
|
3054
|
-
# ID: Name Date
|
|
3205
|
+
The list can be customized by the [listitem.column listitem] attribute.
|
|
3055
3206
|
EOT
|
|
3056
3207
|
)
|
|
3057
3208
|
|
|
@@ -3089,13 +3240,7 @@ EOT
|
|
|
3089
3240
|
descr(<<'EOT'
|
|
3090
3241
|
A list of managers that the resource reports to.
|
|
3091
3242
|
|
|
3092
|
-
The list can be customized by the [
|
|
3093
|
-
following modes are supported:
|
|
3094
|
-
|
|
3095
|
-
# ID
|
|
3096
|
-
# Name ''(This is the default)''
|
|
3097
|
-
# Name (ID)
|
|
3098
|
-
# ID: Name
|
|
3243
|
+
The list can be customized by the [listitem.column listitem] attribute.
|
|
3099
3244
|
EOT
|
|
3100
3245
|
)
|
|
3101
3246
|
|
|
@@ -3138,21 +3283,9 @@ are used
|
|
|
3138
3283
|
* '''<nowiki>]->]</nowiki>''': End-to-End dependency
|
|
3139
3284
|
* '''<nowiki>[->]</nowiki>''': Start-to-End dependency
|
|
3140
3285
|
|
|
3141
|
-
The list can be customized by the [
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
# ID <nowiki><dep></nowiki> Date
|
|
3145
|
-
# Name <nowiki><dep></nowiki> Date
|
|
3146
|
-
# Name (ID) <nowiki><dep></nowiki> Date
|
|
3147
|
-
# ID: Name <nowiki><dep></nowiki> Date
|
|
3148
|
-
# ID <nowiki><dep></nowiki>
|
|
3149
|
-
# Name <nowiki><dep></nowiki>
|
|
3150
|
-
# Name (ID) <nowiki><dep></nowiki>
|
|
3151
|
-
# ID: Name <nowiki><dep></nowiki>
|
|
3152
|
-
# ID
|
|
3153
|
-
# Name
|
|
3154
|
-
# Name (ID)
|
|
3155
|
-
# ID: Name
|
|
3286
|
+
The list can be customized by the [listitem.column listitem] attribute.
|
|
3287
|
+
The dependency symbol can be generated via the ''''dependency'''' attribute
|
|
3288
|
+
inthe query, the target date via the ''''date'''' attribute.
|
|
3156
3289
|
EOT
|
|
3157
3290
|
)
|
|
3158
3291
|
|
|
@@ -3169,13 +3302,7 @@ EOT
|
|
|
3169
3302
|
descr(<<'EOT'
|
|
3170
3303
|
All resources that have this resource assigned as a direct or indirect manager.
|
|
3171
3304
|
|
|
3172
|
-
The list can be customized by the [
|
|
3173
|
-
following modes are supported:
|
|
3174
|
-
|
|
3175
|
-
# ID
|
|
3176
|
-
# Name ''(This is the default)''
|
|
3177
|
-
# Name (ID)
|
|
3178
|
-
# ID: Name
|
|
3305
|
+
The list can be customized by the [listitem.column listitem] attribute.
|
|
3179
3306
|
EOT
|
|
3180
3307
|
)
|
|
3181
3308
|
|
|
@@ -3183,13 +3310,7 @@ EOT
|
|
|
3183
3310
|
descr(<<'EOT'
|
|
3184
3311
|
A list of resources that are assigned to the task in the report time frame.
|
|
3185
3312
|
|
|
3186
|
-
The list can be customized by the [
|
|
3187
|
-
following modes are supported:
|
|
3188
|
-
|
|
3189
|
-
# ID
|
|
3190
|
-
# Name ''(This is the default)''
|
|
3191
|
-
# Name (ID)
|
|
3192
|
-
# ID: Name
|
|
3313
|
+
The list can be customized by the [listitem.column listitem] attribute.
|
|
3193
3314
|
EOT
|
|
3194
3315
|
)
|
|
3195
3316
|
|
|
@@ -3197,13 +3318,7 @@ EOT
|
|
|
3197
3318
|
descr(<<'EOT'
|
|
3198
3319
|
The responsible people for this task.
|
|
3199
3320
|
|
|
3200
|
-
The list can be customized by the [
|
|
3201
|
-
following modes are supported:
|
|
3202
|
-
|
|
3203
|
-
# ID
|
|
3204
|
-
# Name ''(This is the default)''
|
|
3205
|
-
# Name (ID)
|
|
3206
|
-
# ID: Name
|
|
3321
|
+
The list can be customized by the [listitem.column listitem] attribute.
|
|
3207
3322
|
EOT
|
|
3208
3323
|
)
|
|
3209
3324
|
|
|
@@ -3236,21 +3351,16 @@ A list of milestones that depend on the current task. For container tasks it
|
|
|
3236
3351
|
will also include the targets of the child tasks. Targets may not have any
|
|
3237
3352
|
follower tasks.
|
|
3238
3353
|
|
|
3239
|
-
The list can be customized by the [
|
|
3240
|
-
following modes are supported:
|
|
3241
|
-
|
|
3242
|
-
# ID
|
|
3243
|
-
# Name
|
|
3244
|
-
# Name (ID)
|
|
3245
|
-
# ID: Name
|
|
3246
|
-
# ID (Date)
|
|
3247
|
-
# Name (Date)
|
|
3248
|
-
# Name (ID) Date ''(This is the default)''
|
|
3249
|
-
# ID: Name Date
|
|
3354
|
+
The list can be customized by the [listitem.column listitem] attribute.
|
|
3250
3355
|
EOT
|
|
3251
3356
|
)
|
|
3252
3357
|
|
|
3253
|
-
|
|
3358
|
+
pattern([ '_wbs' ], lambda {
|
|
3359
|
+
'bsi'
|
|
3360
|
+
})
|
|
3361
|
+
descr('Deprecated alias for bsi.')
|
|
3362
|
+
|
|
3363
|
+
singlePattern('_bsi')
|
|
3254
3364
|
descr('The hierarchical or work breakdown structure index')
|
|
3255
3365
|
|
|
3256
3366
|
singlePattern('_weekly')
|
|
@@ -3304,6 +3414,10 @@ report.
|
|
|
3304
3414
|
EOT
|
|
3305
3415
|
)
|
|
3306
3416
|
|
|
3417
|
+
pattern(%w( !currencyFormat ), lambda {
|
|
3418
|
+
@property.set('currencyFormat', @val[0])
|
|
3419
|
+
})
|
|
3420
|
+
|
|
3307
3421
|
pattern(%w( !reportEnd ))
|
|
3308
3422
|
|
|
3309
3423
|
pattern(%w( _epilog $STRING ), lambda {
|
|
@@ -3346,6 +3460,7 @@ EOT
|
|
|
3346
3460
|
also(%w( epilog footer prolog ))
|
|
3347
3461
|
|
|
3348
3462
|
pattern(%w( !headline ))
|
|
3463
|
+
pattern(%w( !hidejournalentry ))
|
|
3349
3464
|
pattern(%w( !hideresource ))
|
|
3350
3465
|
|
|
3351
3466
|
pattern(%w( !hidetask ))
|
|
@@ -3368,6 +3483,10 @@ Determines what unit should be used to display all load values in this report.
|
|
|
3368
3483
|
EOT
|
|
3369
3484
|
)
|
|
3370
3485
|
|
|
3486
|
+
pattern(%w( !numberFormat ), lambda {
|
|
3487
|
+
@property.set('numberFormat', @val[0])
|
|
3488
|
+
})
|
|
3489
|
+
|
|
3371
3490
|
pattern(%w( !reportPeriod ))
|
|
3372
3491
|
|
|
3373
3492
|
pattern(%w( _prolog $STRING ), lambda {
|
|
@@ -3397,27 +3516,12 @@ span the [[header]] or [[footer]] sections.
|
|
|
3397
3516
|
EOT
|
|
3398
3517
|
)
|
|
3399
3518
|
|
|
3400
|
-
pattern(%w(
|
|
3401
|
-
|
|
3402
|
-
})
|
|
3403
|
-
doc('rollupresource', <<'EOT'
|
|
3404
|
-
Do not show sub-resources of resources that match the specified logical
|
|
3405
|
-
expression.
|
|
3406
|
-
EOT
|
|
3407
|
-
)
|
|
3408
|
-
example('RollupResource')
|
|
3409
|
-
|
|
3410
|
-
pattern(%w( _rolluptask !logicalExpression ), lambda {
|
|
3411
|
-
@property.set('rollupTask', @val[1])
|
|
3412
|
-
})
|
|
3413
|
-
doc('rolluptask', <<'EOT'
|
|
3414
|
-
Do not show sub-tasks of tasks that match the specified logical expression.
|
|
3415
|
-
EOT
|
|
3416
|
-
)
|
|
3519
|
+
pattern(%w( !rollupresource ))
|
|
3520
|
+
pattern(%w( !rolluptask ))
|
|
3417
3521
|
|
|
3418
3522
|
pattern(%w( _scenarios !scenarioIdList ), lambda {
|
|
3419
3523
|
# Don't include disabled scenarios in the report
|
|
3420
|
-
@val[1].delete_if { |sc| !@project.scenario(sc).get('
|
|
3524
|
+
@val[1].delete_if { |sc| !@project.scenario(sc).get('active') }
|
|
3421
3525
|
@property.set('scenarios', @val[1])
|
|
3422
3526
|
})
|
|
3423
3527
|
doc('scenarios', <<'EOT'
|
|
@@ -3445,6 +3549,11 @@ EOT
|
|
|
3445
3549
|
pattern(%w( !reportStart ))
|
|
3446
3550
|
|
|
3447
3551
|
pattern(%w( _resourceroot !resourceId), lambda {
|
|
3552
|
+
if @val[1].leaf?
|
|
3553
|
+
error('resourceroot_leaf',
|
|
3554
|
+
"#{@val[1].fullId} is not a group resource",
|
|
3555
|
+
@sourceFileInfo[1])
|
|
3556
|
+
end
|
|
3448
3557
|
@property.set('resourceRoot', @val[1])
|
|
3449
3558
|
})
|
|
3450
3559
|
doc('resourceroot', <<'EOT'
|
|
@@ -3457,6 +3566,11 @@ EOT
|
|
|
3457
3566
|
example('ResourceRoot')
|
|
3458
3567
|
|
|
3459
3568
|
pattern(%w( _taskroot !taskId), lambda {
|
|
3569
|
+
if @val[1].leaf?
|
|
3570
|
+
error('taskroot_leaf',
|
|
3571
|
+
"#{@val[1].fullId} is not a container task",
|
|
3572
|
+
@sourceFileInfo[1])
|
|
3573
|
+
end
|
|
3460
3574
|
@property.set('taskRoot', @val[1])
|
|
3461
3575
|
})
|
|
3462
3576
|
doc('taskroot', <<'EOT'
|
|
@@ -3577,7 +3691,7 @@ EOT
|
|
|
3577
3691
|
@property.typeSpec = :taskreport
|
|
3578
3692
|
unless @property.modified?('columns')
|
|
3579
3693
|
# Set the default columns for this report.
|
|
3580
|
-
%w(
|
|
3694
|
+
%w( bsi name start end effort chart ).each do |col|
|
|
3581
3695
|
@property.get('columns') <<
|
|
3582
3696
|
TableColumnDefinition.new(col, columnTitle(col))
|
|
3583
3697
|
end
|
|
@@ -3752,6 +3866,12 @@ EOT
|
|
|
3752
3866
|
|
|
3753
3867
|
def rule_resourceBooking
|
|
3754
3868
|
pattern(%w( !resourceBookingHeader !bookingBody ), lambda {
|
|
3869
|
+
unless @project.scenario(@scenarioIdx).get('ownbookings')
|
|
3870
|
+
error('no_own_resource_booking',
|
|
3871
|
+
"The scenario #{@project.scenario(@scenarioIdx).fullId} " +
|
|
3872
|
+
'inherits its bookings from the tracking ' +
|
|
3873
|
+
'scenario. You cannot specificy additional bookings for it.')
|
|
3874
|
+
end
|
|
3755
3875
|
@val[0].task.addBooking(@scenarioIdx, @val[0])
|
|
3756
3876
|
})
|
|
3757
3877
|
end
|
|
@@ -3837,14 +3957,16 @@ EOT
|
|
|
3837
3957
|
|
|
3838
3958
|
pattern(%w( _booking !resourceBooking ))
|
|
3839
3959
|
doc('booking.resource', <<'EOT'
|
|
3840
|
-
The booking attribute can be used to report completed work.
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3960
|
+
The booking attribute can be used to report actually completed work. A task
|
|
3961
|
+
with bookings must be [[scheduling|scheduled]] in ''''asap'''' mode. If the
|
|
3962
|
+
scenario is not the [[trackingscenario|tracking scenario]] or derived from it,
|
|
3963
|
+
the scheduler will not allocate resources prior to the current date or the
|
|
3964
|
+
date specified with [[now]] when a task has at least one booking.
|
|
3845
3965
|
|
|
3846
3966
|
Bookings are only valid in the scenario they have been defined in. They will
|
|
3847
|
-
not be passed to any other scenario.
|
|
3967
|
+
in general not be passed to any other scenario. If you have defined a
|
|
3968
|
+
[[trackingscenario|tracking scenario]], the bookings of this scenario will be
|
|
3969
|
+
passed to all the derived scenarios of the tracking scenario.
|
|
3848
3970
|
|
|
3849
3971
|
The sloppy attribute can be used when you want to skip non-working time or
|
|
3850
3972
|
other allocations automatically. If it's not given, all bookings must only
|
|
@@ -3941,6 +4063,29 @@ EOT
|
|
|
3941
4063
|
# Other attributes will be added automatically.
|
|
3942
4064
|
end
|
|
3943
4065
|
|
|
4066
|
+
def rule_rollupresource
|
|
4067
|
+
pattern(%w( _rollupresource !logicalExpression ), lambda {
|
|
4068
|
+
@property.set('rollupResource', @val[1])
|
|
4069
|
+
})
|
|
4070
|
+
doc('rollupresource', <<'EOT'
|
|
4071
|
+
Do not show sub-resources of resources that match the specified logical
|
|
4072
|
+
expression.
|
|
4073
|
+
EOT
|
|
4074
|
+
)
|
|
4075
|
+
example('RollupResource')
|
|
4076
|
+
end
|
|
4077
|
+
|
|
4078
|
+
def rule_rolluptask
|
|
4079
|
+
pattern(%w( _rolluptask !logicalExpression ), lambda {
|
|
4080
|
+
@property.set('rollupTask', @val[1])
|
|
4081
|
+
})
|
|
4082
|
+
doc('rolluptask', <<'EOT'
|
|
4083
|
+
Do not show sub-tasks of tasks that match the specified logical expression.
|
|
4084
|
+
EOT
|
|
4085
|
+
)
|
|
4086
|
+
end
|
|
4087
|
+
|
|
4088
|
+
|
|
3944
4089
|
def rule_scenario
|
|
3945
4090
|
pattern(%w( !scenarioHeader !scenarioBody ), lambda {
|
|
3946
4091
|
@property = @property.parent
|
|
@@ -3971,53 +4116,47 @@ EOT
|
|
|
3971
4116
|
optional
|
|
3972
4117
|
repeatable
|
|
3973
4118
|
|
|
4119
|
+
pattern(%w( _active !yesNo), lambda {
|
|
4120
|
+
@property.set('active', @val[1])
|
|
4121
|
+
})
|
|
4122
|
+
doc('active', <<'EOT'
|
|
4123
|
+
Enable the scenario to be scheduled or not. By default, all scenarios will be
|
|
4124
|
+
scheduled. If a scenario is marked as inactive, it not be scheduled and will
|
|
4125
|
+
be ignored in the reports.
|
|
4126
|
+
EOT
|
|
4127
|
+
)
|
|
3974
4128
|
pattern(%w( _disabled ), lambda {
|
|
3975
|
-
@property.set('
|
|
4129
|
+
@property.set('active', false)
|
|
3976
4130
|
})
|
|
3977
4131
|
doc('disabled', <<'EOT'
|
|
4132
|
+
This attribute is deprecated. Please use [active] instead.
|
|
4133
|
+
|
|
3978
4134
|
Disable the scenario for scheduling. The default for the top-level
|
|
3979
4135
|
scenario is to be enabled.
|
|
3980
4136
|
EOT
|
|
3981
4137
|
)
|
|
3982
4138
|
example('Scenario')
|
|
3983
4139
|
pattern(%w( _enabled ), lambda {
|
|
3984
|
-
@property.set('
|
|
4140
|
+
@property.set('active', true)
|
|
3985
4141
|
})
|
|
3986
4142
|
doc('enabled', <<'EOT'
|
|
4143
|
+
This attribute is deprecated. Please use [active] instead.
|
|
4144
|
+
|
|
3987
4145
|
Enable the scenario for scheduling. This is the default for the top-level
|
|
3988
4146
|
scenario.
|
|
3989
|
-
EOT
|
|
3990
|
-
)
|
|
3991
|
-
|
|
3992
|
-
pattern(%w( _minslackrate !number ), lambda {
|
|
3993
|
-
@property.set('minslackrate', @val[1] / 100.0)
|
|
3994
|
-
})
|
|
3995
|
-
doc('minslackrate', <<'EOT'
|
|
3996
|
-
Specifies the minimum percentage of slack a task path must have before it is
|
|
3997
|
-
marked as critical. A path is any list of explicitely or implicitely connected
|
|
3998
|
-
tasks measured from first task to last task. The slack is the time between
|
|
3999
|
-
start of the first task and end of the last task that is not covered by any
|
|
4000
|
-
task of the path.
|
|
4001
|
-
|
|
4002
|
-
Larger values in combination with a project that uses lots of inherited
|
|
4003
|
-
dependencies and long dependency pathes can result in very long scheduling
|
|
4004
|
-
times. The more slack you require, the more pathes have to be searched till
|
|
4005
|
-
the end. For larger projects an increase of 5% can turn a 10 second scheduling
|
|
4006
|
-
run into a 1 hour or more scheduling run. If you need larger slack rate
|
|
4007
|
-
values, avoid the use of inherited dependencies.
|
|
4008
|
-
|
|
4009
|
-
The default value is 0% which turns off the critical path detector.
|
|
4010
4147
|
EOT
|
|
4011
4148
|
)
|
|
4012
4149
|
|
|
4013
4150
|
pattern(%w( _projection !projection ), lambda {
|
|
4014
|
-
|
|
4151
|
+
warning('projection',
|
|
4152
|
+
'The \'projection\' keyword has been deprecated. Please use ' +
|
|
4153
|
+
'[[trackingscenario]] feature instead.')
|
|
4015
4154
|
})
|
|
4016
4155
|
doc('projection', <<'EOT'
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4156
|
+
This keyword has been deprecated! Don't use it anymore!
|
|
4157
|
+
|
|
4158
|
+
Projection mode is now automatically enabled as soon as a scenario has
|
|
4159
|
+
bookings.
|
|
4021
4160
|
EOT
|
|
4022
4161
|
)
|
|
4023
4162
|
|
|
@@ -4259,9 +4398,9 @@ EOT
|
|
|
4259
4398
|
"Sorting criterium expected (e.g. tree, start.up or " +
|
|
4260
4399
|
"plan.end.down).", @sourceFileInfo[0])
|
|
4261
4400
|
end
|
|
4262
|
-
if attribute == '
|
|
4263
|
-
error('
|
|
4264
|
-
"Sorting by
|
|
4401
|
+
if attribute == 'bsi'
|
|
4402
|
+
error('sorting_bsi',
|
|
4403
|
+
"Sorting by bsi is not supported. Please use 'tree' " +
|
|
4265
4404
|
'(without appended .up or .down) instead.',
|
|
4266
4405
|
@sourceFileInfo[0])
|
|
4267
4406
|
end
|
|
@@ -4367,6 +4506,20 @@ EOT
|
|
|
4367
4506
|
|
|
4368
4507
|
pattern(%w( !author ))
|
|
4369
4508
|
pattern(%w( !details ))
|
|
4509
|
+
|
|
4510
|
+
pattern(%w( _flags !flagList ), lambda {
|
|
4511
|
+
@val[1].each do |flag|
|
|
4512
|
+
next if @journalEntry.flags.include?(flag)
|
|
4513
|
+
|
|
4514
|
+
@journalEntry.flags << flag
|
|
4515
|
+
end
|
|
4516
|
+
})
|
|
4517
|
+
doc('flags.statussheet', <<'EOT'
|
|
4518
|
+
Status sheet entries can have flags attached to them. These can be used to
|
|
4519
|
+
include only entries in a report that have a certain flag.
|
|
4520
|
+
EOT
|
|
4521
|
+
)
|
|
4522
|
+
|
|
4370
4523
|
pattern(%w( !summary ))
|
|
4371
4524
|
end
|
|
4372
4525
|
|
|
@@ -4430,6 +4583,10 @@ EOT
|
|
|
4430
4583
|
|
|
4431
4584
|
def rule_statusSheetHeader
|
|
4432
4585
|
pattern(%w( _statussheet !resourceId !valIntervalOrDate ), lambda {
|
|
4586
|
+
unless (scenarioIdx = @project['trackingScenarioIdx'])
|
|
4587
|
+
error('ss_no_tracking_scenario',
|
|
4588
|
+
'No trackingscenario defined.')
|
|
4589
|
+
end
|
|
4433
4590
|
@sheetAuthor = @val[1]
|
|
4434
4591
|
@sheetStart = @val[2].start
|
|
4435
4592
|
@sheetEnd = @val[2].end
|
|
@@ -4451,7 +4608,8 @@ A status sheet report is a template for a status sheet. It collects all the
|
|
|
4451
4608
|
status information of the top-level task that a resource is responsible for.
|
|
4452
4609
|
This report is typically used by managers or team leads to review the time
|
|
4453
4610
|
sheet status information and destill it down to a summary that can be
|
|
4454
|
-
forwarded to the next person in the reporting chain.
|
|
4611
|
+
forwarded to the next person in the reporting chain. The report will be for
|
|
4612
|
+
the specified [trackingscenario].
|
|
4455
4613
|
EOT
|
|
4456
4614
|
)
|
|
4457
4615
|
end
|
|
@@ -4658,6 +4816,12 @@ EOT
|
|
|
4658
4816
|
|
|
4659
4817
|
def rule_taskBooking
|
|
4660
4818
|
pattern(%w( !taskBookingHeader !bookingBody ), lambda {
|
|
4819
|
+
unless @project.scenario(@scenarioIdx).get('ownbookings')
|
|
4820
|
+
error('no_own_task_booking',
|
|
4821
|
+
"The scenario #{@project.scenario(@scenarioIdx).fullId} " +
|
|
4822
|
+
'inherits its bookings from the tracking ' +
|
|
4823
|
+
'scenario. You cannot specificy additional bookings for it.')
|
|
4824
|
+
end
|
|
4661
4825
|
@val[0].task.addBooking(@scenarioIdx, @val[0])
|
|
4662
4826
|
})
|
|
4663
4827
|
end
|
|
@@ -4863,14 +5027,16 @@ EOT
|
|
|
4863
5027
|
|
|
4864
5028
|
pattern(%w( _booking !taskBooking ))
|
|
4865
5029
|
doc('booking.task', <<'EOT'
|
|
4866
|
-
The booking attribute can be used to report completed work.
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
|
|
5030
|
+
The booking attribute can be used to report actually completed work. A task
|
|
5031
|
+
with bookings must be [[scheduling|scheduled]] in ''''asap'''' mode. If the
|
|
5032
|
+
scenario is not the [[trackingscenario|tracking scenario]] or derived from it,
|
|
5033
|
+
the scheduler will not allocate resources prior to the current date or the
|
|
5034
|
+
date specified with [[now]] when a task has at least one booking.
|
|
4871
5035
|
|
|
4872
5036
|
Bookings are only valid in the scenario they have been defined in. They will
|
|
4873
|
-
not be passed to any other scenario.
|
|
5037
|
+
in general not be passed to any other scenario. If you have defined a
|
|
5038
|
+
[[trackingscenario|tracking scenario]], the bookings of this scenario will be
|
|
5039
|
+
passed to all the derived scenarios of the tracking scenario.
|
|
4874
5040
|
|
|
4875
5041
|
The sloppy attribute can be used when you want to skip non-working time or
|
|
4876
5042
|
other allocations automatically. If it's not given, all bookings must only
|
|
@@ -5147,8 +5313,7 @@ EOT
|
|
|
5147
5313
|
)
|
|
5148
5314
|
|
|
5149
5315
|
pattern(%w( _startcredit !number ), lambda {
|
|
5150
|
-
@property['charge', @scenarioIdx]
|
|
5151
|
-
@property['charge', @scenarioIdx] +
|
|
5316
|
+
@property['charge', @scenarioIdx] +=
|
|
5152
5317
|
[ Charge.new(@val[1], :onStart, @property, @scenarioIdx) ]
|
|
5153
5318
|
})
|
|
5154
5319
|
doc('startcredit', <<'EOT'
|
|
@@ -5162,8 +5327,7 @@ EOT
|
|
|
5162
5327
|
pattern(%w( _precedes !taskPredList ), lambda {
|
|
5163
5328
|
checkContainer('precedes')
|
|
5164
5329
|
begin
|
|
5165
|
-
@property['precedes', @scenarioIdx]
|
|
5166
|
-
@property['precedes', @scenarioIdx] + @val[1]
|
|
5330
|
+
@property['precedes', @scenarioIdx] += @val[1]
|
|
5167
5331
|
@property['forward', @scenarioIdx] = false
|
|
5168
5332
|
rescue AttributeOverwrite
|
|
5169
5333
|
end
|
|
@@ -5206,6 +5370,7 @@ of the subtask.
|
|
|
5206
5370
|
EOT
|
|
5207
5371
|
)
|
|
5208
5372
|
arg(1, 'value', 'Priority value (1 - 1000)')
|
|
5373
|
+
example('Priority')
|
|
5209
5374
|
|
|
5210
5375
|
pattern(%w( _projectid $ID ), lambda {
|
|
5211
5376
|
unless @project['projectids'].include?(@val[1])
|
|
@@ -5226,8 +5391,8 @@ EOT
|
|
|
5226
5391
|
)
|
|
5227
5392
|
|
|
5228
5393
|
pattern(%w( _responsible !resourceList ), lambda {
|
|
5229
|
-
@property['responsible', @scenarioIdx]
|
|
5230
|
-
|
|
5394
|
+
@property['responsible', @scenarioIdx] += @val[1]
|
|
5395
|
+
@property['responsible', @scenarioIdx].uniq!
|
|
5231
5396
|
})
|
|
5232
5397
|
doc('responsible', <<'EOT'
|
|
5233
5398
|
The ID of the resource that is responsible for this task. This value is for
|
|
@@ -5610,9 +5775,12 @@ EOT
|
|
|
5610
5775
|
'A resource group cannot file a time sheet',
|
|
5611
5776
|
@sourceFileInfo[1])
|
|
5612
5777
|
end
|
|
5778
|
+
unless (scenarioIdx = @project['trackingScenarioIdx'])
|
|
5779
|
+
error('ts_no_tracking_scenario',
|
|
5780
|
+
'No trackingscenario defined.')
|
|
5781
|
+
end
|
|
5613
5782
|
# Currently time sheets are hardcoded for scenario 0.
|
|
5614
|
-
@timeSheet = TimeSheet.new(@sheetAuthor, @val[2],
|
|
5615
|
-
@project['trackingScenarioIdx'])
|
|
5783
|
+
@timeSheet = TimeSheet.new(@sheetAuthor, @val[2], scenarioIdx)
|
|
5616
5784
|
@timeSheet.sourceFileInfo = @sourceFileInfo[0]
|
|
5617
5785
|
@project.timeSheets << @timeSheet
|
|
5618
5786
|
})
|
|
@@ -5627,7 +5795,7 @@ For projects that flow mostly according to plan, TaskJuggler already knows
|
|
|
5627
5795
|
much of the information that should be contained in the time sheets. With this
|
|
5628
5796
|
property, you can generate a report that contains drafts of the time sheets
|
|
5629
5797
|
for one or more resources. The time sheet drafts will be for the
|
|
5630
|
-
specified report period.
|
|
5798
|
+
specified report period and the specified [trackingscenario].
|
|
5631
5799
|
EOT
|
|
5632
5800
|
)
|
|
5633
5801
|
end
|
|
@@ -5710,6 +5878,20 @@ EOT
|
|
|
5710
5878
|
repeatable
|
|
5711
5879
|
|
|
5712
5880
|
pattern(%w( !details ))
|
|
5881
|
+
|
|
5882
|
+
pattern(%w( _flags !flagList ), lambda {
|
|
5883
|
+
@val[1].each do |flag|
|
|
5884
|
+
next if @journalEntry.flags.include?(flag)
|
|
5885
|
+
|
|
5886
|
+
@journalEntry.flags << flag
|
|
5887
|
+
end
|
|
5888
|
+
})
|
|
5889
|
+
doc('flags.timesheet', <<'EOT'
|
|
5890
|
+
Time sheet entries can have flags attached to them. These can be used to
|
|
5891
|
+
include only entries in a report that have a certain flag.
|
|
5892
|
+
EOT
|
|
5893
|
+
)
|
|
5894
|
+
|
|
5713
5895
|
pattern(%w( !summary ))
|
|
5714
5896
|
end
|
|
5715
5897
|
|
|
@@ -5958,8 +6140,7 @@ EOT
|
|
|
5958
6140
|
def rule_warn
|
|
5959
6141
|
pattern(%w( _warn !logicalExpression ), lambda {
|
|
5960
6142
|
begin
|
|
5961
|
-
@property
|
|
5962
|
-
@property['warn', @scenarioIdx] + [ @val[1] ]
|
|
6143
|
+
@property.set('warn', @property.get('warn') + [ @val[1] ])
|
|
5963
6144
|
rescue AttributeOverwrite
|
|
5964
6145
|
end
|
|
5965
6146
|
})
|