taskjuggler 0.0.4 → 0.0.5
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/README +1 -1
- data/bin/tj3client +3 -0
- data/bin/tj3d +3 -0
- data/bin/tj3ts_receiver +3 -0
- data/bin/tj3ts_sender +3 -0
- data/bin/tj3ts_summary +3 -0
- data/data/css/tjmanual.css +14 -0
- data/data/css/tjreport.css +233 -21
- data/data/scripts/wz_tooltip.js +20 -20
- data/doc/AppConfig.html +1389 -0
- data/doc/Arguments.html +678 -0
- data/doc/COPYING.html +837 -0
- data/doc/Object.html +996 -0
- data/doc/README.html +523 -0
- data/doc/RuntimeConfig.html +762 -0
- data/doc/String.html +872 -0
- data/doc/TaskJuggler/Account.html +691 -0
- data/doc/TaskJuggler/AccountAttribute.html +707 -0
- data/doc/TaskJuggler/AccountScenario.html +650 -0
- data/doc/TaskJuggler/Allocation.html +898 -0
- data/doc/TaskJuggler/AllocationAttribute.html +737 -0
- data/doc/TaskJuggler/AttributeBase.html +1193 -0
- data/doc/TaskJuggler/AttributeDefinition.html +753 -0
- data/doc/TaskJuggler/BatchProcessor.html +1112 -0
- data/doc/TaskJuggler/Booking.html +797 -0
- data/doc/TaskJuggler/BookingListAttribute.html +709 -0
- data/doc/TaskJuggler/BooleanAttribute.html +707 -0
- data/doc/TaskJuggler/CSVFile.html +924 -0
- data/doc/TaskJuggler/CellSettingPattern.html +638 -0
- data/doc/TaskJuggler/CellSettingPatternList.html +687 -0
- data/doc/TaskJuggler/Charge.html +715 -0
- data/doc/TaskJuggler/ChargeListAttribute.html +671 -0
- data/doc/TaskJuggler/ChargeSet.html +887 -0
- data/doc/TaskJuggler/ChargeSetListAttribute.html +718 -0
- data/doc/TaskJuggler/ColumnListAttribute.html +673 -0
- data/doc/TaskJuggler/ColumnTable.html +701 -0
- data/doc/TaskJuggler/Daemon.html +728 -0
- data/doc/TaskJuggler/DateAttribute.html +675 -0
- data/doc/TaskJuggler/DefinitionListAttribute.html +593 -0
- data/doc/TaskJuggler/DependencyListAttribute.html +713 -0
- data/doc/TaskJuggler/DurationAttribute.html +707 -0
- data/doc/TaskJuggler/FixnumAttribute.html +629 -0
- data/doc/TaskJuggler/FlagListAttribute.html +709 -0
- data/doc/TaskJuggler/FloatAttribute.html +671 -0
- data/doc/TaskJuggler/FormatListAttribute.html +635 -0
- data/doc/TaskJuggler/GanttChart.html +1473 -0
- data/doc/TaskJuggler/GanttContainer.html +885 -0
- data/doc/TaskJuggler/GanttHeader.html +886 -0
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +700 -0
- data/doc/TaskJuggler/GanttLine.html +1263 -0
- data/doc/TaskJuggler/GanttLoadStack.html +766 -0
- data/doc/TaskJuggler/GanttMilestone.html +865 -0
- data/doc/TaskJuggler/GanttRouter.html +1433 -0
- data/doc/TaskJuggler/GanttTaskBar.html +880 -0
- data/doc/TaskJuggler/HTMLDocument.html +719 -0
- data/doc/TaskJuggler/HTMLGraphics.html +775 -0
- data/doc/TaskJuggler/Interval.html +1016 -0
- data/doc/TaskJuggler/IntervalListAttribute.html +713 -0
- data/doc/TaskJuggler/JobInfo.html +881 -0
- data/doc/TaskJuggler/Journal.html +991 -0
- data/doc/TaskJuggler/JournalEntry.html +779 -0
- data/doc/TaskJuggler/JournalEntryList.html +952 -0
- data/doc/TaskJuggler/KeywordArray.html +628 -0
- data/doc/TaskJuggler/KeywordDocumentation.html +1662 -0
- data/doc/TaskJuggler/Limits/Limit.html +826 -0
- data/doc/TaskJuggler/Limits.html +966 -0
- data/doc/TaskJuggler/LimitsAttribute.html +707 -0
- data/doc/TaskJuggler/ListAttributeBase.html +641 -0
- data/doc/TaskJuggler/Log.html +1103 -0
- data/doc/TaskJuggler/LogFile.html +918 -0
- data/doc/TaskJuggler/LogicalAttribute.html +698 -0
- data/doc/TaskJuggler/LogicalExpression.html +739 -0
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +629 -0
- data/doc/TaskJuggler/LogicalFlag.html +681 -0
- data/doc/TaskJuggler/LogicalFunction.html +1218 -0
- data/doc/TaskJuggler/LogicalOperation.html +1078 -0
- data/doc/TaskJuggler/Macro.html +646 -0
- data/doc/TaskJuggler/MacroParser.html +810 -0
- data/doc/TaskJuggler/MacroTable.html +810 -0
- data/doc/TaskJuggler/ManagerResponsibilities.html +674 -0
- data/doc/TaskJuggler/ManagerStatusRecord.html +678 -0
- data/doc/TaskJuggler/Message.html +757 -0
- data/doc/TaskJuggler/MessageHandler.html +679 -0
- data/doc/TaskJuggler/Navigator.html +867 -0
- data/doc/TaskJuggler/NavigatorElement.html +932 -0
- data/doc/TaskJuggler/NikuProject.html +662 -0
- data/doc/TaskJuggler/NikuReport.html +1316 -0
- data/doc/TaskJuggler/NikuResource.html +632 -0
- data/doc/TaskJuggler/OnShiftCache.html +864 -0
- data/doc/TaskJuggler/ProcessIntercom.html +847 -0
- data/doc/TaskJuggler/ProcessIntercomIface.html +664 -0
- data/doc/TaskJuggler/Project.html +3056 -0
- data/doc/TaskJuggler/ProjectBroker.html +1260 -0
- data/doc/TaskJuggler/ProjectBrokerIface.html +734 -0
- data/doc/TaskJuggler/ProjectFileParser.html +1951 -0
- data/doc/TaskJuggler/ProjectRecord.html +859 -0
- data/doc/TaskJuggler/ProjectServer.html +1092 -0
- data/doc/TaskJuggler/ProjectServerIface.html +768 -0
- data/doc/TaskJuggler/PropertyAttribute.html +629 -0
- data/doc/TaskJuggler/PropertyList.html +1336 -0
- data/doc/TaskJuggler/PropertySet.html +1785 -0
- data/doc/TaskJuggler/PropertyTreeNode.html +2482 -0
- data/doc/TaskJuggler/Query.html +1831 -0
- data/doc/TaskJuggler/RTFNavigator.html +729 -0
- data/doc/TaskJuggler/RTFQuery.html +1038 -0
- data/doc/TaskJuggler/RTFReport.html +740 -0
- data/doc/TaskJuggler/RealFormat.html +743 -0
- data/doc/TaskJuggler/RealFormatAttribute.html +593 -0
- data/doc/TaskJuggler/ReferenceAttribute.html +782 -0
- data/doc/TaskJuggler/Report.html +1255 -0
- data/doc/TaskJuggler/ReportBase.html +1198 -0
- data/doc/TaskJuggler/ReportContext.html +711 -0
- data/doc/TaskJuggler/ReportServer.html +988 -0
- data/doc/TaskJuggler/ReportServerIface.html +838 -0
- data/doc/TaskJuggler/ReportServerRecord.html +716 -0
- data/doc/TaskJuggler/ReportTable.html +1106 -0
- data/doc/TaskJuggler/ReportTableCell.html +1536 -0
- data/doc/TaskJuggler/ReportTableColumn.html +828 -0
- data/doc/TaskJuggler/ReportTableLegend.html +999 -0
- data/doc/TaskJuggler/ReportTableLine.html +1003 -0
- data/doc/TaskJuggler/Resource.html +938 -0
- data/doc/TaskJuggler/ResourceListAttribute.html +752 -0
- data/doc/TaskJuggler/ResourceListRE.html +674 -0
- data/doc/TaskJuggler/ResourceScenario.html +2457 -0
- data/doc/TaskJuggler/RichText.html +791 -0
- data/doc/TaskJuggler/RichTextAttribute.html +743 -0
- data/doc/TaskJuggler/RichTextDocument.html +972 -0
- data/doc/TaskJuggler/RichTextElement.html +1615 -0
- data/doc/TaskJuggler/RichTextException.html +667 -0
- data/doc/TaskJuggler/RichTextFunctionExample.html +737 -0
- data/doc/TaskJuggler/RichTextFunctionHandler.html +689 -0
- data/doc/TaskJuggler/RichTextImage.html +650 -0
- data/doc/TaskJuggler/RichTextIntermediate.html +1161 -0
- data/doc/TaskJuggler/RichTextParser.html +756 -0
- data/doc/TaskJuggler/RichTextScanner.html +2010 -0
- data/doc/TaskJuggler/RichTextSnip.html +942 -0
- data/doc/TaskJuggler/RichTextSyntaxRules.html +1722 -0
- data/doc/TaskJuggler/Scenario.html +594 -0
- data/doc/TaskJuggler/ScenarioData.html +815 -0
- data/doc/TaskJuggler/ScenarioListAttribute.html +671 -0
- data/doc/TaskJuggler/Scoreboard.html +1114 -0
- data/doc/TaskJuggler/SheetHandlerBase.html +1115 -0
- data/doc/TaskJuggler/SheetReceiver.html +1293 -0
- data/doc/TaskJuggler/SheetSender.html +1089 -0
- data/doc/TaskJuggler/Shift.html +689 -0
- data/doc/TaskJuggler/ShiftAssignment.html +950 -0
- data/doc/TaskJuggler/ShiftAssignments.html +1379 -0
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +707 -0
- data/doc/TaskJuggler/ShiftScenario.html +720 -0
- data/doc/TaskJuggler/SortListAttribute.html +631 -0
- data/doc/TaskJuggler/SourceFileInfo.html +698 -0
- data/doc/TaskJuggler/StatusSheetReceiver.html +615 -0
- data/doc/TaskJuggler/StatusSheetReport.html +872 -0
- data/doc/TaskJuggler/StatusSheetSender.html +654 -0
- data/doc/TaskJuggler/StringAttribute.html +671 -0
- data/doc/TaskJuggler/SymbolAttribute.html +629 -0
- data/doc/TaskJuggler/SyntaxReference.html +1155 -0
- data/doc/TaskJuggler/TOCEntry.html +723 -0
- data/doc/TaskJuggler/TSResourceRecord.html +670 -0
- data/doc/TaskJuggler/TSTaskRecord.html +682 -0
- data/doc/TaskJuggler/TableColumnDefinition.html +830 -0
- data/doc/TaskJuggler/TableOfContents.html +692 -0
- data/doc/TaskJuggler/TableReport.html +2444 -0
- data/doc/TaskJuggler/Task.html +781 -0
- data/doc/TaskJuggler/TaskDependency.html +730 -0
- data/doc/TaskJuggler/TaskListAttribute.html +713 -0
- data/doc/TaskJuggler/TaskListRE.html +673 -0
- data/doc/TaskJuggler/TaskScenario.html +4380 -0
- data/doc/TaskJuggler/TextFormatter.html +911 -0
- data/doc/TaskJuggler/TextParser/Pattern.html +1482 -0
- data/doc/TaskJuggler/TextParser/Rule.html +1288 -0
- data/doc/TaskJuggler/TextParser/StackElement.html +726 -0
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +648 -0
- data/doc/TaskJuggler/TextParser/TokenDoc.html +680 -0
- data/doc/TaskJuggler/TextParser.html +1670 -0
- data/doc/TaskJuggler/TextReport.html +856 -0
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +831 -0
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +832 -0
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +737 -0
- data/doc/TaskJuggler/TextScanner.html +2430 -0
- data/doc/TaskJuggler/TimeSheet.html +1233 -0
- data/doc/TaskJuggler/TimeSheetReceiver.html +612 -0
- data/doc/TaskJuggler/TimeSheetRecord.html +1352 -0
- data/doc/TaskJuggler/TimeSheetReport.html +948 -0
- data/doc/TaskJuggler/TimeSheetSender.html +637 -0
- data/doc/TaskJuggler/TimeSheetSummary.html +865 -0
- data/doc/TaskJuggler/TimeSheets.html +674 -0
- data/doc/TaskJuggler/Tj3AppBase.html +782 -0
- data/doc/TaskJuggler/Tj3Client.html +1455 -0
- data/doc/TaskJuggler/Tj3Daemon.html +767 -0
- data/doc/TaskJuggler/Tj3SheetAppBase.html +696 -0
- data/doc/TaskJuggler/Tj3SsReceiver.html +682 -0
- data/doc/TaskJuggler/Tj3SsSender.html +708 -0
- data/doc/TaskJuggler/Tj3TsReceiver.html +681 -0
- data/doc/TaskJuggler/Tj3TsSender.html +702 -0
- data/doc/TaskJuggler/Tj3TsSummary.html +710 -0
- data/doc/TaskJuggler/TjException.html +630 -0
- data/doc/TaskJuggler/TjTime.html +2590 -0
- data/doc/TaskJuggler/TjpExample.html +835 -0
- data/doc/TaskJuggler/TjpExportRE.html +1581 -0
- data/doc/TaskJuggler/TjpSyntaxRules.html +13004 -0
- data/doc/TaskJuggler/UserManual.html +1145 -0
- data/doc/TaskJuggler/WorkingHours.html +1101 -0
- data/doc/TaskJuggler/WorkingHoursAttribute.html +694 -0
- data/doc/TaskJuggler/XMLBlob.html +645 -0
- data/doc/TaskJuggler/XMLComment.html +640 -0
- data/doc/TaskJuggler/XMLDocument.html +732 -0
- data/doc/TaskJuggler/XMLElement.html +900 -0
- data/doc/TaskJuggler/XMLNamedText.html +601 -0
- data/doc/TaskJuggler/XMLText.html +655 -0
- data/doc/TaskJuggler.html +2243 -0
- data/doc/index.html +3778 -17
- data/doc/lib/AccountScenario_rb.html +67 -0
- data/doc/lib/Account_rb.html +69 -0
- data/doc/lib/Allocation_rb.html +69 -0
- data/doc/lib/AppConfig_rb.html +69 -0
- data/doc/lib/AttributeBase_rb.html +67 -0
- data/doc/lib/AttributeDefinition_rb.html +65 -0
- data/doc/lib/Attributes_rb.html +81 -0
- data/doc/lib/BatchProcessor_rb.html +69 -0
- data/doc/lib/Booking_rb.html +65 -0
- data/doc/lib/ChargeSet_rb.html +67 -0
- data/doc/lib/Charge_rb.html +67 -0
- data/doc/lib/HTMLDocument_rb.html +67 -0
- data/doc/lib/Interval_rb.html +67 -0
- data/doc/lib/Journal_rb.html +65 -0
- data/doc/lib/KeywordArray_rb.html +65 -0
- data/doc/lib/KeywordDocumentation_rb.html +75 -0
- data/doc/lib/Limits_rb.html +67 -0
- data/doc/lib/LogFile_rb.html +67 -0
- data/doc/lib/Log_rb.html +69 -0
- data/doc/lib/LogicalExpression_rb.html +71 -0
- data/doc/lib/LogicalFunction_rb.html +67 -0
- data/doc/lib/LogicalOperation_rb.html +67 -0
- data/doc/lib/MacroParser_rb.html +69 -0
- data/doc/lib/MacroTable_rb.html +73 -0
- data/doc/lib/MessageHandler_rb.html +65 -0
- data/doc/lib/Message_rb.html +67 -0
- data/doc/lib/ProjectFileParser_rb.html +79 -0
- data/doc/lib/Project_rb.html +109 -0
- data/doc/lib/PropertyList_rb.html +65 -0
- data/doc/lib/PropertySet_rb.html +69 -0
- data/doc/lib/PropertyTreeNode_rb.html +65 -0
- data/doc/lib/Query_rb.html +67 -0
- data/doc/lib/RTFNavigator_rb.html +71 -0
- data/doc/lib/RTFQuery_rb.html +71 -0
- data/doc/lib/RTFReport_rb.html +69 -0
- data/doc/lib/RealFormat_rb.html +65 -0
- data/doc/lib/ResourceScenario_rb.html +67 -0
- data/doc/lib/Resource_rb.html +69 -0
- data/doc/lib/RichTextDocument_rb.html +71 -0
- data/doc/lib/RichTextElement_rb.html +73 -0
- data/doc/lib/RichTextFunctionExample_rb.html +71 -0
- data/doc/lib/RichTextFunctionHandler_rb.html +65 -0
- data/doc/lib/RichTextParser_rb.html +71 -0
- data/doc/lib/RichTextScanner_rb.html +67 -0
- data/doc/lib/RichTextSnip_rb.html +69 -0
- data/doc/lib/RichTextSyntaxRules_rb.html +65 -0
- data/doc/lib/RichText_rb.html +69 -0
- data/doc/lib/RuntimeConfig_rb.html +67 -0
- data/doc/lib/ScenarioData_rb.html +69 -0
- data/doc/lib/Scenario_rb.html +67 -0
- data/doc/lib/Scoreboard_rb.html +65 -0
- data/doc/lib/SheetHandlerBase_rb.html +69 -0
- data/doc/lib/SheetReceiver_rb.html +75 -0
- data/doc/lib/SheetSender_rb.html +73 -0
- data/doc/lib/ShiftAssignments_rb.html +67 -0
- data/doc/lib/ShiftScenario_rb.html +67 -0
- data/doc/lib/Shift_rb.html +69 -0
- data/doc/lib/SourceFileInfo_rb.html +65 -0
- data/doc/lib/StatusSheetReceiver_rb.html +67 -0
- data/doc/lib/StatusSheetSender_rb.html +67 -0
- data/doc/lib/SyntaxReference_rb.html +73 -0
- data/doc/lib/TOCEntry_rb.html +69 -0
- data/doc/lib/TableColumnDefinition_rb.html +65 -0
- data/doc/lib/TableOfContents_rb.html +69 -0
- data/doc/lib/TaskDependency_rb.html +65 -0
- data/doc/lib/TaskJuggler_rb.html +73 -0
- data/doc/lib/TaskScenario_rb.html +67 -0
- data/doc/lib/Task_rb.html +69 -0
- data/doc/lib/TextFormatter_rb.html +67 -0
- data/doc/lib/TextParser/Pattern_rb.html +67 -0
- data/doc/lib/TextParser/Rule_rb.html +65 -0
- data/doc/lib/TextParser/StackElement_rb.html +65 -0
- data/doc/lib/TextParser/TokenDoc_rb.html +65 -0
- data/doc/lib/TextParser_rb.html +75 -0
- data/doc/lib/TextScanner_rb.html +79 -0
- data/doc/lib/TimeSheetReceiver_rb.html +67 -0
- data/doc/lib/TimeSheetSender_rb.html +67 -0
- data/doc/lib/TimeSheetSummary_rb.html +67 -0
- data/doc/lib/TimeSheets_rb.html +65 -0
- data/doc/lib/Tj3AppBase_rb.html +77 -0
- data/doc/lib/Tj3Config_rb.html +69 -0
- data/doc/lib/Tj3SheetAppBase_rb.html +67 -0
- data/doc/lib/TjException_rb.html +65 -0
- data/doc/lib/TjTime_rb.html +69 -0
- data/doc/lib/TjpExample_rb.html +67 -0
- data/doc/lib/TjpSyntaxRules_rb.html +65 -0
- data/doc/lib/UTF8String_rb.html +65 -0
- data/doc/lib/UserManual_rb.html +77 -0
- data/doc/lib/WorkingHours_rb.html +67 -0
- data/doc/lib/XMLDocument_rb.html +67 -0
- data/doc/lib/XMLElement_rb.html +67 -0
- data/doc/lib/daemon/Daemon_rb.html +67 -0
- data/doc/lib/daemon/ProcessIntercom_rb.html +67 -0
- data/doc/lib/daemon/ProjectBroker_rb.html +79 -0
- data/doc/lib/daemon/ProjectServer_rb.html +83 -0
- data/doc/lib/daemon/ReportServer_rb.html +73 -0
- data/doc/lib/deep_copy_rb.html +65 -0
- data/doc/lib/reports/CSVFile_rb.html +67 -0
- data/doc/lib/reports/ColumnTable_rb.html +67 -0
- data/doc/lib/reports/GanttChart_rb.html +73 -0
- data/doc/lib/reports/GanttContainer_rb.html +67 -0
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +65 -0
- data/doc/lib/reports/GanttHeader_rb.html +67 -0
- data/doc/lib/reports/GanttLine_rb.html +77 -0
- data/doc/lib/reports/GanttLoadStack_rb.html +67 -0
- data/doc/lib/reports/GanttMilestone_rb.html +67 -0
- data/doc/lib/reports/GanttRouter_rb.html +65 -0
- data/doc/lib/reports/GanttTaskBar_rb.html +67 -0
- data/doc/lib/reports/HTMLGraphics_rb.html +65 -0
- data/doc/lib/reports/Navigator_rb.html +67 -0
- data/doc/lib/reports/NikuReport_rb.html +69 -0
- data/doc/lib/reports/ReportBase_rb.html +65 -0
- data/doc/lib/reports/ReportContext_rb.html +65 -0
- data/doc/lib/reports/ReportTableCell_rb.html +65 -0
- data/doc/lib/reports/ReportTableColumn_rb.html +65 -0
- data/doc/lib/reports/ReportTableLegend_rb.html +65 -0
- data/doc/lib/reports/ReportTableLine_rb.html +67 -0
- data/doc/lib/reports/ReportTable_rb.html +69 -0
- data/doc/lib/reports/Report_rb.html +91 -0
- data/doc/lib/reports/ResourceListRE_rb.html +73 -0
- data/doc/lib/reports/StatusSheetReport_rb.html +67 -0
- data/doc/lib/reports/TableReport_rb.html +75 -0
- data/doc/lib/reports/TaskListRE_rb.html +73 -0
- data/doc/lib/reports/TextReport_rb.html +67 -0
- data/doc/lib/reports/TimeSheetReport_rb.html +67 -0
- data/doc/lib/reports/TjpExportRE_rb.html +67 -0
- data/doc/lib/ruby-signal-bug_rb.html +54 -0
- data/doc/lib/taskjuggler3_rb.html +73 -0
- data/doc/lib/tj3client_rb.html +73 -0
- data/doc/lib/tj3d_rb.html +73 -0
- data/doc/lib/tj3man_rb.html +73 -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 +701 -0
- data/examples/tutorial.tjp +25 -6
- data/lib/Attributes.rb +6 -2
- data/lib/HTMLDocument.rb +18 -2
- data/lib/Journal.rb +47 -4
- data/lib/KeywordArray.rb +1 -1
- data/lib/KeywordDocumentation.rb +17 -77
- data/lib/Log.rb +3 -1
- data/lib/LogFile.rb +72 -0
- data/lib/LogicalExpression.rb +5 -10
- data/lib/LogicalFunction.rb +34 -18
- data/lib/LogicalOperation.rb +32 -18
- data/lib/Project.rb +85 -13
- data/lib/ProjectFileParser.rb +19 -6
- data/lib/PropertyList.rb +12 -2
- data/lib/PropertyTreeNode.rb +23 -9
- data/lib/Query.rb +51 -13
- data/lib/RTFReport.rb +2 -2
- data/lib/Resource.rb +157 -0
- data/lib/ResourceScenario.rb +215 -68
- data/lib/RichText.rb +15 -3
- data/lib/RichTextDocument.rb +2 -4
- data/lib/RichTextElement.rb +87 -25
- data/lib/RichTextScanner.rb +32 -5
- data/lib/RichTextSnip.rb +6 -4
- data/lib/RichTextSyntaxRules.rb +44 -8
- data/lib/RuntimeConfig.rb +93 -0
- data/lib/Scoreboard.rb +6 -6
- data/lib/SheetHandlerBase.rb +215 -0
- data/lib/SheetReceiver.rb +355 -0
- data/lib/SheetSender.rb +264 -0
- data/lib/ShiftAssignments.rb +35 -27
- data/lib/StatusSheetReceiver.rb +45 -0
- data/lib/StatusSheetSender.rb +54 -0
- data/lib/SyntaxReference.rb +2 -7
- data/lib/Task.rb +70 -0
- data/lib/TaskJuggler.rb +114 -12
- data/lib/TaskScenario.rb +131 -22
- data/lib/TextFormatter.rb +177 -0
- data/lib/TextParser.rb +10 -1
- data/lib/TextScanner.rb +63 -33
- data/lib/TimeSheetReceiver.rb +42 -0
- data/lib/TimeSheetSender.rb +55 -0
- data/lib/TimeSheetSummary.rb +149 -0
- data/lib/TimeSheets.rb +406 -0
- data/lib/Tj3AppBase.rb +114 -0
- data/lib/Tj3Config.rb +1 -1
- data/lib/Tj3SheetAppBase.rb +59 -0
- data/lib/TjTime.rb +14 -1
- data/lib/TjpSyntaxRules.rb +573 -211
- data/lib/UTF8String.rb +4 -0
- data/lib/UserManual.rb +8 -7
- data/lib/XMLElement.rb +27 -19
- data/lib/daemon/Daemon.rb +70 -0
- data/lib/daemon/ProcessIntercom.rb +117 -0
- data/lib/daemon/ProjectBroker.rb +450 -0
- data/lib/daemon/ProjectServer.rb +348 -0
- data/lib/daemon/ReportServer.rb +194 -0
- data/lib/reports/ColumnTable.rb +2 -0
- data/lib/reports/GanttChart.rb +5 -7
- data/lib/reports/GanttContainer.rb +5 -8
- data/lib/reports/GanttHeader.rb +1 -1
- data/lib/reports/GanttLine.rb +89 -53
- data/lib/reports/GanttMilestone.rb +7 -4
- data/lib/reports/GanttTaskBar.rb +7 -3
- data/lib/reports/HTMLGraphics.rb +24 -9
- data/lib/reports/NikuReport.rb +414 -0
- data/lib/reports/Report.rb +54 -20
- data/lib/reports/ReportBase.rb +21 -0
- data/lib/reports/ReportTable.rb +29 -11
- data/lib/reports/ReportTableCell.rb +154 -86
- data/lib/reports/ReportTableLegend.rb +77 -80
- data/lib/reports/ResourceListRE.rb +2 -3
- data/lib/reports/StatusSheetReport.rb +231 -0
- data/lib/reports/TableReport.rb +74 -65
- data/lib/reports/TaskListRE.rb +2 -4
- data/lib/reports/TextReport.rb +18 -12
- data/lib/reports/TimeSheetReport.rb +145 -80
- data/lib/reports/TjpExportRE.rb +4 -4
- data/lib/ruby-signal-bug.rb +43 -0
- data/lib/taskjuggler3.rb +27 -10
- data/lib/tj3client.rb +411 -77
- data/lib/tj3d.rb +110 -0
- data/lib/tj3ss_receiver.rb +56 -0
- data/lib/tj3ss_sender.rb +84 -0
- data/lib/tj3ts_receiver.rb +59 -0
- data/lib/tj3ts_sender.rb +78 -0
- data/lib/tj3ts_summary.rb +87 -0
- data/manual/Day_To_Day_Juggling +761 -32
- data/manual/Getting_Started +12 -12
- data/manual/Rich_Text_Attributes +13 -1
- data/manual/TaskJuggler_2x_Migration +41 -3
- data/manual/TaskJuggler_Internals +87 -0
- data/manual/The_TaskJuggler_Syntax +1 -2
- data/manual/Tutorial +10 -10
- data/test/TestSuite/CSV-Reports/celltext.tjp +1 -1
- data/test/TestSuite/HTML-Reports/TimeSheet.html +79 -0
- data/test/TestSuite/HTML-Reports/icons/trend-down.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/trend-flat.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/trend-up.png +0 -0
- data/test/TestSuite/HTML-Reports/reference.html +51 -0
- data/test/TestSuite/Scheduler/Correct/Booking2.html +603 -0
- data/test/TestSuite/Scheduler/Correct/Booking2.tjp +57 -0
- data/test/TestSuite/Scheduler/Correct/Duration.tjp +32 -18
- data/test/TestSuite/Scheduler/Correct/Manager.tjp +9 -0
- data/test/TestSuite/Scheduler/Correct/Shift.html +429 -0
- data/test/TestSuite/Scheduler/Correct/Shift2.html +162 -0
- data/test/TestSuite/Scheduler/Correct/Shift2.tjp +67 -0
- data/test/TestSuite/{Syntax/Correct/TimeSheet.tjp → Scheduler/Correct/TimeSheet2.tjp} +21 -8
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +52 -0
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +195 -0
- data/test/TestSuite/{Syntax → 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/{Syntax → Scheduler}/Correct/icons/resource.png +0 -0
- data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/task.png +0 -0
- data/test/TestSuite/{Syntax → 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/{HTML-Reports/scripts → Scheduler/Correct}/scripts/wz_tooltip.js +0 -0
- data/test/TestSuite/Scheduler/Errors/manager_is_group.tjp +15 -0
- data/test/TestSuite/Scheduler/Errors/manager_is_self.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/resource_fail_check.tjp +12 -0
- data/test/TestSuite/Scheduler/Errors/resource_warn_check.tjp +12 -0
- data/test/TestSuite/Scheduler/Errors/task_fail_check.tjp +8 -0
- data/test/TestSuite/Scheduler/Errors/task_warn_check.tjp +8 -0
- data/test/TestSuite/Scheduler/Errors/ts_alert1_more_details.tjp +20 -0
- data/test/TestSuite/Scheduler/Errors/ts_alert2_more_details.tjp +21 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_expected_end.tjp +26 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_headline1.tjp +27 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_rem_or_end.tjp +26 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_remaining.tjp +26 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_status_work.tjp +18 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_work.tjp +26 -0
- data/test/TestSuite/Scheduler/Errors/ts_res_new_task.tjp +20 -0
- data/test/TestSuite/Scheduler/Errors/ts_work_too_high.tjp +27 -0
- data/test/TestSuite/Scheduler/Errors/ts_work_too_low.tjp +27 -0
- data/test/TestSuite/StatusSheets/boss.tji +45 -0
- data/test/TestSuite/StatusSheets/boss_mail +51 -0
- data/test/TestSuite/StatusSheets/dev2_mail +37 -0
- data/test/TestSuite/StatusSheets/project.tjp +275 -0
- data/test/TestSuite/StatusSheets/run +50 -0
- data/test/TestSuite/Syntax/Correct/Include.tjp +4 -0
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +10 -1
- data/test/TestSuite/Syntax/Correct/Manager.tjp +30 -0
- data/test/TestSuite/Syntax/Correct/Niku.tjp +66 -0
- data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +83 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +1 -0
- data/test/TestSuite/Syntax/Correct/include/dir2/file3.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/file1.tji +3 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +29 -8
- data/test/TestSuite/Syntax/Errors/ts_bad_priority.tjp +19 -0
- data/test/TestSuite/Syntax/Errors/ts_default_details.tjp +22 -0
- data/test/TestSuite/Syntax/Errors/ts_default_summary.tjp +22 -0
- data/test/TestSuite/Syntax/Errors/ts_duplicate_task.tjp +23 -0
- data/test/TestSuite/Syntax/Errors/ts_end_too_early.tjp +18 -0
- data/test/TestSuite/Syntax/Errors/ts_headline_too_long.tjp +19 -0
- data/test/TestSuite/Syntax/Errors/ts_no_headline2.tjp +27 -0
- data/test/TestSuite/Syntax/Errors/ts_summary_too_long.tjp +29 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +36 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +48 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +67 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +67 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +48 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +31 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +36 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +1 -0
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +1 -0
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +54 -0
- data/test/TestSuite/TimeSheets/TimeSheets/all.tji +2 -0
- data/test/TestSuite/TimeSheets/dev2_mail1 +84 -0
- data/test/TestSuite/TimeSheets/dev2_mail2 +87 -0
- data/test/TestSuite/TimeSheets/project.tjp +271 -0
- data/test/TestSuite/TimeSheets/receiver.log +102 -0
- data/test/TestSuite/TimeSheets/run +75 -0
- data/test/TestSuite/TimeSheets/sender.log +794 -0
- data/test/TestSuite/TimeSheets/summary.log +884 -0
- data/test/TestSuite/TimeSheets/timesheets.log +45 -0
- data/test/TestSuite/TimeSheets/tj3d.log +292 -0
- data/test/test_CSV-Reports.rb +5 -3
- data/test/test_RichText.rb +264 -56
- data/test/test_Scheduler.rb +1 -0
- data/test/test_TextFormatter.rb +142 -0
- data/test/test_TjTime.rb +15 -0
- metadata +816 -644
- data/benchmarks/UTF-8-Strings.rb +0 -58
- data/doc/classes/AppConfig.html +0 -880
- data/doc/classes/Arguments.html +0 -230
- data/doc/classes/Object.html +0 -229
- data/doc/classes/String.html +0 -399
- data/doc/classes/TaskJuggler/Account.html +0 -257
- data/doc/classes/TaskJuggler/AccountAttribute.html +0 -261
- data/doc/classes/TaskJuggler/AccountScenario.html +0 -218
- data/doc/classes/TaskJuggler/Allocation.html +0 -423
- data/doc/classes/TaskJuggler/AllocationAttribute.html +0 -291
- data/doc/classes/TaskJuggler/AttributeBase.html +0 -704
- data/doc/classes/TaskJuggler/AttributeDefinition.html +0 -276
- data/doc/classes/TaskJuggler/BatchProcessor.html +0 -347
- data/doc/classes/TaskJuggler/Booking.html +0 -311
- data/doc/classes/TaskJuggler/BookingListAttribute.html +0 -263
- data/doc/classes/TaskJuggler/BooleanAttribute.html +0 -261
- data/doc/classes/TaskJuggler/CSVFile.html +0 -329
- data/doc/classes/TaskJuggler/CellSettingPattern.html +0 -201
- data/doc/classes/TaskJuggler/CellSettingPatternList.html +0 -253
- data/doc/classes/TaskJuggler/Charge.html +0 -283
- data/doc/classes/TaskJuggler/ChargeListAttribute.html +0 -229
- data/doc/classes/TaskJuggler/ChargeSet.html +0 -444
- data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +0 -276
- data/doc/classes/TaskJuggler/ColumnListAttribute.html +0 -231
- data/doc/classes/TaskJuggler/ColumnTable.html +0 -262
- data/doc/classes/TaskJuggler/DateAttribute.html +0 -233
- data/doc/classes/TaskJuggler/DefinitionListAttribute.html +0 -162
- data/doc/classes/TaskJuggler/DependencyListAttribute.html +0 -267
- data/doc/classes/TaskJuggler/DurationAttribute.html +0 -229
- data/doc/classes/TaskJuggler/FixnumAttribute.html +0 -194
- data/doc/classes/TaskJuggler/FlagListAttribute.html +0 -263
- data/doc/classes/TaskJuggler/FloatAttribute.html +0 -229
- data/doc/classes/TaskJuggler/FormatListAttribute.html +0 -197
- data/doc/classes/TaskJuggler/GanttChart.html +0 -696
- data/doc/classes/TaskJuggler/GanttContainer.html +0 -445
- data/doc/classes/TaskJuggler/GanttHeader.html +0 -284
- data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +0 -249
- data/doc/classes/TaskJuggler/GanttLine.html +0 -402
- data/doc/classes/TaskJuggler/GanttLoadStack.html +0 -331
- data/doc/classes/TaskJuggler/GanttMilestone.html +0 -419
- data/doc/classes/TaskJuggler/GanttRouter.html +0 -431
- data/doc/classes/TaskJuggler/GanttTaskBar.html +0 -433
- data/doc/classes/TaskJuggler/HTMLDocument.html +0 -240
- data/doc/classes/TaskJuggler/HTMLGraphics.html +0 -231
- data/doc/classes/TaskJuggler/Interval.html +0 -558
- data/doc/classes/TaskJuggler/IntervalListAttribute.html +0 -267
- data/doc/classes/TaskJuggler/JobInfo.html +0 -340
- data/doc/classes/TaskJuggler/Journal.html +0 -443
- data/doc/classes/TaskJuggler/JournalEntry.html +0 -274
- data/doc/classes/TaskJuggler/JournalEntryList.html +0 -454
- data/doc/classes/TaskJuggler/KeywordArray.html +0 -179
- data/doc/classes/TaskJuggler/KeywordDocumentation.html +0 -846
- data/doc/classes/TaskJuggler/Limits/Limit.html +0 -385
- data/doc/classes/TaskJuggler/Limits.html +0 -422
- data/doc/classes/TaskJuggler/LimitsAttribute.html +0 -261
- data/doc/classes/TaskJuggler/ListAttributeBase.html +0 -207
- data/doc/classes/TaskJuggler/Log.html +0 -655
- data/doc/classes/TaskJuggler/LogicalAttribute.html +0 -259
- data/doc/classes/TaskJuggler/LogicalExpression.html +0 -292
- data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +0 -194
- data/doc/classes/TaskJuggler/LogicalFlag.html +0 -209
- data/doc/classes/TaskJuggler/LogicalFunction.html +0 -339
- data/doc/classes/TaskJuggler/LogicalOperation.html +0 -351
- data/doc/classes/TaskJuggler/Macro.html +0 -198
- data/doc/classes/TaskJuggler/MacroParser.html +0 -360
- data/doc/classes/TaskJuggler/MacroTable.html +0 -370
- data/doc/classes/TaskJuggler/Message.html +0 -285
- data/doc/classes/TaskJuggler/MessageHandler.html +0 -231
- data/doc/classes/TaskJuggler/Navigator.html +0 -313
- data/doc/classes/TaskJuggler/NavigatorElement.html +0 -449
- data/doc/classes/TaskJuggler/OnShiftCache.html +0 -316
- data/doc/classes/TaskJuggler/Project.html +0 -2257
- data/doc/classes/TaskJuggler/ProjectFileParser.html +0 -420
- data/doc/classes/TaskJuggler/PropertyAttribute.html +0 -194
- data/doc/classes/TaskJuggler/PropertyList.html +0 -668
- data/doc/classes/TaskJuggler/PropertySet.html +0 -1286
- data/doc/classes/TaskJuggler/PropertyTreeNode.html +0 -1742
- data/doc/classes/TaskJuggler/Query.html +0 -870
- data/doc/classes/TaskJuggler/RTFNavigator.html +0 -293
- data/doc/classes/TaskJuggler/RTFQuery.html +0 -343
- data/doc/classes/TaskJuggler/RTFReport.html +0 -304
- data/doc/classes/TaskJuggler/RealFormat.html +0 -309
- data/doc/classes/TaskJuggler/RealFormatAttribute.html +0 -162
- data/doc/classes/TaskJuggler/ReferenceAttribute.html +0 -328
- data/doc/classes/TaskJuggler/RemoteServiceManager.html +0 -335
- data/doc/classes/TaskJuggler/Report.html +0 -321
- data/doc/classes/TaskJuggler/ReportBase.html +0 -437
- data/doc/classes/TaskJuggler/ReportContext.html +0 -248
- data/doc/classes/TaskJuggler/ReportServer.html +0 -320
- data/doc/classes/TaskJuggler/ReportTable.html +0 -526
- data/doc/classes/TaskJuggler/ReportTableCell.html +0 -614
- data/doc/classes/TaskJuggler/ReportTableColumn.html +0 -368
- data/doc/classes/TaskJuggler/ReportTableLegend.html +0 -347
- data/doc/classes/TaskJuggler/ReportTableLine.html +0 -481
- data/doc/classes/TaskJuggler/Resource.html +0 -211
- data/doc/classes/TaskJuggler/ResourceListAttribute.html +0 -302
- data/doc/classes/TaskJuggler/ResourceListRE.html +0 -245
- data/doc/classes/TaskJuggler/ResourceScenario.html +0 -1229
- data/doc/classes/TaskJuggler/RichText.html +0 -357
- data/doc/classes/TaskJuggler/RichTextAttribute.html +0 -293
- data/doc/classes/TaskJuggler/RichTextDocument.html +0 -424
- data/doc/classes/TaskJuggler/RichTextElement.html +0 -932
- data/doc/classes/TaskJuggler/RichTextException.html +0 -212
- data/doc/classes/TaskJuggler/RichTextFunctionExample.html +0 -301
- data/doc/classes/TaskJuggler/RichTextFunctionHandler.html +0 -245
- data/doc/classes/TaskJuggler/RichTextIntermediate.html +0 -563
- data/doc/classes/TaskJuggler/RichTextParser.html +0 -321
- data/doc/classes/TaskJuggler/RichTextScanner.html +0 -424
- data/doc/classes/TaskJuggler/RichTextSnip.html +0 -404
- data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +0 -1105
- data/doc/classes/TaskJuggler/Scenario.html +0 -163
- data/doc/classes/TaskJuggler/ScenarioData.html +0 -358
- data/doc/classes/TaskJuggler/ScenarioListAttribute.html +0 -229
- data/doc/classes/TaskJuggler/Scoreboard.html +0 -642
- data/doc/classes/TaskJuggler/Shift.html +0 -255
- data/doc/classes/TaskJuggler/ShiftAssignment.html +0 -492
- data/doc/classes/TaskJuggler/ShiftAssignments.html +0 -719
- data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +0 -261
- data/doc/classes/TaskJuggler/ShiftScenario.html +0 -282
- data/doc/classes/TaskJuggler/SortListAttribute.html +0 -196
- data/doc/classes/TaskJuggler/SourceFileInfo.html +0 -251
- data/doc/classes/TaskJuggler/StringAttribute.html +0 -229
- data/doc/classes/TaskJuggler/SymbolAttribute.html +0 -194
- data/doc/classes/TaskJuggler/SyntaxReference.html +0 -520
- data/doc/classes/TaskJuggler/TOCEntry.html +0 -246
- data/doc/classes/TaskJuggler/TSResourceRecord.html +0 -197
- data/doc/classes/TaskJuggler/TSTaskRecord.html +0 -215
- data/doc/classes/TaskJuggler/TableColumnDefinition.html +0 -309
- data/doc/classes/TaskJuggler/TableOfContents.html +0 -260
- data/doc/classes/TaskJuggler/TableReport.html +0 -1015
- data/doc/classes/TaskJuggler/Task.html +0 -203
- data/doc/classes/TaskJuggler/TaskDependency.html +0 -255
- data/doc/classes/TaskJuggler/TaskListAttribute.html +0 -267
- data/doc/classes/TaskJuggler/TaskListRE.html +0 -245
- data/doc/classes/TaskJuggler/TaskScenario.html +0 -2543
- data/doc/classes/TaskJuggler/TextParser/Pattern.html +0 -927
- data/doc/classes/TaskJuggler/TextParser/Rule.html +0 -783
- data/doc/classes/TaskJuggler/TextParser/StackElement.html +0 -272
- data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +0 -212
- data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +0 -225
- data/doc/classes/TaskJuggler/TextParser.html +0 -754
- data/doc/classes/TaskJuggler/TextReport.html +0 -367
- data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +0 -355
- data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +0 -348
- data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +0 -264
- data/doc/classes/TaskJuggler/TextScanner.html +0 -815
- data/doc/classes/TaskJuggler/TimeSheetReport.html +0 -406
- data/doc/classes/TaskJuggler/TjException.html +0 -185
- data/doc/classes/TaskJuggler/TjTime.html +0 -1904
- data/doc/classes/TaskJuggler/TjpExample.html +0 -314
- data/doc/classes/TaskJuggler/TjpExportRE.html +0 -306
- data/doc/classes/TaskJuggler/TjpSyntaxRules.html +0 -10812
- data/doc/classes/TaskJuggler/UserManual.html +0 -605
- data/doc/classes/TaskJuggler/WorkingHours.html +0 -586
- data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +0 -252
- data/doc/classes/TaskJuggler/XMLBlob.html +0 -207
- data/doc/classes/TaskJuggler/XMLComment.html +0 -206
- data/doc/classes/TaskJuggler/XMLDocument.html +0 -298
- data/doc/classes/TaskJuggler/XMLElement.html +0 -389
- data/doc/classes/TaskJuggler/XMLNamedText.html +0 -174
- data/doc/classes/TaskJuggler/XMLText.html +0 -221
- data/doc/classes/TaskJuggler.html +0 -1573
- data/doc/files/COPYING.html +0 -448
- data/doc/files/README.html +0 -134
- data/doc/files/lib/AccountScenario_rb.html +0 -117
- data/doc/files/lib/Account_rb.html +0 -119
- data/doc/files/lib/Allocation_rb.html +0 -119
- data/doc/files/lib/AppConfig_rb.html +0 -119
- data/doc/files/lib/AttributeBase_rb.html +0 -117
- data/doc/files/lib/AttributeDefinition_rb.html +0 -107
- data/doc/files/lib/Attributes_rb.html +0 -131
- data/doc/files/lib/BatchProcessor_rb.html +0 -119
- data/doc/files/lib/Booking_rb.html +0 -107
- data/doc/files/lib/ChargeSet_rb.html +0 -117
- data/doc/files/lib/Charge_rb.html +0 -117
- data/doc/files/lib/HTMLDocument_rb.html +0 -117
- data/doc/files/lib/Interval_rb.html +0 -117
- data/doc/files/lib/Journal_rb.html +0 -107
- data/doc/files/lib/KeywordArray_rb.html +0 -107
- data/doc/files/lib/KeywordDocumentation_rb.html +0 -123
- data/doc/files/lib/Limits_rb.html +0 -117
- data/doc/files/lib/Log_rb.html +0 -117
- data/doc/files/lib/LogicalExpression_rb.html +0 -121
- data/doc/files/lib/LogicalFunction_rb.html +0 -117
- data/doc/files/lib/LogicalOperation_rb.html +0 -117
- data/doc/files/lib/MacroParser_rb.html +0 -119
- data/doc/files/lib/MacroTable_rb.html +0 -123
- data/doc/files/lib/MessageHandler_rb.html +0 -107
- data/doc/files/lib/Message_rb.html +0 -117
- data/doc/files/lib/ProjectFileParser_rb.html +0 -129
- data/doc/files/lib/Project_rb.html +0 -153
- data/doc/files/lib/PropertyList_rb.html +0 -107
- data/doc/files/lib/PropertySet_rb.html +0 -119
- data/doc/files/lib/PropertyTreeNode_rb.html +0 -107
- data/doc/files/lib/Query_rb.html +0 -117
- data/doc/files/lib/RTFNavigator_rb.html +0 -121
- data/doc/files/lib/RTFQuery_rb.html +0 -121
- data/doc/files/lib/RTFReport_rb.html +0 -119
- data/doc/files/lib/RealFormat_rb.html +0 -107
- data/doc/files/lib/RemoteServiceManager_rb.html +0 -117
- data/doc/files/lib/ReportServer_rb.html +0 -107
- data/doc/files/lib/ResourceScenario_rb.html +0 -117
- data/doc/files/lib/Resource_rb.html +0 -119
- data/doc/files/lib/RichTextDocument_rb.html +0 -121
- data/doc/files/lib/RichTextElement_rb.html +0 -121
- data/doc/files/lib/RichTextFunctionExample_rb.html +0 -121
- data/doc/files/lib/RichTextFunctionHandler_rb.html +0 -107
- data/doc/files/lib/RichTextParser_rb.html +0 -121
- data/doc/files/lib/RichTextScanner_rb.html +0 -117
- data/doc/files/lib/RichTextSnip_rb.html +0 -119
- data/doc/files/lib/RichTextSyntaxRules_rb.html +0 -107
- data/doc/files/lib/RichText_rb.html +0 -119
- data/doc/files/lib/ScenarioData_rb.html +0 -119
- data/doc/files/lib/Scenario_rb.html +0 -117
- data/doc/files/lib/Scoreboard_rb.html +0 -107
- data/doc/files/lib/ShiftAssignments_rb.html +0 -117
- data/doc/files/lib/ShiftScenario_rb.html +0 -117
- data/doc/files/lib/Shift_rb.html +0 -119
- data/doc/files/lib/SourceFileInfo_rb.html +0 -107
- data/doc/files/lib/SyntaxReference_rb.html +0 -123
- data/doc/files/lib/TOCEntry_rb.html +0 -119
- data/doc/files/lib/TableColumnDefinition_rb.html +0 -107
- data/doc/files/lib/TableOfContents_rb.html +0 -119
- data/doc/files/lib/TaskDependency_rb.html +0 -107
- data/doc/files/lib/TaskJuggler_rb.html +0 -125
- data/doc/files/lib/TaskScenario_rb.html +0 -117
- data/doc/files/lib/Task_rb.html +0 -119
- data/doc/files/lib/TextParser/Pattern_rb.html +0 -117
- data/doc/files/lib/TextParser/Rule_rb.html +0 -107
- data/doc/files/lib/TextParser/StackElement_rb.html +0 -107
- data/doc/files/lib/TextParser/TokenDoc_rb.html +0 -107
- data/doc/files/lib/TextParser_rb.html +0 -125
- data/doc/files/lib/TextScanner_rb.html +0 -129
- data/doc/files/lib/Tj3Config_rb.html +0 -119
- data/doc/files/lib/TjException_rb.html +0 -107
- data/doc/files/lib/TjTime_rb.html +0 -119
- data/doc/files/lib/TjpExample_rb.html +0 -117
- data/doc/files/lib/TjpSyntaxRules_rb.html +0 -107
- data/doc/files/lib/UTF8String_rb.html +0 -140
- data/doc/files/lib/UserManual_rb.html +0 -127
- data/doc/files/lib/WorkingHours_rb.html +0 -117
- data/doc/files/lib/XMLDocument_rb.html +0 -117
- data/doc/files/lib/XMLElement_rb.html +0 -117
- data/doc/files/lib/deep_copy_rb.html +0 -107
- data/doc/files/lib/reports/CSVFile_rb.html +0 -117
- data/doc/files/lib/reports/ColumnTable_rb.html +0 -117
- data/doc/files/lib/reports/GanttChart_rb.html +0 -123
- data/doc/files/lib/reports/GanttContainer_rb.html +0 -117
- data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +0 -107
- data/doc/files/lib/reports/GanttHeader_rb.html +0 -117
- data/doc/files/lib/reports/GanttLine_rb.html +0 -127
- data/doc/files/lib/reports/GanttLoadStack_rb.html +0 -117
- data/doc/files/lib/reports/GanttMilestone_rb.html +0 -117
- data/doc/files/lib/reports/GanttRouter_rb.html +0 -107
- data/doc/files/lib/reports/GanttTaskBar_rb.html +0 -117
- data/doc/files/lib/reports/HTMLGraphics_rb.html +0 -107
- data/doc/files/lib/reports/Navigator_rb.html +0 -117
- data/doc/files/lib/reports/ReportBase_rb.html +0 -107
- data/doc/files/lib/reports/ReportContext_rb.html +0 -107
- data/doc/files/lib/reports/ReportTableCell_rb.html +0 -107
- data/doc/files/lib/reports/ReportTableColumn_rb.html +0 -107
- data/doc/files/lib/reports/ReportTableLegend_rb.html +0 -107
- data/doc/files/lib/reports/ReportTableLine_rb.html +0 -117
- data/doc/files/lib/reports/ReportTable_rb.html +0 -119
- data/doc/files/lib/reports/Report_rb.html +0 -137
- data/doc/files/lib/reports/ResourceListRE_rb.html +0 -123
- data/doc/files/lib/reports/TableReport_rb.html +0 -125
- data/doc/files/lib/reports/TaskListRE_rb.html +0 -123
- data/doc/files/lib/reports/TextReport_rb.html +0 -117
- data/doc/files/lib/reports/TimeSheetReport_rb.html +0 -117
- data/doc/files/lib/reports/TjpExportRE_rb.html +0 -117
- data/doc/files/lib/taskjuggler3_rb.html +0 -298
- data/doc/files/lib/tj3client_rb.html +0 -280
- data/doc/files/lib/tj3man_rb.html +0 -190
- data/doc/fr_class_index.html +0 -345
- data/doc/fr_file_index.html +0 -247
- data/doc/fr_method_index.html +0 -2355
- data/doc/rdoc-style.css +0 -299
- data/lib/RemoteServiceManager.rb +0 -80
- data/lib/ReportServer.rb +0 -66
- data/test/TestSuite/HTML-Reports/Alerts.html +0 -172
- data/test/TestSuite/HTML-Reports/CellText.html +0 -758
- data/test/TestSuite/HTML-Reports/ColumnPeriods.html +0 -156
- data/test/TestSuite/HTML-Reports/IsOngoing.html +0 -172
- data/test/TestSuite/HTML-Reports/LogicalFunctions.html +0 -80
- data/test/TestSuite/HTML-Reports/Query.html +0 -31
- data/test/TestSuite/HTML-Reports/depArrows.html +0 -842
- data/test/TestSuite/Syntax/Correct/RawHTML.tjp +0 -31
- data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +0 -1301
- data/test/TestSuite/Syntax/Errors/export_bad_extn.tjp +0 -9
data/lib/LogicalOperation.rb
CHANGED
@@ -84,23 +84,30 @@ class TaskJuggler
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
# Convert the operation into a textual representation.
|
88
|
-
|
89
|
-
def to_s
|
87
|
+
# Convert the operation into a textual representation.
|
88
|
+
def to_s(query)
|
90
89
|
if @operator.nil?
|
91
|
-
|
90
|
+
operand_to_s(@operand1, query)
|
92
91
|
elsif @operand2.nil?
|
93
|
-
|
94
|
-
"'" + @operand1 + "'" : @operand1})"
|
92
|
+
@operator + operand_to_s(@operand1, query)
|
95
93
|
else
|
96
|
-
"(#{@operand1
|
97
|
-
|
98
|
-
@operand2.is_a?(String) ? "'" + @operand2 + "'" : @operand2})"
|
94
|
+
"(#{operand_to_s(@operand1, query)} #{@operator} " +
|
95
|
+
"#{operand_to_s(@operand2, query)})"
|
99
96
|
end
|
100
97
|
end
|
101
98
|
|
102
99
|
private
|
103
100
|
|
101
|
+
def operand_to_s(operand, query)
|
102
|
+
if operand.is_a?(LogicalOperation)
|
103
|
+
operand.to_s(query)
|
104
|
+
elsif operand.is_a?(String)
|
105
|
+
"'#{operand}'"
|
106
|
+
else
|
107
|
+
operand.to_s
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
104
111
|
# We need to do binary operator evaluation with various coerce functions.
|
105
112
|
# This function does the evaluation of _opnd1_ and _opnd2_ with the
|
106
113
|
# operation specified by _operator_. The operands are first coerced into
|
@@ -129,7 +136,7 @@ class TaskJuggler
|
|
129
136
|
# First the obvious ones.
|
130
137
|
return val if val.class == TrueClass || val.class == FalseClass
|
131
138
|
# An empty String means false, else true.
|
132
|
-
return !val.empty if val.is_a?(String)
|
139
|
+
return !val.empty? if val.is_a?(String)
|
133
140
|
# In TJP logic 'non 0' means false.
|
134
141
|
return val != 0 if val.is_a?(Fixnum) || val.is_a?(Bignum)
|
135
142
|
|
@@ -178,8 +185,6 @@ class TaskJuggler
|
|
178
185
|
# the value.
|
179
186
|
def eval(expr)
|
180
187
|
query = expr.query
|
181
|
-
project = query.property.project
|
182
|
-
report = project.reportContext.report
|
183
188
|
query.scenarioIdx = @scenarioIdx
|
184
189
|
query.attributeId = @operand1
|
185
190
|
query.process
|
@@ -191,9 +196,15 @@ class TaskJuggler
|
|
191
196
|
query.result || ''
|
192
197
|
end
|
193
198
|
|
194
|
-
#
|
195
|
-
|
196
|
-
|
199
|
+
# Dumps the LogicalOperation as String. If _query_ is nil, the variable
|
200
|
+
# names are shown, otherwise their values.
|
201
|
+
def to_s(query)
|
202
|
+
if query
|
203
|
+
query.process
|
204
|
+
query.to_s
|
205
|
+
else
|
206
|
+
"#{@scenarioIdx}.#{@operand1}"
|
207
|
+
end
|
197
208
|
end
|
198
209
|
|
199
210
|
end
|
@@ -211,9 +222,12 @@ class TaskJuggler
|
|
211
222
|
expr.query.property['flags', 0].include?(@operand1)
|
212
223
|
end
|
213
224
|
|
214
|
-
|
215
|
-
|
216
|
-
|
225
|
+
def to_s(query)
|
226
|
+
if query
|
227
|
+
query.property['flags', 0].include(@operand1) ? 'true' : 'false'
|
228
|
+
else
|
229
|
+
@operand1
|
230
|
+
end
|
217
231
|
end
|
218
232
|
|
219
233
|
end
|
data/lib/Project.rb
CHANGED
@@ -10,6 +10,8 @@
|
|
10
10
|
# published by the Free Software Foundation.
|
11
11
|
#
|
12
12
|
|
13
|
+
require 'TjException'
|
14
|
+
require 'Message'
|
13
15
|
require 'TjTime'
|
14
16
|
require 'Booking'
|
15
17
|
require 'PropertySet'
|
@@ -25,6 +27,7 @@ require 'Resource'
|
|
25
27
|
require 'reports/Report'
|
26
28
|
require 'ShiftAssignments'
|
27
29
|
require 'WorkingHours'
|
30
|
+
require 'TimeSheets'
|
28
31
|
require 'ProjectFileParser'
|
29
32
|
require 'BatchProcessor'
|
30
33
|
require 'Journal'
|
@@ -46,8 +49,8 @@ class TaskJuggler
|
|
46
49
|
class Project
|
47
50
|
|
48
51
|
attr_reader :accounts, :shifts, :tasks, :resources, :scenarios,
|
49
|
-
:reports, :messageHandler
|
50
|
-
attr_accessor :reportContext, :outputDir
|
52
|
+
:timeSheets, :reports, :messageHandler
|
53
|
+
attr_accessor :reportContext, :outputDir, :warnTsDeltas
|
51
54
|
|
52
55
|
# Create a project with the specified +id+, +name+ and +version+.
|
53
56
|
# +messageHandler+ is a MessageHandler reference that is used to handle
|
@@ -166,12 +169,16 @@ class TaskJuggler
|
|
166
169
|
false, false, true, 0.0 ],
|
167
170
|
[ 'duties', 'Duties', TaskListAttribute,
|
168
171
|
false, false, true, [] ],
|
172
|
+
[ 'directreports', 'Direct Reports', ResourceListAttribute,
|
173
|
+
false, false, true, [] ],
|
169
174
|
[ 'efficiency','Efficiency', FloatAttribute,
|
170
175
|
true, false, true, 1.0 ],
|
171
176
|
[ 'effort', 'Total Effort', FixnumAttribute,
|
172
177
|
false, false, true, 0 ],
|
173
178
|
[ 'email', 'Email', StringAttribute,
|
174
|
-
|
179
|
+
false, false, false, nil ],
|
180
|
+
[ 'fail', 'Failure Condition', LogicalExpressionAttribute,
|
181
|
+
false, false, true, nil ],
|
175
182
|
[ 'flags', 'Flags', FlagListAttribute,
|
176
183
|
true, false, true, [] ],
|
177
184
|
[ 'fte', 'FTE', FloatAttribute,
|
@@ -182,8 +189,12 @@ class TaskJuggler
|
|
182
189
|
false, false, false, -1 ],
|
183
190
|
[ 'limits', 'Limits', LimitsAttribute,
|
184
191
|
true, true, true, nil ],
|
192
|
+
[ 'managers', 'Managers', ResourceListAttribute,
|
193
|
+
true, false, true, [] ],
|
185
194
|
[ 'rate', 'Rate', FloatAttribute,
|
186
195
|
true, true, true, 0.0 ],
|
196
|
+
[ 'reports', 'Reports', ResourceListAttribute,
|
197
|
+
false, false, true, [] ],
|
187
198
|
[ 'shifts', 'Shifts', ShiftAssignmentsAttribute,
|
188
199
|
true, false, true, nil ],
|
189
200
|
[ 'timezone', 'Time Zone', StringAttribute,
|
@@ -192,6 +203,8 @@ class TaskJuggler
|
|
192
203
|
false, false, false, "" ],
|
193
204
|
[ 'vacations', 'Vacations', IntervalListAttribute,
|
194
205
|
true, true, true, [] ],
|
206
|
+
[ 'warn', 'Warning Condition', LogicalExpressionAttribute,
|
207
|
+
false, false, true, nil ],
|
195
208
|
[ 'wbs', 'WBS', StringAttribute,
|
196
209
|
false, false, false, "" ],
|
197
210
|
[ 'workinghours', 'Working Hours', WorkingHoursAttribute,
|
@@ -229,6 +242,8 @@ class TaskJuggler
|
|
229
242
|
false, false, true, [] ],
|
230
243
|
[ 'endsuccs', 'End Succs.', TaskListAttribute,
|
231
244
|
false, false, true, [] ],
|
245
|
+
[ 'fail', 'Failure Condition', LogicalExpressionAttribute,
|
246
|
+
false, false, true, nil ],
|
232
247
|
[ 'flags', 'Flags', FlagListAttribute,
|
233
248
|
true, false, true, [] ],
|
234
249
|
[ 'forward', 'Scheduling', BooleanAttribute,
|
@@ -275,6 +290,8 @@ class TaskJuggler
|
|
275
290
|
false, false, true, "" ],
|
276
291
|
[ 'tree', 'Tree Index', StringAttribute,
|
277
292
|
false, false, false, "" ],
|
293
|
+
[ 'warn', 'Warning Condition', LogicalExpressionAttribute,
|
294
|
+
false, false, true, nil ],
|
278
295
|
[ 'wbs', 'WBS', StringAttribute,
|
279
296
|
false, false, false, "" ]
|
280
297
|
]
|
@@ -373,9 +390,12 @@ class TaskJuggler
|
|
373
390
|
|
374
391
|
Scenario.new(self, 'plan', 'Plan Scenario', nil)
|
375
392
|
|
393
|
+
@timeSheets = TimeSheets.new
|
394
|
+
|
376
395
|
# This holds a reference to the ReportContext for each Thread.
|
377
396
|
@reportContext = nil
|
378
397
|
@outputDir = ''
|
398
|
+
@warnTsDeltas = false
|
379
399
|
end
|
380
400
|
|
381
401
|
# Overload the deep_clone function so that references to the project don't
|
@@ -465,6 +485,11 @@ class TaskJuggler
|
|
465
485
|
@attributes['yearlyworkingdays'].to_f
|
466
486
|
end
|
467
487
|
|
488
|
+
# Convert timeSlots to working days.
|
489
|
+
def slotsToDays(slots)
|
490
|
+
slots * @attributes['scheduleGranularity'] / (60 * 60 * dailyWorkingHours)
|
491
|
+
end
|
492
|
+
|
468
493
|
# call-seq:
|
469
494
|
# scenario(index) -> Scenario
|
470
495
|
# scenario(id) -> Scenario
|
@@ -573,6 +598,7 @@ class TaskJuggler
|
|
573
598
|
return false
|
574
599
|
end
|
575
600
|
|
601
|
+
@timeSheets.warnOnDelta if @warnTsDeltas
|
576
602
|
true
|
577
603
|
end
|
578
604
|
|
@@ -619,17 +645,39 @@ class TaskJuggler
|
|
619
645
|
true
|
620
646
|
end
|
621
647
|
|
622
|
-
def generateReport(reportId)
|
623
|
-
|
624
|
-
|
625
|
-
|
648
|
+
def generateReport(reportId, regExpMode)
|
649
|
+
reportList = regExpMode ? reportList = matchingReports(reportId) :
|
650
|
+
[ reportId ]
|
651
|
+
reportList.each do |id|
|
652
|
+
unless (report = @reports[id])
|
653
|
+
error('unknown_report_id',
|
654
|
+
"Request to generate unknown report #{id}")
|
655
|
+
end
|
656
|
+
Log.startProgressMeter("Report #{report.name}")
|
657
|
+
@reportContext = ReportContext.new(self, report)
|
658
|
+
report.generate
|
659
|
+
Log.stopProgressMeter
|
626
660
|
end
|
627
|
-
Log.startProgressMeter("Report #{report.name}")
|
628
|
-
@reportContext = ReportContext.new(self, report)
|
629
|
-
report.generate
|
630
|
-
Log.stopProgressMeter
|
631
661
|
end
|
632
662
|
|
663
|
+
def listReports(reportId, regExpMode)
|
664
|
+
reportList = regExpMode ? reportList = matchingReports(reportId) :
|
665
|
+
@reports[reportId] ? [ reportId ] : []
|
666
|
+
puts "No match for #{reportId}" if reportList.empty?
|
667
|
+
reportList.each do |id|
|
668
|
+
report = @reports[id]
|
669
|
+
formats = report.get('formats')
|
670
|
+
next if formats.empty?
|
671
|
+
|
672
|
+
puts sprintf("%-20s %-15s %s", id, formats.join(', '), report.name)
|
673
|
+
end
|
674
|
+
end
|
675
|
+
|
676
|
+
def checkTimeSheets
|
677
|
+
@timeSheets.check
|
678
|
+
end
|
679
|
+
|
680
|
+
|
633
681
|
####################################################################
|
634
682
|
# The following functions are not intended to be called from outside
|
635
683
|
# the TaskJuggler library. There is no guarantee that these
|
@@ -784,6 +832,7 @@ class TaskJuggler
|
|
784
832
|
def error(id, text)
|
785
833
|
message = Message.new(id, 'error', text)
|
786
834
|
@messageHandler.send(message)
|
835
|
+
raise TjException
|
787
836
|
end
|
788
837
|
|
789
838
|
protected
|
@@ -805,10 +854,14 @@ class TaskJuggler
|
|
805
854
|
i = 0
|
806
855
|
usedResources.each do |resource|
|
807
856
|
resource.prepareScheduling(scIdx)
|
857
|
+
resource.preScheduleCheck(scIdx)
|
808
858
|
i += 1
|
809
859
|
Log.progress((i.to_f / total) * 0.8)
|
810
860
|
end
|
811
861
|
|
862
|
+
resources.each { |resource| resource.setDirectReports(scIdx) }
|
863
|
+
resources.each { |resource| resource.setReports(scIdx) }
|
864
|
+
|
812
865
|
tasks.each { |task| task.prepareScheduling(scIdx) }
|
813
866
|
tasks.each { |task| task.Xref(scIdx) }
|
814
867
|
tasks.each { |task| task.propagateInitialValues(scIdx) }
|
@@ -834,16 +887,18 @@ class TaskJuggler
|
|
834
887
|
tasks.each { |task| task.calcCriticalness(scIdx) }
|
835
888
|
Log.progress(0.95)
|
836
889
|
tasks.each { |task| task.calcPathCriticalness(scIdx) }
|
890
|
+
Log.progress(0.99)
|
891
|
+
@timeSheets.check
|
837
892
|
Log.progress(1.0)
|
838
893
|
|
839
894
|
Log.stopProgressMeter
|
840
895
|
# This is used for debugging only
|
841
896
|
if false
|
842
897
|
resources.each do |resource|
|
843
|
-
puts resource
|
898
|
+
puts "#{resource}"
|
844
899
|
end
|
845
900
|
tasks.each do |task|
|
846
|
-
puts task
|
901
|
+
puts "#{task}"
|
847
902
|
end
|
848
903
|
end
|
849
904
|
end
|
@@ -864,6 +919,12 @@ class TaskJuggler
|
|
864
919
|
i += 1
|
865
920
|
Log.progress(0.5 + (i.to_f / total) * 0.5)
|
866
921
|
end
|
922
|
+
|
923
|
+
# This should be really fast so we don't log progess.
|
924
|
+
@resources.each do |resource|
|
925
|
+
resource.postScheduleCheck(scIdx)
|
926
|
+
end
|
927
|
+
|
867
928
|
Log.stopProgressMeter
|
868
929
|
end
|
869
930
|
|
@@ -949,6 +1010,17 @@ class TaskJuggler
|
|
949
1010
|
true
|
950
1011
|
end
|
951
1012
|
|
1013
|
+
private
|
1014
|
+
|
1015
|
+
def matchingReports(reportId)
|
1016
|
+
list = []
|
1017
|
+
@reports.each do |report|
|
1018
|
+
id = report.fullId
|
1019
|
+
list << id if Regexp.new(reportId) =~ id
|
1020
|
+
end
|
1021
|
+
list
|
1022
|
+
end
|
1023
|
+
|
952
1024
|
end
|
953
1025
|
|
954
1026
|
end
|
data/lib/ProjectFileParser.rb
CHANGED
@@ -165,6 +165,11 @@ class TaskJuggler
|
|
165
165
|
# attribute. @propertySet determines what property should be extended.
|
166
166
|
# _type_ is the attribute type, _default_ is the default value.
|
167
167
|
def extendPropertySetDefinition(type, default)
|
168
|
+
if @propertySet.knownAttribute?(@val[1])
|
169
|
+
error('extend_redefinition',
|
170
|
+
"The extended attribute #{@val[1]} has already been defined.")
|
171
|
+
end
|
172
|
+
|
168
173
|
# Determine the values for scenarioSpecific and inheritable.
|
169
174
|
inherit = false
|
170
175
|
scenarioSpecific = false
|
@@ -230,12 +235,15 @@ class TaskJuggler
|
|
230
235
|
# inheritance. +name+ is the name of the report, +type+ is the report
|
231
236
|
# type. +sourceFileInfo+ is a SourceFileInfo of the report definition. The
|
232
237
|
# method returns the newly created Report.
|
233
|
-
def newReport(name, type, sourceFileInfo)
|
234
|
-
|
235
|
-
|
236
|
-
|
238
|
+
def newReport(id, name, type, sourceFileInfo)
|
239
|
+
@reportCounter += 1
|
240
|
+
if name != '.'
|
241
|
+
if @project.reportByName(name)
|
242
|
+
error('report_redefinition',
|
243
|
+
"A report with the name #{name} has already been defined.")
|
244
|
+
end
|
237
245
|
end
|
238
|
-
@property = Report.new(@project, "report#{@reportCounter
|
246
|
+
@property = Report.new(@project, id || "report#{@reportCounter}",
|
239
247
|
name, nil)
|
240
248
|
@property.typeSpec = type
|
241
249
|
@property.sourceFileInfo = sourceFileInfo
|
@@ -281,7 +289,7 @@ class TaskJuggler
|
|
281
289
|
descr('No items')
|
282
290
|
# Or the list consists of one or more comma separated keywords.
|
283
291
|
pattern([ "!#{name}_AoN_ruleItems" ], lambda {
|
284
|
-
KeywordArray.new(@val)
|
292
|
+
KeywordArray.new(@val[0])
|
285
293
|
})
|
286
294
|
}
|
287
295
|
# Create the rule for the comma separated list.
|
@@ -303,6 +311,10 @@ class TaskJuggler
|
|
303
311
|
|
304
312
|
def listRule(name, listItem)
|
305
313
|
pattern([ "#{listItem}", "!#{name}" ], lambda {
|
314
|
+
if @val[1] && @val[1].include?(@val[0])
|
315
|
+
error('duplicate_in_list',
|
316
|
+
"Duplicate items in list.")
|
317
|
+
end
|
306
318
|
[ @val[0] ] + (@val[1].nil? ? [] : @val[1])
|
307
319
|
})
|
308
320
|
newRule(name) {
|
@@ -366,6 +378,7 @@ class TaskJuggler
|
|
366
378
|
# Add a reference to another pattern. This information is only used to
|
367
379
|
# generate the documentation for the patterns of this rule.
|
368
380
|
def also(seeAlso)
|
381
|
+
seeAlso = [ seeAlso ] unless seeAlso.is_a?(Array)
|
369
382
|
@cr.setSeeAlso(seeAlso)
|
370
383
|
end
|
371
384
|
|
data/lib/PropertyList.rb
CHANGED
@@ -162,6 +162,11 @@ class TaskJuggler
|
|
162
162
|
index
|
163
163
|
end
|
164
164
|
|
165
|
+
# Return the Array index of _item_ or nil.
|
166
|
+
def itemIndex(item)
|
167
|
+
@items.index(item)
|
168
|
+
end
|
169
|
+
|
165
170
|
# This function sets the index attribute of all the properties in the list.
|
166
171
|
# The index starts with 0 and increases for each property.
|
167
172
|
def index
|
@@ -225,8 +230,13 @@ class TaskJuggler
|
|
225
230
|
# If the scenario index is negative we have a non-scenario-specific
|
226
231
|
# attribute.
|
227
232
|
if @scenarioIdx[i] < 0
|
228
|
-
|
229
|
-
|
233
|
+
if @sortingCriteria[i] == 'id'
|
234
|
+
aVal = a.fullId
|
235
|
+
bVal = b.fullId
|
236
|
+
else
|
237
|
+
aVal = a.get(@sortingCriteria[i])
|
238
|
+
bVal = b.get(@sortingCriteria[i])
|
239
|
+
end
|
230
240
|
else
|
231
241
|
aVal = a[@sortingCriteria[i], @scenarioIdx[i]]
|
232
242
|
bVal = b[@sortingCriteria[i], @scenarioIdx[i]]
|
data/lib/PropertyTreeNode.rb
CHANGED
@@ -161,11 +161,25 @@ class TaskJuggler
|
|
161
161
|
next if scenario.parent.nil?
|
162
162
|
parentScenarioIdx = scenario.parent.sequenceNo - 1
|
163
163
|
# We copy only provided or inherited values from parent scenario when
|
164
|
-
# we don't have a provided
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
164
|
+
# we don't have a provided value in this scenario. Inherited values
|
165
|
+
# will be overwritten
|
166
|
+
parPro = provided(attrDef.id, parentScenarioIdx)
|
167
|
+
parInh = inherited(attrDef.id, parentScenarioIdx)
|
168
|
+
chiPro = provided(attrDef.id, scenarioIdx)
|
169
|
+
chiInh = inherited(attrDef.id, scenarioIdx)
|
170
|
+
# Parent/Child inheritance matrix
|
171
|
+
# P: Provided p: not provided
|
172
|
+
# I: Inherited i: not inherited
|
173
|
+
# -: Illegal N: Don't copy Y: Copy
|
174
|
+
#
|
175
|
+
# parent
|
176
|
+
# PI Pi pI pi
|
177
|
+
# child PI - - - -
|
178
|
+
# Pi - N N N
|
179
|
+
# pI - Y N N
|
180
|
+
# pi - Y Y N
|
181
|
+
if ((parPro || parInh) && !(chiPro || chiInh)) ||
|
182
|
+
(parPro && !chiPro && chiInh)
|
169
183
|
@scenarioAttributes[scenarioIdx][attrDef.id] =
|
170
184
|
@scenarioAttributes[parentScenarioIdx][attrDef.id].deep_clone
|
171
185
|
end
|
@@ -530,10 +544,10 @@ class TaskJuggler
|
|
530
544
|
rText = ''
|
531
545
|
@project['journal'].currentEntries(query.end, self, 0,
|
532
546
|
query.start).each do |entry|
|
533
|
-
rText += "
|
547
|
+
rText += "=== <nowiki>" + entry.headline + "</nowiki> ===\n"
|
534
548
|
rText += "''Reported on #{entry.date.to_s(query.timeFormat)}'' "
|
535
549
|
if entry.author
|
536
|
-
rText += "''by
|
550
|
+
rText += "''by <nowiki>#{entry.author.name}</nowiki>''"
|
537
551
|
end
|
538
552
|
rText += "\n\n"
|
539
553
|
if entry.summary
|
@@ -553,7 +567,7 @@ class TaskJuggler
|
|
553
567
|
begin
|
554
568
|
rti = RichText.new(rText, handlers).generateIntermediateFormat
|
555
569
|
rescue RichTextException => msg
|
556
|
-
$stderr.puts "Error
|
570
|
+
$stderr.puts "Error while processing Rich Text\n" +
|
557
571
|
"Line #{msg.lineNo}: #{msg.text}\n" +
|
558
572
|
"#{msg.line}"
|
559
573
|
return nil
|
@@ -561,7 +575,7 @@ class TaskJuggler
|
|
561
575
|
# No section numbers, please!
|
562
576
|
rti.sectionNumbers = false
|
563
577
|
# We use a special class to allow CSS formating.
|
564
|
-
rti.cssClass = '
|
578
|
+
rti.cssClass = 'tj_journal'
|
565
579
|
query.rti = rti
|
566
580
|
end
|
567
581
|
|
data/lib/Query.rb
CHANGED
@@ -34,12 +34,12 @@ class TaskJuggler
|
|
34
34
|
|
35
35
|
attr_accessor :project, :propertyType, :propertyId, :property,
|
36
36
|
:scopePropertyType, :scopePropertyId, :scopeProperty,
|
37
|
-
:attributeId, :scenarioIdx,
|
37
|
+
:attributeId, :scenarioIdx,
|
38
38
|
:timeFormat, :numberFormat, :currencyFormat, :costAccount,
|
39
39
|
:revenueAccount,
|
40
40
|
:loadUnit,
|
41
41
|
:ok, :errorMessage
|
42
|
-
attr_reader :end, :start
|
42
|
+
attr_reader :end, :endIdx, :start, :startIdx
|
43
43
|
attr_writer :sortable, :numerical, :string, :rti
|
44
44
|
|
45
45
|
# Create a new Query object. The _parameters_ need to be sufficent to
|
@@ -47,26 +47,66 @@ class TaskJuggler
|
|
47
47
|
def initialize(parameters = { })
|
48
48
|
ps = %w( project propertyType propertyId property scopePropertyId
|
49
49
|
scopeProperty attributeId scenario scenarioIdx
|
50
|
-
start end startIdx endIdx
|
51
50
|
loadUnit numberFormat currencyFormat timeFormat
|
52
51
|
costAccount revenueAccount)
|
53
52
|
ps.each do |p|
|
54
53
|
instance_variable_set('@' + p, parameters[p] ? parameters[p] : nil)
|
55
54
|
end
|
56
55
|
|
56
|
+
# instance_variable_set does not call writer functions. So we need to
|
57
|
+
# handle @start, @end, @startIdx and @endIdx separately.
|
58
|
+
%w( end endIdx start startIdx ).each do |p|
|
59
|
+
send(p + '=', parameters[p]) if parameters[p]
|
60
|
+
end
|
61
|
+
|
57
62
|
reset
|
58
63
|
end
|
59
64
|
|
60
|
-
#
|
65
|
+
# We probably need the start and end dates as TjTime and Scoreboard index.
|
66
|
+
# We store both, but we need to assure they are always in sync.
|
67
|
+
|
61
68
|
def start=(date)
|
62
|
-
|
63
|
-
|
69
|
+
if date.is_a?(TjTime)
|
70
|
+
@start = date
|
71
|
+
@startIdx = @project.dateToIdx(date, true)
|
72
|
+
#elsif date.is_a?(Fixnum)
|
73
|
+
# self.startIdx=(date)
|
74
|
+
else
|
75
|
+
raise "Unsupported type #{date.class}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def startIdx=(idx)
|
80
|
+
if idx.is_a?(Fixnum)
|
81
|
+
@startIdx = idx
|
82
|
+
@start = @project.idxToDate(idx)
|
83
|
+
#elsif idx.is_a?(TjTime)
|
84
|
+
# self.start=(idx)
|
85
|
+
else
|
86
|
+
raise "Unsupported type #{idx.class}"
|
87
|
+
end
|
64
88
|
end
|
65
89
|
|
66
|
-
# Reset the @endIdx when an end date is set.
|
67
90
|
def end=(date)
|
68
|
-
|
69
|
-
|
91
|
+
if date.is_a?(TjTime)
|
92
|
+
@end = date
|
93
|
+
@endIdx = @project.dateToIdx(date, true)
|
94
|
+
#elsif date.is_a?(Fixnum)
|
95
|
+
# self.endIdx=(date)
|
96
|
+
else
|
97
|
+
raise "Unsupported type #{date.class}"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def endIdx=(idx)
|
102
|
+
if idx.is_a?(Fixnum)
|
103
|
+
@endIdx = idx
|
104
|
+
@end = @project.idxToDate(idx)
|
105
|
+
#elsif idx.is_a?(TjTime)
|
106
|
+
# self.end=(idx)
|
107
|
+
else
|
108
|
+
raise "Unsupported type #{idx.class}"
|
109
|
+
end
|
70
110
|
end
|
71
111
|
|
72
112
|
# This method tries to resolve the query and return a result. In case it
|
@@ -114,8 +154,6 @@ class TaskJuggler
|
|
114
154
|
raise "Query cannot resolve scenario '#{@scenario}'"
|
115
155
|
end
|
116
156
|
end
|
117
|
-
@startIdx = @project.dateToIdx(@start, true) if @startIdx.nil? && @start
|
118
|
-
@endIdx = @project.dateToIdx(@end, true) - 1 if @endIdx.nil? && @end
|
119
157
|
|
120
158
|
queryMethodName = 'query_' + @attributeId
|
121
159
|
# First we check for non-scenario-specific query functions.
|
@@ -128,7 +166,7 @@ class TaskJuggler
|
|
128
166
|
else
|
129
167
|
# The result is a BaseAttribute
|
130
168
|
unless (@attr = @property.getAttribute(@attributeId, @scenarioIdx))
|
131
|
-
errorMessage = "Unknown attribute #{@attributeId} queried"
|
169
|
+
@errorMessage = "Unknown attribute #{@attributeId} queried"
|
132
170
|
return @ok = false
|
133
171
|
end
|
134
172
|
end
|
@@ -289,7 +327,7 @@ class TaskJuggler
|
|
289
327
|
# result data.
|
290
328
|
def reset
|
291
329
|
@attr = @numerical = @sortable = @string = @rti = nil
|
292
|
-
@ok =
|
330
|
+
@ok = true
|
293
331
|
@errorMessage = nil
|
294
332
|
end
|
295
333
|
|
data/lib/RTFReport.rb
CHANGED
@@ -34,11 +34,11 @@ class TaskJuggler
|
|
34
34
|
if args.nil? || (id = args['id']).nil?
|
35
35
|
error('rtp_report_id',
|
36
36
|
"Argument 'id' missing to specify the report to be used.")
|
37
|
-
nil
|
37
|
+
return nil
|
38
38
|
end
|
39
39
|
unless (report = @project.report(id))
|
40
40
|
error('rtp_report_unknown_id', "Unknown report #{id}")
|
41
|
-
nil
|
41
|
+
return nil
|
42
42
|
end
|
43
43
|
|
44
44
|
# Save the old report context record
|