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/examples/tutorial.tjp
CHANGED
@@ -286,6 +286,25 @@ navigator navbar {
|
|
286
286
|
hidereport 0
|
287
287
|
}
|
288
288
|
|
289
|
+
macro TaskTip [
|
290
|
+
tooltip istask() -8<-
|
291
|
+
'''Start: ''' <-query attribute='start'->
|
292
|
+
'''End: ''' <-query attribute='end'->
|
293
|
+
----
|
294
|
+
'''Resources:'''
|
295
|
+
|
296
|
+
<-query attribute='resources'->
|
297
|
+
----
|
298
|
+
'''Precursors: '''
|
299
|
+
|
300
|
+
<-query attribute='precursors'->
|
301
|
+
----
|
302
|
+
'''Followers: '''
|
303
|
+
|
304
|
+
<-query attribute='followers'->
|
305
|
+
->8-
|
306
|
+
]
|
307
|
+
|
289
308
|
textreport "" {
|
290
309
|
header -8<-
|
291
310
|
== Accounting Software Project ==
|
@@ -348,9 +367,8 @@ taskreport overview "" {
|
|
348
367
|
=== Original Project Plan ===
|
349
368
|
->8-
|
350
369
|
columns hierarchindex,
|
351
|
-
name
|
352
|
-
|
353
|
-
revenue, chart
|
370
|
+
name, start, end, effort, duration, cost,
|
371
|
+
revenue, chart { ${TaskTip} }
|
354
372
|
# For this report we like to have the abbreviated weekday in front
|
355
373
|
# of the date. %a is the tag for this.
|
356
374
|
timeformat "%a %Y-%m-%d"
|
@@ -415,7 +433,7 @@ taskreport development "" {
|
|
415
433
|
scenarios delayed
|
416
434
|
headline "Development - Resource Allocation Report"
|
417
435
|
columns hierarchindex, name, start, end, effort { title "Work" },
|
418
|
-
duration, chart { scale day width 500 }
|
436
|
+
duration, chart { ${TaskTip} scale day width 500 }
|
419
437
|
timeformat "%Y-%m-%d"
|
420
438
|
hideresource ~(isleaf() & isleaf_())
|
421
439
|
sortresources name.up
|
@@ -424,7 +442,8 @@ taskreport development "" {
|
|
424
442
|
# A list of all tasks with the percentage completed for each task
|
425
443
|
taskreport deliveries "" {
|
426
444
|
headline "Project Deliverables"
|
427
|
-
columns hierarchindex, name, start, end, note { width 150 }, complete,
|
445
|
+
columns hierarchindex, name, start, end, note { width 150 }, complete,
|
446
|
+
chart { ${TaskTip} }
|
428
447
|
taskroot AcSo.deliveries
|
429
448
|
hideresource 1
|
430
449
|
scenarios plan, delayed
|
@@ -447,7 +466,7 @@ resourcereport contactList "" {
|
|
447
466
|
resourcereport resourceGraph "" {
|
448
467
|
scenarios delayed
|
449
468
|
headline "Resource Allocation Graph"
|
450
|
-
columns no, name, effort, rate, weekly
|
469
|
+
columns no, name, effort, rate, weekly { ${TaskTip} }
|
451
470
|
loadunit shortauto
|
452
471
|
# We only like to show leaf tasks for leaf resources.
|
453
472
|
hidetask ~(isleaf() & isleaf_())
|
data/lib/Attributes.rb
CHANGED
@@ -194,9 +194,9 @@ class TaskJuggler
|
|
194
194
|
super
|
195
195
|
end
|
196
196
|
|
197
|
-
def to_s(query)
|
197
|
+
def to_s(query = nil)
|
198
198
|
if @value
|
199
|
-
@value.to_s(query.timeFormat)
|
199
|
+
@value.to_s(query ? query.timeFormat : '%Y-%m-%d')
|
200
200
|
else
|
201
201
|
'Error'
|
202
202
|
end
|
@@ -251,6 +251,10 @@ class TaskJuggler
|
|
251
251
|
@type.id + ' ' + @value.to_s + 'h'
|
252
252
|
end
|
253
253
|
|
254
|
+
def to_s(query)
|
255
|
+
query ? query.scaleDuration(query.project.slotsToDays(@value)) : @value
|
256
|
+
end
|
257
|
+
|
254
258
|
end
|
255
259
|
|
256
260
|
class FixnumAttribute < AttributeBase
|
data/lib/HTMLDocument.rb
CHANGED
@@ -22,10 +22,10 @@ class TaskJuggler
|
|
22
22
|
# When creating a HTMLDocument the caller can specify the type of HTML that
|
23
23
|
# will be used. The constructor then generates the proper XML declaration
|
24
24
|
# for it. :strict, :transitional and :frameset are supported for _docType_.
|
25
|
-
def initialize(docType = :
|
25
|
+
def initialize(docType = :strict)
|
26
26
|
super()
|
27
27
|
|
28
|
-
@elements << XMLBlob.new('<?xml version="1.0" encoding="
|
28
|
+
@elements << XMLBlob.new('<?xml version="1.0" encoding="UTF-8"?>')
|
29
29
|
case docType
|
30
30
|
when :strict
|
31
31
|
dtdRef = 'Strict'
|
@@ -53,6 +53,22 @@ class TaskJuggler
|
|
53
53
|
@html << element
|
54
54
|
end
|
55
55
|
|
56
|
+
# Generate the 'head' section of an HTML page.
|
57
|
+
def generateHead(title, metaTags = {})
|
58
|
+
self << (head = XMLElement.new('head'))
|
59
|
+
head << XMLNamedText.new(title, 'title')
|
60
|
+
head << XMLElement.new('meta', { 'http-equiv' => 'Content-Type',
|
61
|
+
'content' => 'text/html; charset=utf-8' },
|
62
|
+
true)
|
63
|
+
|
64
|
+
# Include optional meta tags.
|
65
|
+
metaTags.each do |name, content|
|
66
|
+
head << XMLElement.new('meta', { 'name' => name, 'content' => content },
|
67
|
+
true)
|
68
|
+
end
|
69
|
+
head
|
70
|
+
end
|
71
|
+
|
56
72
|
end
|
57
73
|
|
58
74
|
end
|
data/lib/Journal.rb
CHANGED
@@ -21,7 +21,7 @@ class TaskJuggler
|
|
21
21
|
class JournalEntry
|
22
22
|
|
23
23
|
attr_reader :date, :headline, :property, :sourceFileInfo
|
24
|
-
attr_accessor :author, :summary, :details, :alertLevel
|
24
|
+
attr_accessor :author, :summary, :details, :alertLevel, :timeSheetRecord
|
25
25
|
|
26
26
|
# Create a new JournalEntry object.
|
27
27
|
def initialize(journal, date, headline, property, sourceFileInfo = nil)
|
@@ -44,6 +44,9 @@ class TaskJuggler
|
|
44
44
|
@details = nil
|
45
45
|
# The alert level.
|
46
46
|
@alertLevel = 0
|
47
|
+
# A reference to a time sheet record that was used to create this
|
48
|
+
# JournalEntry object.
|
49
|
+
@timeSheetRecord = nil
|
47
50
|
|
48
51
|
# Add the new entry to the journal.
|
49
52
|
@journal.addEntry(self)
|
@@ -169,6 +172,46 @@ class TaskJuggler
|
|
169
172
|
@propertyToEntries[entry.property] << entry
|
170
173
|
end
|
171
174
|
|
175
|
+
# Return a list of all JournalEntry objects for the given _resource_ that
|
176
|
+
# are dated between _startDate_ and _endDate_, are for Task _task_ and
|
177
|
+
# have at least the alert level _alertLevel. If an optional parameter is
|
178
|
+
# nil, it always matches the entry.
|
179
|
+
def entriesByResource(resource, startDate = nil, endDate = nil,
|
180
|
+
task = nil, alertLevel = nil)
|
181
|
+
list = []
|
182
|
+
@entries.each do |entry|
|
183
|
+
if entry.author == resource &&
|
184
|
+
(startDate.nil? || entry.date > startDate) &&
|
185
|
+
(endDate.nil? || entry.date <= endDate) &&
|
186
|
+
(task.nil? || entry.property == task) &&
|
187
|
+
(alertLevel.nil? || entry.alertLevel >= alertLevel) &&
|
188
|
+
!entry.headline.empty?
|
189
|
+
list << entry
|
190
|
+
end
|
191
|
+
end
|
192
|
+
list
|
193
|
+
end
|
194
|
+
|
195
|
+
# Return a list of all JournalEntry objects for the given _task_ that
|
196
|
+
# are dated between _startDate_ and _endDate_, are from Author _resource_
|
197
|
+
# and have at least the alert level _alertLevel. If an optional parameter
|
198
|
+
# is nil, it always matches the entry.
|
199
|
+
def entriesByTask(task, startDate = nil, endDate = nil,
|
200
|
+
resource = nil, alertLevel = nil)
|
201
|
+
list = []
|
202
|
+
@entries.each do |entry|
|
203
|
+
if entry.property == task &&
|
204
|
+
(startDate.nil? || entry.date > startDate) &&
|
205
|
+
(endDate.nil? || entry.date <= endDate) &&
|
206
|
+
(resource.nil? || entry.author == resource) &&
|
207
|
+
(alertLevel.nil? || entry.alertLevel >= alertLevel) &&
|
208
|
+
!entry.headline.empty?
|
209
|
+
list << entry
|
210
|
+
end
|
211
|
+
end
|
212
|
+
list
|
213
|
+
end
|
214
|
+
|
172
215
|
def entries(startDate = nil, endDate = nil, property = nil,
|
173
216
|
alertLevel = nil)
|
174
217
|
list = []
|
@@ -176,7 +219,7 @@ class TaskJuggler
|
|
176
219
|
if (startDate.nil? || startDate <= entry.date) &&
|
177
220
|
(endDate.nil? || endDate >= entry.date) &&
|
178
221
|
(property.nil? || property == entry.property ||
|
179
|
-
entry.property.isChildOf?(property))
|
222
|
+
entry.property.isChildOf?(property)) &&
|
180
223
|
(alertLevel.nil? || alertLevel == entry.alertLevel)
|
181
224
|
list << entry
|
182
225
|
end
|
@@ -201,14 +244,14 @@ class TaskJuggler
|
|
201
244
|
# This function returns a list of entries that have all the exact same
|
202
245
|
# date and are the last entries before the deadline _date_. Only messages
|
203
246
|
# with at least the required alert level _minLevel_ are returned. Messages
|
204
|
-
# with alert level _minLevel_ must not be
|
247
|
+
# with alert level _minLevel_ must not be newer than _minDate_.
|
205
248
|
def currentEntries(date, property, minLevel, minDate)
|
206
249
|
pEntries = @propertyToEntries[property] ?
|
207
250
|
@propertyToEntries[property].last(date) : []
|
208
251
|
# Remove entries below the minium alert level or before the timeout
|
209
252
|
# date.
|
210
253
|
pEntries.delete_if { |e| e.alertLevel < minLevel || e.headline.empty? ||
|
211
|
-
(e.alertLevel == minLevel && e.date
|
254
|
+
(e.alertLevel == minLevel && e.date <= minDate) }
|
212
255
|
|
213
256
|
return [] if pEntries.empty?
|
214
257
|
|
data/lib/KeywordArray.rb
CHANGED
data/lib/KeywordDocumentation.rb
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
require 'HTMLDocument'
|
14
14
|
require 'RichText'
|
15
15
|
require 'TjpExample'
|
16
|
+
require 'TextFormatter'
|
16
17
|
require 'Project'
|
17
18
|
|
18
19
|
class TaskJuggler
|
@@ -149,7 +150,7 @@ class TaskJuggler
|
|
149
150
|
# string.
|
150
151
|
def to_s
|
151
152
|
tagW = 13
|
152
|
-
textW = 79
|
153
|
+
textW = 79
|
153
154
|
|
154
155
|
# Top line with multiple elements
|
155
156
|
str = "Keyword: #{@keyword} " +
|
@@ -172,17 +173,17 @@ class TaskJuggler
|
|
172
173
|
if arg.typeSpec.nil? || ('<' + arg.name + '>') == arg.typeSpec
|
173
174
|
indent = arg.name.length + 2
|
174
175
|
argStr += "#{arg.name}: " +
|
175
|
-
"#{format(indent, argText, textW -
|
176
|
+
"#{format(indent, argText, textW - tagW)}\n"
|
176
177
|
else
|
177
178
|
typeSpec = arg.typeSpec
|
178
179
|
typeSpec[0] = '['
|
179
180
|
typeSpec[-1] = ']'
|
180
181
|
indent = arg.name.length + typeSpec.size + 3
|
181
182
|
argStr += "#{arg.name} #{typeSpec}: " +
|
182
|
-
"#{format(indent, argText, textW -
|
183
|
+
"#{format(indent, argText, textW - tagW)}\n"
|
183
184
|
end
|
184
185
|
end
|
185
|
-
str +=
|
186
|
+
str += indent(tagW, argStr)
|
186
187
|
end
|
187
188
|
str += "\n"
|
188
189
|
end
|
@@ -266,10 +267,12 @@ class TaskJuggler
|
|
266
267
|
# Return a String that represents the keyword documentation in an XML
|
267
268
|
# formatted form.
|
268
269
|
def generateHTML(directory)
|
269
|
-
html = HTMLDocument.new(:
|
270
|
-
|
271
|
-
|
272
|
-
|
270
|
+
html = HTMLDocument.new(:strict)
|
271
|
+
head = html.generateHead(keyword,
|
272
|
+
{ 'description' => 'The TaskJuggler Manual',
|
273
|
+
'keywords' =>
|
274
|
+
'taskjuggler, project, management' })
|
275
|
+
head << @manual.generateStyleSheet
|
273
276
|
|
274
277
|
html << (body = XMLElement.new('body'))
|
275
278
|
body << @manual.generateHTMLHeader <<
|
@@ -472,75 +475,8 @@ class TaskJuggler
|
|
472
475
|
true
|
473
476
|
end
|
474
477
|
|
475
|
-
|
476
|
-
|
477
|
-
def format(indent, str, width)
|
478
|
-
# The result goes here.
|
479
|
-
out = ''
|
480
|
-
# Position in the currently generated line.
|
481
|
-
linePos = 0
|
482
|
-
# The currently processed word.
|
483
|
-
word = ''
|
484
|
-
# True if this is the first word in a line.
|
485
|
-
firstWord = true
|
486
|
-
# Currently processed position in the input String _str_.
|
487
|
-
i = 0
|
488
|
-
indentBuf = ''
|
489
|
-
while i < str.length
|
490
|
-
# If the current line has reached or exceeded the _width_ we generate
|
491
|
-
# a new line prefixed with the proper indentation.
|
492
|
-
if linePos >= width
|
493
|
-
out += "\n" + ' ' * indent
|
494
|
-
linePos = 0
|
495
|
-
firstWord = true
|
496
|
-
unless word.empty?
|
497
|
-
# Resume the input processing at the beginning of the word that
|
498
|
-
# did not fit into the old line anymore.
|
499
|
-
i -= word.length - 1
|
500
|
-
word = ''
|
501
|
-
next
|
502
|
-
end
|
503
|
-
end
|
504
|
-
|
505
|
-
if str[i] == ?\n
|
506
|
-
# If the input contains line breaks we generate line breaks as well.
|
507
|
-
# Insert the just finished word and wrap the line. We only put the
|
508
|
-
# indentation in a buffer as we don't know if more words will be
|
509
|
-
# following. We don't want to generate an indentation after the last
|
510
|
-
# line break.
|
511
|
-
out += indentBuf + word + "\n"
|
512
|
-
indentBuf = ' ' * indent
|
513
|
-
word = ''
|
514
|
-
linePos = 0
|
515
|
-
firstWord = true
|
516
|
-
elsif str[i] == ?\s
|
517
|
-
# We have finished processing a word of the input string.
|
518
|
-
unless indentBuf.empty?
|
519
|
-
# In case we have a pending indentation we now know that we can
|
520
|
-
# safely insert it. There will be more words following.
|
521
|
-
out += indentBuf
|
522
|
-
indentBuf = ''
|
523
|
-
end
|
524
|
-
# Append the word and initialize the word buffer with an single space.
|
525
|
-
out += word
|
526
|
-
firstWord = false
|
527
|
-
word = ' '
|
528
|
-
linePos += 1
|
529
|
-
else
|
530
|
-
# Just append the character to the word buffer and advance the
|
531
|
-
# position counter. We ignore spaces in front of the first word of
|
532
|
-
# each generated line.
|
533
|
-
unless str[i] == ' ' && firstWord
|
534
|
-
word << str[i]
|
535
|
-
end
|
536
|
-
linePos += 1
|
537
|
-
end
|
538
|
-
i += 1
|
539
|
-
end
|
540
|
-
unless word.empty? || indentBuf.empty?
|
541
|
-
out += indentBuf
|
542
|
-
end
|
543
|
-
out += word
|
478
|
+
def indent(width, str)
|
479
|
+
TextFormatter.new(0, width).indent(str)[width..-1]
|
544
480
|
end
|
545
481
|
|
546
482
|
# Generate the navigation bar.
|
@@ -593,6 +529,10 @@ class TaskJuggler
|
|
593
529
|
td
|
594
530
|
end
|
595
531
|
|
532
|
+
def format(indent, str, width)
|
533
|
+
TextFormatter.new(width, indent).format(str)[indent..-1]
|
534
|
+
end
|
535
|
+
|
596
536
|
end
|
597
537
|
|
598
538
|
end
|
data/lib/Log.rb
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
#
|
12
12
|
|
13
13
|
require 'singleton'
|
14
|
+
require 'monitor'
|
14
15
|
|
15
16
|
class TaskJuggler
|
16
17
|
|
@@ -18,7 +19,7 @@ class TaskJuggler
|
|
18
19
|
# trace messages are filtered based on their segment name and the nesting
|
19
20
|
# level of the segments. The class is a Singleton, so there is only one
|
20
21
|
# instance in the program.
|
21
|
-
class Log
|
22
|
+
class Log < Monitor
|
22
23
|
|
23
24
|
include Singleton
|
24
25
|
|
@@ -27,6 +28,7 @@ class TaskJuggler
|
|
27
28
|
@@segments = []
|
28
29
|
@@silent = true
|
29
30
|
@@progress = 0
|
31
|
+
@@progressMeter = ''
|
30
32
|
|
31
33
|
# Set the maximum nesting level that should be shown. Segments with a
|
32
34
|
# nesting level greater than _l_ will be silently dropped.
|
data/lib/LogFile.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
# encoding: UTF-8
|
3
|
+
#
|
4
|
+
# = LogFile.rb -- The TaskJuggler III Project Management Software
|
5
|
+
#
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
|
7
|
+
#
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of version 2 of the GNU General Public License as
|
10
|
+
# published by the Free Software Foundation.
|
11
|
+
#
|
12
|
+
|
13
|
+
require 'singleton'
|
14
|
+
|
15
|
+
class TaskJuggler
|
16
|
+
|
17
|
+
class LogFile
|
18
|
+
|
19
|
+
attr_accessor :logFile, :appName, :outputLevel, :logLevel
|
20
|
+
|
21
|
+
include Singleton
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
@logFile = 'logfile'
|
25
|
+
@appName = 'undefined'
|
26
|
+
@logLevel = 3
|
27
|
+
@outputLevel = 3
|
28
|
+
end
|
29
|
+
|
30
|
+
def debug(message)
|
31
|
+
$stdout.puts message if @outputLevel >= 4
|
32
|
+
log('DEBUG', message) if @logLevel >= 4
|
33
|
+
end
|
34
|
+
|
35
|
+
def info(message)
|
36
|
+
$stdout.puts message if @outputLevel >= 3
|
37
|
+
log('INFO', message) if @logLevel >= 3
|
38
|
+
end
|
39
|
+
|
40
|
+
def warning(message)
|
41
|
+
$stdout.puts message if @outputLevel >= 2
|
42
|
+
log('WARN', message) if @logLevel >= 2
|
43
|
+
end
|
44
|
+
|
45
|
+
def error(message)
|
46
|
+
$stderr.puts message if @outputLevel >= 1
|
47
|
+
log("ERROR", message) if @logLevel >= 1
|
48
|
+
end
|
49
|
+
|
50
|
+
def fatal(message)
|
51
|
+
$stderr.puts message if @outputLevel >= 0
|
52
|
+
log("FATAL", message) if @logLevel >= 0
|
53
|
+
exit 1
|
54
|
+
end
|
55
|
+
|
56
|
+
def log(type, message)
|
57
|
+
timeStamp = Time.new.strftime("%Y-%m-%d %H:%M:%S")
|
58
|
+
begin
|
59
|
+
@logFile.untaint
|
60
|
+
File.open(@logFile, 'a') do |f|
|
61
|
+
f.write("#{timeStamp} #{type} #{@appName}[#{Process.pid}]: " +
|
62
|
+
"#{message}\n")
|
63
|
+
end
|
64
|
+
rescue
|
65
|
+
$stderr.puts "Cannot write to log file #{@logFile}: #{$!}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
data/lib/LogicalExpression.rb
CHANGED
@@ -33,12 +33,6 @@ class TaskJuggler
|
|
33
33
|
@query = nil
|
34
34
|
end
|
35
35
|
|
36
|
-
# Switch the scopeProperty to property. We need this for the scopeProperty
|
37
|
-
# operating functions. The @scopeProperty is set to nil.
|
38
|
-
def flipProperties
|
39
|
-
@query.property, @query.scopeProperty = @query.scopeProperty, nil
|
40
|
-
end
|
41
|
-
|
42
36
|
# This function triggers the evaluation of the expression. _property_ is the
|
43
37
|
# PropertyTreeNode that should be used for the evaluation. _scopeProperty_
|
44
38
|
# is the PropertyTreeNode that describes the scope. It may be nil.
|
@@ -51,12 +45,13 @@ class TaskJuggler
|
|
51
45
|
return res != 0
|
52
46
|
end
|
53
47
|
|
54
|
-
#
|
55
|
-
|
48
|
+
# Dump the LogicalExpression as a String. If _query_ is provided, it will
|
49
|
+
# show the actual values, otherwise just the variable names.
|
50
|
+
def to_s(query = nil)
|
56
51
|
if @sourceFileInfo.nil?
|
57
|
-
"#{@operation}"
|
52
|
+
"#{@operation.to_s(query)}"
|
58
53
|
else
|
59
|
-
str = "#{@sourceFileInfo} #{@operation}"
|
54
|
+
str = "#{@sourceFileInfo} #{@operation.to_s(query)}"
|
60
55
|
end
|
61
56
|
end
|
62
57
|
|
data/lib/LogicalFunction.rb
CHANGED
@@ -37,6 +37,9 @@ class TaskJuggler
|
|
37
37
|
# Create a new LogicalFunction. _opnd_ is the name of the function.
|
38
38
|
def initialize(opnd)
|
39
39
|
if opnd[-1] == ?_
|
40
|
+
# Function names with a trailing _ are like their counterparts without
|
41
|
+
# the _. But during evaluation the property and the scope properties
|
42
|
+
# will be switched.
|
40
43
|
@name = opnd[0..-2]
|
41
44
|
@invertProperties = true
|
42
45
|
else
|
@@ -66,11 +69,6 @@ class TaskJuggler
|
|
66
69
|
# Evaluate the function by calling it with the arguments.
|
67
70
|
def eval(expr)
|
68
71
|
args = []
|
69
|
-
if @invertProperties
|
70
|
-
return true unless expr.query.scopeProperty
|
71
|
-
expr = expr.dup
|
72
|
-
expr.flipProperties
|
73
|
-
end
|
74
72
|
# Call the function and return the result.
|
75
73
|
send(name, expr, @arguments)
|
76
74
|
end
|
@@ -82,9 +80,19 @@ class TaskJuggler
|
|
82
80
|
|
83
81
|
private
|
84
82
|
|
83
|
+
# Return the property and scope property as determined by the
|
84
|
+
# @invertProperties setting.
|
85
|
+
def properties(expr)
|
86
|
+
if @invertProperties
|
87
|
+
return expr.query.scopeProperty, nil
|
88
|
+
else
|
89
|
+
return expr.query.property, expr.query.scopeProperty
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
85
93
|
def hasalert(expr, args)
|
94
|
+
property, scopeProperty = properties(expr)
|
86
95
|
query = expr.query
|
87
|
-
property = query.property
|
88
96
|
project = property.project
|
89
97
|
date = project.reportContext.report.get('end')
|
90
98
|
!project['journal'].currentEntries(query.end, property,
|
@@ -92,10 +100,10 @@ class TaskJuggler
|
|
92
100
|
end
|
93
101
|
|
94
102
|
def isactive(expr, args)
|
103
|
+
property, scopeProperty = properties(expr)
|
95
104
|
# The result can only be true when called for a Task property.
|
96
|
-
return false unless
|
97
|
-
|
98
|
-
scopeProperty = expr.query.scopeProperty
|
105
|
+
return false unless property.is_a?(Task) ||
|
106
|
+
property.is_a?(Resource)
|
99
107
|
project = property.project
|
100
108
|
# 1st arg must be a scenario index.
|
101
109
|
if (scenarioIdx = project.scenarioIdx(args[0])).nil?
|
@@ -109,9 +117,10 @@ class TaskJuggler
|
|
109
117
|
end
|
110
118
|
|
111
119
|
def isdependencyof(expr, args)
|
120
|
+
property, scopeProperty = properties(expr)
|
112
121
|
# The result can only be true when called for a Task property.
|
113
|
-
return false unless
|
114
|
-
project =
|
122
|
+
return false unless property.is_a?(Task)
|
123
|
+
project = property.project
|
115
124
|
# 1st arg must be a task ID.
|
116
125
|
return false if (task = project.task(args[0])).nil?
|
117
126
|
# 2nd arg must be a scenario index.
|
@@ -119,12 +128,13 @@ class TaskJuggler
|
|
119
128
|
# 3rd arg must be an integer number.
|
120
129
|
return false unless args[2].is_a?(Fixnum)
|
121
130
|
|
122
|
-
|
131
|
+
property.isDependencyOf(scenarioIdx, task, args[2])
|
123
132
|
end
|
124
133
|
|
125
134
|
def isdutyof(expr, args)
|
135
|
+
property, scopeProperty = properties(expr)
|
126
136
|
# The result can only be true when called for a Task property.
|
127
|
-
return false unless (task =
|
137
|
+
return false unless (task = property).is_a?(Task)
|
128
138
|
project = task.project
|
129
139
|
# 1st arg must be a resource ID.
|
130
140
|
return false if (resource = project.resource(args[0])).nil?
|
@@ -135,12 +145,15 @@ class TaskJuggler
|
|
135
145
|
end
|
136
146
|
|
137
147
|
def isleaf(expr, args)
|
138
|
-
expr
|
148
|
+
property, scopeProperty = properties(expr)
|
149
|
+
return false unless property
|
150
|
+
property.leaf?
|
139
151
|
end
|
140
152
|
|
141
153
|
def isongoing(expr, args)
|
154
|
+
property, scopeProperty = properties(expr)
|
142
155
|
# The result can only be true when called for a Task property.
|
143
|
-
return false unless (task =
|
156
|
+
return false unless (task = property).is_a?(Task)
|
144
157
|
project = task.project
|
145
158
|
# 1st arg must be a scenario index.
|
146
159
|
if (scenarioIdx = project.scenarioIdx(args[0])).nil?
|
@@ -159,15 +172,18 @@ class TaskJuggler
|
|
159
172
|
end
|
160
173
|
|
161
174
|
def isresource(expr, args)
|
162
|
-
|
175
|
+
property, scopeProperty = properties(expr)
|
176
|
+
property.is_a?(Resource)
|
163
177
|
end
|
164
178
|
|
165
179
|
def istask(expr, args)
|
166
|
-
|
180
|
+
property, scopeProperty = properties(expr)
|
181
|
+
property.is_a?(Task)
|
167
182
|
end
|
168
183
|
|
169
184
|
def treelevel(expr, args)
|
170
|
-
|
185
|
+
property, scopeProperty = properties(expr)
|
186
|
+
property.level + 1
|
171
187
|
end
|
172
188
|
|
173
189
|
end
|