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
|
@@ -40,8 +40,8 @@ class TaskJuggler
|
|
|
40
40
|
def eval(query)
|
|
41
41
|
@query = query
|
|
42
42
|
res = @operation.eval(self)
|
|
43
|
-
return res if res.
|
|
44
|
-
res.
|
|
43
|
+
return res if res.is_a?(TrueClass) || res.is_a?(FalseClass) ||
|
|
44
|
+
res.is_a?(String)
|
|
45
45
|
# In TJP syntax 'non 0' means false.
|
|
46
46
|
return res != 0
|
|
47
47
|
end
|
|
@@ -26,10 +26,12 @@ class TaskJuggler
|
|
|
26
26
|
@@functions = {
|
|
27
27
|
'hasalert' => 1,
|
|
28
28
|
'isactive' => 1,
|
|
29
|
+
'ischildof' => 1,
|
|
29
30
|
'isdependencyof' => 3,
|
|
30
31
|
'isdutyof' => 2,
|
|
31
32
|
'isfeatureof' => 2,
|
|
32
33
|
'isleaf' => 0,
|
|
34
|
+
'ismilestone' => 1,
|
|
33
35
|
'isongoing' => 1,
|
|
34
36
|
'isresource' => 0,
|
|
35
37
|
'istask' => 0,
|
|
@@ -96,7 +98,8 @@ class TaskJuggler
|
|
|
96
98
|
query = expr.query
|
|
97
99
|
project = property.project
|
|
98
100
|
!project['journal'].currentEntries(query.end, property,
|
|
99
|
-
args[0], query.start
|
|
101
|
+
args[0], query.start,
|
|
102
|
+
query.hideJournalEntry).empty?
|
|
100
103
|
end
|
|
101
104
|
|
|
102
105
|
def isactive(expr, args)
|
|
@@ -115,6 +118,15 @@ class TaskJuggler
|
|
|
115
118
|
scopeProperty) > 0.0
|
|
116
119
|
end
|
|
117
120
|
|
|
121
|
+
def ischildof(expr, args)
|
|
122
|
+
# The the context property.
|
|
123
|
+
property = properties(expr)[0]
|
|
124
|
+
# Find the prospective parent ID in the current PropertySet.
|
|
125
|
+
return false unless (parent = property.propertySet[args[0]])
|
|
126
|
+
|
|
127
|
+
property.isChildOf?(parent)
|
|
128
|
+
end
|
|
129
|
+
|
|
118
130
|
def isdependencyof(expr, args)
|
|
119
131
|
property = properties(expr)[0]
|
|
120
132
|
# The result can only be true when called for a Task property.
|
|
@@ -162,6 +174,15 @@ class TaskJuggler
|
|
|
162
174
|
property.leaf?
|
|
163
175
|
end
|
|
164
176
|
|
|
177
|
+
def ismilestone(expr, args)
|
|
178
|
+
property = properties(expr)[0]
|
|
179
|
+
return false unless property
|
|
180
|
+
# 1st arg must be a scenario index.
|
|
181
|
+
return false if (scenarioIdx = property.project.scenarioIdx(args[0])).nil?
|
|
182
|
+
|
|
183
|
+
property.is_a?(Task) && property['milestone', scenarioIdx]
|
|
184
|
+
end
|
|
185
|
+
|
|
165
186
|
def isongoing(expr, args)
|
|
166
187
|
property = properties(expr)[0]
|
|
167
188
|
# The result can only be true when called for a Task property.
|
|
@@ -182,7 +182,7 @@ class TaskJuggler
|
|
|
182
182
|
class LogicalAttribute < LogicalOperation
|
|
183
183
|
|
|
184
184
|
def initialize(attribute, scenario)
|
|
185
|
-
@
|
|
185
|
+
@scenario = scenario
|
|
186
186
|
super
|
|
187
187
|
end
|
|
188
188
|
|
|
@@ -190,7 +190,7 @@ class TaskJuggler
|
|
|
190
190
|
# the value.
|
|
191
191
|
def eval(expr)
|
|
192
192
|
query = expr.query
|
|
193
|
-
query.scenarioIdx = @
|
|
193
|
+
query.scenarioIdx = @scenario.sequenceNo - 1
|
|
194
194
|
query.attributeId = @operand1
|
|
195
195
|
query.process
|
|
196
196
|
# The logical expressions are mostly about comparing values. So we use
|
|
@@ -208,7 +208,7 @@ class TaskJuggler
|
|
|
208
208
|
query.process
|
|
209
209
|
query.to_s
|
|
210
210
|
else
|
|
211
|
-
"#{@
|
|
211
|
+
"#{@scenario.fullId}.#{@operand1}"
|
|
212
212
|
end
|
|
213
213
|
end
|
|
214
214
|
|
|
@@ -224,12 +224,22 @@ class TaskJuggler
|
|
|
224
224
|
|
|
225
225
|
# Return true if the property has the flag assigned.
|
|
226
226
|
def eval(expr)
|
|
227
|
-
expr.query.
|
|
227
|
+
if expr.query.is_a?(Query)
|
|
228
|
+
# This is used for Project or PTN related Queries
|
|
229
|
+
expr.query.property['flags', 0].include?(@operand1)
|
|
230
|
+
else
|
|
231
|
+
# This is used for Journal objects.
|
|
232
|
+
expr.query.flags.include?(@operand1)
|
|
233
|
+
end
|
|
228
234
|
end
|
|
229
235
|
|
|
230
236
|
def to_s(query)
|
|
231
237
|
if query
|
|
232
|
-
query.
|
|
238
|
+
if query.is_a?(Query)
|
|
239
|
+
query.property['flags', 0].include(@operand1) ? 'true' : 'false'
|
|
240
|
+
else
|
|
241
|
+
query.flags.include(@operand1) ? 'true' : 'false'
|
|
242
|
+
end
|
|
233
243
|
else
|
|
234
244
|
@operand1
|
|
235
245
|
end
|
data/lib/taskjuggler/Project.rb
CHANGED
|
@@ -95,7 +95,7 @@ class TaskJuggler
|
|
|
95
95
|
'start' => nil,
|
|
96
96
|
'timeFormat' => "%Y-%m-%d",
|
|
97
97
|
'timezone' => TjTime.timeZone,
|
|
98
|
-
'trackingScenarioIdx' =>
|
|
98
|
+
'trackingScenarioIdx' => nil,
|
|
99
99
|
'vacations' => [],
|
|
100
100
|
'version' => version || "1.0",
|
|
101
101
|
'weekStartsMonday' => true,
|
|
@@ -115,14 +115,12 @@ class TaskJuggler
|
|
|
115
115
|
attrs = [
|
|
116
116
|
# ID Name Type
|
|
117
117
|
# Inh. Inh.Prj Scen. Default
|
|
118
|
-
[ '
|
|
118
|
+
[ 'active', 'Enabled', BooleanAttribute,
|
|
119
119
|
true, false, false, true ],
|
|
120
|
-
[ '
|
|
121
|
-
|
|
120
|
+
[ 'ownbookings', 'Own Bookings', BooleanAttribute,
|
|
121
|
+
false, false, false, true ],
|
|
122
122
|
[ 'projection', 'Projection Mode', BooleanAttribute,
|
|
123
123
|
true, false, false, false ],
|
|
124
|
-
[ 'strict', 'Strict Bookings', BooleanAttribute,
|
|
125
|
-
true, false, false, false ]
|
|
126
124
|
]
|
|
127
125
|
attrs.each { |a| @scenarios.addAttributeType(AttributeDefinition.new(*a)) }
|
|
128
126
|
|
|
@@ -140,7 +138,7 @@ class TaskJuggler
|
|
|
140
138
|
false, false, false, "" ],
|
|
141
139
|
[ 'vacations', 'Vacations', IntervalListAttribute,
|
|
142
140
|
true, true, true, [] ],
|
|
143
|
-
[ '
|
|
141
|
+
[ 'bsi', 'BSI', StringAttribute,
|
|
144
142
|
false, false, false, "" ],
|
|
145
143
|
[ 'workinghours', 'Working Hours', WorkingHoursAttribute,
|
|
146
144
|
true, true, true, nil ]
|
|
@@ -157,7 +155,7 @@ class TaskJuggler
|
|
|
157
155
|
true, false, true, [] ],
|
|
158
156
|
[ 'tree', 'Tree Index', StringAttribute,
|
|
159
157
|
false, false, false, "" ],
|
|
160
|
-
[ '
|
|
158
|
+
[ 'bsi', 'BSI', StringAttribute,
|
|
161
159
|
false, false, false, "" ]
|
|
162
160
|
]
|
|
163
161
|
attrs.each { |a| @accounts.addAttributeType(AttributeDefinition.new(*a)) }
|
|
@@ -206,7 +204,7 @@ class TaskJuggler
|
|
|
206
204
|
true, true, true, [] ],
|
|
207
205
|
[ 'warn', 'Warning Condition', LogicalExpressionListAttribute,
|
|
208
206
|
false, false, false, [] ],
|
|
209
|
-
[ '
|
|
207
|
+
[ 'bsi', 'BSI', StringAttribute,
|
|
210
208
|
false, false, false, "" ],
|
|
211
209
|
[ 'workinghours', 'Working Hours', WorkingHoursAttribute,
|
|
212
210
|
true, true, true, nil ]
|
|
@@ -239,9 +237,9 @@ class TaskJuggler
|
|
|
239
237
|
false, false, true, 0 ],
|
|
240
238
|
[ 'end', 'End', DateAttribute,
|
|
241
239
|
false, false, true, nil ],
|
|
242
|
-
[ 'endpreds', 'End Preds.',
|
|
240
|
+
[ 'endpreds', 'End Preds.', TaskDepListAttribute,
|
|
243
241
|
false, false, true, [] ],
|
|
244
|
-
[ 'endsuccs', 'End Succs.',
|
|
242
|
+
[ 'endsuccs', 'End Succs.', TaskDepListAttribute,
|
|
245
243
|
false, false, true, [] ],
|
|
246
244
|
[ 'fail', 'Failure Conditions', LogicalExpressionListAttribute,
|
|
247
245
|
false, false, false, [] ],
|
|
@@ -283,9 +281,9 @@ class TaskJuggler
|
|
|
283
281
|
true, false, true, nil ],
|
|
284
282
|
[ 'start', 'Start', DateAttribute,
|
|
285
283
|
false, false, true, nil ],
|
|
286
|
-
[ 'startpreds', 'Start Preds.',
|
|
284
|
+
[ 'startpreds', 'Start Preds.', TaskDepListAttribute,
|
|
287
285
|
false, false, true, [] ],
|
|
288
|
-
[ 'startsuccs', 'Start Succs.',
|
|
286
|
+
[ 'startsuccs', 'Start Succs.', TaskDepListAttribute,
|
|
289
287
|
false, false, true, [] ],
|
|
290
288
|
[ 'status', 'Task Status', StringAttribute,
|
|
291
289
|
false, false, true, "" ],
|
|
@@ -293,7 +291,7 @@ class TaskJuggler
|
|
|
293
291
|
false, false, false, "" ],
|
|
294
292
|
[ 'warn', 'Warning Condition', LogicalExpressionListAttribute,
|
|
295
293
|
false, false, false, [] ],
|
|
296
|
-
[ '
|
|
294
|
+
[ 'bsi', 'BSI', StringAttribute,
|
|
297
295
|
false, false, false, "" ]
|
|
298
296
|
]
|
|
299
297
|
attrs.each { |a| @tasks.addAttributeType(AttributeDefinition.new(*a)) }
|
|
@@ -330,6 +328,8 @@ class TaskJuggler
|
|
|
330
328
|
true, false, false, nil ],
|
|
331
329
|
[ 'headline', 'Headline', RichTextAttribute,
|
|
332
330
|
true, false, false, nil ],
|
|
331
|
+
[ 'hideJournalEntry', 'Hide JournalEntry', LogicalExpressionAttribute,
|
|
332
|
+
true, false, false, nil ],
|
|
333
333
|
[ 'hideResource', 'Hide Resource', LogicalExpressionAttribute,
|
|
334
334
|
true, false, false, nil ],
|
|
335
335
|
[ 'hideTask', 'Hide Task', LogicalExpressionAttribute,
|
|
@@ -390,7 +390,7 @@ class TaskJuggler
|
|
|
390
390
|
true, false, false, nil ],
|
|
391
391
|
[ 'tree', 'Tree Index', StringAttribute,
|
|
392
392
|
false, false, false, "" ],
|
|
393
|
-
[ '
|
|
393
|
+
[ 'bsi', 'BSI', StringAttribute,
|
|
394
394
|
false, false, false, "" ],
|
|
395
395
|
[ 'weekStartsMonday', 'Week Starts Monday', BooleanAttribute,
|
|
396
396
|
true, true, false, false ]
|
|
@@ -606,7 +606,7 @@ class TaskJuggler
|
|
|
606
606
|
|
|
607
607
|
@scenarios.each do |sc|
|
|
608
608
|
# Skip disabled scenarios
|
|
609
|
-
next unless sc.get('
|
|
609
|
+
next unless sc.get('active')
|
|
610
610
|
|
|
611
611
|
scIdx = scenarioIdx(sc)
|
|
612
612
|
|
|
@@ -914,6 +914,63 @@ class TaskJuggler
|
|
|
914
914
|
name
|
|
915
915
|
end
|
|
916
916
|
|
|
917
|
+
def journal(query)
|
|
918
|
+
entries = JournalEntryList.new
|
|
919
|
+
@tasks.each do |task|
|
|
920
|
+
# We only care about top-level tasks.
|
|
921
|
+
next if task.parent
|
|
922
|
+
|
|
923
|
+
entries += (e = @attributes['journal'].
|
|
924
|
+
currentEntriesR(query.end, task, 0, query.start,
|
|
925
|
+
query.hideJournalEntry))
|
|
926
|
+
end
|
|
927
|
+
|
|
928
|
+
# Eliminate duplicates due to entries from adopted tasks
|
|
929
|
+
entries.uniq!
|
|
930
|
+
|
|
931
|
+
journalMessages(entries, query, true)
|
|
932
|
+
end
|
|
933
|
+
|
|
934
|
+
# Create a blog-style list of all alert messages that match the Query.
|
|
935
|
+
def journalMessages(entries, query, longVersion)
|
|
936
|
+
# The components of the message are either UTF-8 text or RichText. For
|
|
937
|
+
# the RichText components, we use the originally provided markup since
|
|
938
|
+
# we compose the result as RichText markup first.
|
|
939
|
+
rText = ''
|
|
940
|
+
entries.each do |entry|
|
|
941
|
+
rText += "==== <nowiki>" + entry.headline + "</nowiki> ====\n"
|
|
942
|
+
#rText += "''Reported on #{entry.date.to_s(query.timeFormat)}'' "
|
|
943
|
+
#if entry.author
|
|
944
|
+
# rText += "''by <nowiki>#{entry.author.name}</nowiki>''"
|
|
945
|
+
#end
|
|
946
|
+
#rText += "\n\n"
|
|
947
|
+
#unless entry.flags.empty?
|
|
948
|
+
# rText += "''Flags:'' #{entry.flags.join(', ')}\n\n"
|
|
949
|
+
#end
|
|
950
|
+
if entry.summary
|
|
951
|
+
rText += entry.summary.richText.inputText + "\n\n"
|
|
952
|
+
end
|
|
953
|
+
if longVersion && entry.details
|
|
954
|
+
rText += entry.details.richText.inputText + "\n\n"
|
|
955
|
+
end
|
|
956
|
+
end
|
|
957
|
+
# Now convert the RichText markup String into RichTextIntermediate
|
|
958
|
+
# format.
|
|
959
|
+
unless (rti = RichText.new(rText, RTFHandlers.create(self),
|
|
960
|
+
@messageHandler).
|
|
961
|
+
generateIntermediateFormat)
|
|
962
|
+
@messageHandler.warning('ptn_journal',
|
|
963
|
+
"Syntax error in journal message")
|
|
964
|
+
return nil
|
|
965
|
+
end
|
|
966
|
+
# No section numbers, please!
|
|
967
|
+
rti.sectionNumbers = false
|
|
968
|
+
# We use a special class to allow CSS formating.
|
|
969
|
+
rti.cssClass = 'tj_journal'
|
|
970
|
+
query.rti = rti
|
|
971
|
+
end
|
|
972
|
+
|
|
973
|
+
|
|
917
974
|
# Print the attribute values. It's used for debugging only.
|
|
918
975
|
def to_s
|
|
919
976
|
#raise "STOP!"
|
|
@@ -273,7 +273,7 @@ class TaskJuggler
|
|
|
273
273
|
if attribute == attr
|
|
274
274
|
@property[attr, @scenarioIdx] = value
|
|
275
275
|
else
|
|
276
|
-
if @property.
|
|
276
|
+
if @property.getAttribute(attr, @scenarioIdx).provided
|
|
277
277
|
error('multiple_durations',
|
|
278
278
|
"This duration criteria is overwriting a previously " +
|
|
279
279
|
"provided criteria (duration, effort, length or milestone).")
|
|
@@ -71,6 +71,10 @@ class TaskJuggler
|
|
|
71
71
|
# neither the start nor the end of the macro.
|
|
72
72
|
[ nil, /.*\n/, :macroCall, method('midMacroCall') ],
|
|
73
73
|
|
|
74
|
+
# Environment variable reference. This is similar to the macro call,
|
|
75
|
+
# but the it can only extend within the starting line.
|
|
76
|
+
[ nil, /([-a-zA-Z_0-9>:.+]*|"(\\"|[^"])*?|'(\\'|[^'])*?)?\$\([A-Z_][A-Z_0-9]*\)/,
|
|
77
|
+
:tjp, method('environmentVariable') ],
|
|
74
78
|
# An ID with a colon suffix: foo:
|
|
75
79
|
[ :ID_WITH_COLON, /[a-zA-Z_]\w*:/, :tjp, method('chop') ],
|
|
76
80
|
|
|
@@ -291,6 +295,29 @@ class TaskJuggler
|
|
|
291
295
|
[ :STRING, @string ]
|
|
292
296
|
end
|
|
293
297
|
|
|
298
|
+
def environmentVariable(type, match)
|
|
299
|
+
# Store any characters that precede the $( in prefix and remove it from
|
|
300
|
+
# @macroCall.
|
|
301
|
+
if (start = match.index('$(')) > 0
|
|
302
|
+
prefix = match[0..(start - 1)]
|
|
303
|
+
envRef = match[start..-1]
|
|
304
|
+
else
|
|
305
|
+
prefix = ''
|
|
306
|
+
envRef = match
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
# Remove '$(' and ')'
|
|
310
|
+
varName = envRef[2..-2]
|
|
311
|
+
|
|
312
|
+
if (value = ENV[varName])
|
|
313
|
+
@cf.injectText(prefix + value)
|
|
314
|
+
else
|
|
315
|
+
error('unknown_env_var', "Unknown environment variable '#{varName}'")
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
[ nil, '' ]
|
|
319
|
+
end
|
|
320
|
+
|
|
294
321
|
def startMacroDef(type, match)
|
|
295
322
|
self.mode = :macroDef
|
|
296
323
|
# Remove the opening '['
|
|
@@ -38,29 +38,21 @@ class TaskJuggler
|
|
|
38
38
|
@flatNamespace = flatNamespace
|
|
39
39
|
# The main Project data structure reference.
|
|
40
40
|
@project = project
|
|
41
|
-
# This is the blueprint for PropertyTreeNode attribute sets. Whever a new
|
|
42
|
-
# PropertTreeNode is created, an attribute is created for each definition
|
|
43
|
-
# in this list.
|
|
44
|
-
@attributeDefinitions = Hash.new
|
|
45
41
|
# A list of all PropertyTreeNodes in this set.
|
|
46
42
|
@properties = Array.new
|
|
47
43
|
# A hash of all PropertyTreeNodes in this set, hashed by their ID. This is
|
|
48
44
|
# the same data as in @properties, but hashed by ID for faster access.
|
|
49
45
|
@propertyMap = Hash.new
|
|
50
46
|
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
'
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
'id' => :String,
|
|
61
|
-
'name' => :String,
|
|
62
|
-
'seqno' => :Fixnum
|
|
63
|
-
}
|
|
47
|
+
# This is the blueprint for PropertyTreeNode attribute sets. Whever a new
|
|
48
|
+
# PropertTreeNode is created, an attribute is created for each definition
|
|
49
|
+
# in this list.
|
|
50
|
+
@attributeDefinitions = Hash.new
|
|
51
|
+
[
|
|
52
|
+
[ 'id', 'ID', StringAttribute, false, false, false, '' ],
|
|
53
|
+
[ 'name', 'Name', StringAttribute, false, false, false, '' ],
|
|
54
|
+
[ 'seqno', 'Seq. No', FixnumAttribute, false, false, false, 0 ]
|
|
55
|
+
].each { |a| addAttributeType(AttributeDefinition.new(*a)) }
|
|
64
56
|
end
|
|
65
57
|
|
|
66
58
|
# Use the function to declare the various attributes that properties of this
|
|
@@ -84,7 +76,6 @@ class TaskJuggler
|
|
|
84
76
|
|
|
85
77
|
# Return true if there is an AttributeDefinition for _attrId_.
|
|
86
78
|
def knownAttribute?(attrId)
|
|
87
|
-
@@fixedAttributeNames.include?(attrId) ||
|
|
88
79
|
@attributeDefinitions.include?(attrId)
|
|
89
80
|
end
|
|
90
81
|
|
|
@@ -160,12 +151,8 @@ class TaskJuggler
|
|
|
160
151
|
def attributeName(attrId)
|
|
161
152
|
# Some attributes are hardwired into the properties. These need to be
|
|
162
153
|
# treated separately.
|
|
163
|
-
if
|
|
164
|
-
|
|
165
|
-
return @attributeDefinitions[attrId].name
|
|
166
|
-
end
|
|
167
|
-
else
|
|
168
|
-
return @@fixedAttributeNames[attrId]
|
|
154
|
+
if @attributeDefinitions.include?(attrId)
|
|
155
|
+
return @attributeDefinitions[attrId].name
|
|
169
156
|
end
|
|
170
157
|
|
|
171
158
|
nil
|
|
@@ -174,14 +161,10 @@ class TaskJuggler
|
|
|
174
161
|
# Return the type of the attribute with the Id specified by _attrId_.
|
|
175
162
|
def attributeType(attrId)
|
|
176
163
|
# Hardwired attributes need special treatment.
|
|
177
|
-
if
|
|
178
|
-
|
|
179
|
-
@attributeDefinitions[attrId].objClass
|
|
180
|
-
else
|
|
181
|
-
nil
|
|
182
|
-
end
|
|
164
|
+
if @attributeDefinitions.has_key?(attrId)
|
|
165
|
+
@attributeDefinitions[attrId].objClass
|
|
183
166
|
else
|
|
184
|
-
|
|
167
|
+
nil
|
|
185
168
|
end
|
|
186
169
|
end
|
|
187
170
|
|
|
@@ -189,16 +172,10 @@ class TaskJuggler
|
|
|
189
172
|
# indexed by ID. In case an object with the same ID already exists in the
|
|
190
173
|
# set it will be overwritten.
|
|
191
174
|
#
|
|
192
|
-
# Whenever the set has been extended, the '
|
|
175
|
+
# Whenever the set has been extended, the 'bsi' and 'tree' attributes of the
|
|
193
176
|
# properties are no longer up-to-date. You must call index() before using
|
|
194
177
|
# these attributes.
|
|
195
178
|
def addProperty(property)
|
|
196
|
-
# The PropertySet defines the set of attribute that each PropertyTreeNode
|
|
197
|
-
# in this set has. Create these attributes with their default values.
|
|
198
|
-
@attributeDefinitions.each_value do |attributeType|
|
|
199
|
-
property.declareAttribute(attributeType)
|
|
200
|
-
end
|
|
201
|
-
|
|
202
179
|
# The PropertyTreeNode objects are indexed by ID or hierachical ID
|
|
203
180
|
# depending on the name space setting of this set.
|
|
204
181
|
if @flatNamespace
|
|
@@ -247,22 +224,22 @@ class TaskJuggler
|
|
|
247
224
|
@propertyMap[id]
|
|
248
225
|
end
|
|
249
226
|
|
|
250
|
-
# Update the
|
|
227
|
+
# Update the breakdown structure indicies (bsi). This method needs to
|
|
251
228
|
# be called whenever the set has been modified.
|
|
252
229
|
def index
|
|
253
230
|
each do |p|
|
|
254
|
-
|
|
255
|
-
|
|
231
|
+
bsIdcs = p.getBSIndicies
|
|
232
|
+
bsi = ""
|
|
256
233
|
first = true
|
|
257
|
-
|
|
234
|
+
bsIdcs.each do |idx|
|
|
258
235
|
if first
|
|
259
236
|
first = false
|
|
260
237
|
else
|
|
261
|
-
|
|
238
|
+
bsi += '.'
|
|
262
239
|
end
|
|
263
|
-
|
|
240
|
+
bsi += idx.to_s
|
|
264
241
|
end
|
|
265
|
-
p.set('
|
|
242
|
+
p.set('bsi', bsi)
|
|
266
243
|
end
|
|
267
244
|
end
|
|
268
245
|
|