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
@@ -0,0 +1,231 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
# encoding: UTF-8
|
3
|
+
#
|
4
|
+
# = StatusSheetReport.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 'reports/ReportBase'
|
14
|
+
|
15
|
+
class TaskJuggler
|
16
|
+
|
17
|
+
class ManagerStatusRecord
|
18
|
+
|
19
|
+
attr_reader :resource, :responsibilities
|
20
|
+
|
21
|
+
def initialize(resource)
|
22
|
+
# The Resource record of the manager
|
23
|
+
@resource = resource
|
24
|
+
# A list of Task objects with their JournalEntry records. Stored as
|
25
|
+
# Array of ManagerResponsibilities objects.
|
26
|
+
@responsibilities = []
|
27
|
+
end
|
28
|
+
|
29
|
+
def sort!(taskList)
|
30
|
+
@responsibilities.sort! do |r1, r2|
|
31
|
+
taskList.itemIndex(r1.task) <=> taskList.itemIndex(r2.task)
|
32
|
+
end
|
33
|
+
@responsibilities.each { |r| r.sort!(taskList) }
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
class ManagerResponsibilities
|
39
|
+
|
40
|
+
attr_reader :task, :journalEntries
|
41
|
+
|
42
|
+
def initialize(task, journalEntries)
|
43
|
+
@task = task
|
44
|
+
@journalEntries = journalEntries.dup
|
45
|
+
end
|
46
|
+
|
47
|
+
def sort!(taskList)
|
48
|
+
@journalEntries.sort! do |e1, e2|
|
49
|
+
taskList.itemIndex(e1.property) <=> taskList.itemIndex(e2.property)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
# This specialization of ReportBase implements a template generator for
|
56
|
+
# status sheets. The status sheet is structured using the TJP file syntax.
|
57
|
+
class StatusSheetReport < ReportBase
|
58
|
+
|
59
|
+
# Create a new object and set some default values.
|
60
|
+
def initialize(report)
|
61
|
+
super(report)
|
62
|
+
|
63
|
+
# A list of ManagerStatusRecord objects, one for each manager.
|
64
|
+
@managers = []
|
65
|
+
end
|
66
|
+
|
67
|
+
# In the future we might want to generate other output than TJP synatx. So
|
68
|
+
# we generate an abstract version of the status sheet first.
|
69
|
+
def generateIntermediateFormat
|
70
|
+
super
|
71
|
+
|
72
|
+
# Prepare the resource list.
|
73
|
+
resourceList = PropertyList.new(@project.resources)
|
74
|
+
resourceList.setSorting(@report.get('sortResources'))
|
75
|
+
resourceList = filterResourceList(resourceList, nil,
|
76
|
+
@report.get('hideResource'),
|
77
|
+
@report.get('rollupResource'))
|
78
|
+
# Prepare a template for the Query we will use to get all the data.
|
79
|
+
scenarioIdx = a('scenarios')[0]
|
80
|
+
queryAttrs = { 'project' => @project,
|
81
|
+
'scopeProperty' => nil,
|
82
|
+
'scenarioIdx' => scenarioIdx,
|
83
|
+
'loadUnit' => a('loadUnit'),
|
84
|
+
'numberFormat' => a('numberFormat'),
|
85
|
+
'timeFormat' => a('timeFormat'),
|
86
|
+
'currencyFormat' => a('currencyFormat'),
|
87
|
+
'start' => a('start'), 'end' => a('end'),
|
88
|
+
'costAccount' => a('costAccount'),
|
89
|
+
'revenueAccount' => a('revenueAccount') }
|
90
|
+
resourceList.query = Query.new(queryAttrs)
|
91
|
+
resourceList.sort!
|
92
|
+
|
93
|
+
# Prepare the task list.
|
94
|
+
taskList = PropertyList.new(@project.tasks)
|
95
|
+
taskList.setSorting(@report.get('sortTasks'))
|
96
|
+
taskList = filterTaskList(taskList, nil, @report.get('hideTask'),
|
97
|
+
@report.get('rollupTask'))
|
98
|
+
taskList.sort!
|
99
|
+
|
100
|
+
resourceList.each do |resource|
|
101
|
+
# Status sheets only make sense for leaf resources.
|
102
|
+
next unless resource.leaf?
|
103
|
+
|
104
|
+
# Collect a list of tasks that the Resource is responsible for and
|
105
|
+
# don't have a parent task that the Resource is responsible for.
|
106
|
+
topLevelTasks = []
|
107
|
+
taskList.each do |task|
|
108
|
+
if task['responsible', scenarioIdx].include?(resource) &&
|
109
|
+
(task.parent.nil? ||
|
110
|
+
!task.parent['responsible', scenarioIdx].include?(resource))
|
111
|
+
topLevelTasks << task
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
next if topLevelTasks.empty?
|
116
|
+
|
117
|
+
# Store the list of top-level responsibilities.
|
118
|
+
@managers << (manager = ManagerStatusRecord.new(resource))
|
119
|
+
|
120
|
+
topLevelTasks.each do |task|
|
121
|
+
entries = @project['journal'].entries(a('start'), a('end'), task)
|
122
|
+
# Get a list of all current Entries of this task. This list may not
|
123
|
+
# contain all entries of the previous list, but it will for sure
|
124
|
+
# contain older entries with higher alert levels.
|
125
|
+
oldEntries = @project['journal'].currentEntries(a('end'), task,
|
126
|
+
0, a('start'))
|
127
|
+
# Remove entries that are in both lists.
|
128
|
+
oldEntries.delete_if { |e| entries.include?(e) }
|
129
|
+
# Combine the list with oldEntries going first.
|
130
|
+
entries = oldEntries + entries
|
131
|
+
next if entries.empty?
|
132
|
+
|
133
|
+
manager.responsibilities << ManagerResponsibilities.new(task, entries)
|
134
|
+
end
|
135
|
+
# Sort the responsibilities list according to the original taskList.
|
136
|
+
manager.sort!(taskList)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# Generate a time sheet in TJP syntax format.
|
141
|
+
def to_tjp
|
142
|
+
|
143
|
+
# This String will hold the result.
|
144
|
+
@file = ''
|
145
|
+
|
146
|
+
# Iterate over all the ManagerStatusRecord objects.
|
147
|
+
@managers.each do |manager|
|
148
|
+
resource = manager.resource
|
149
|
+
@file << "# --------8<--------8<--------\n"
|
150
|
+
# Generate the time sheet header
|
151
|
+
@file << "statussheet #{resource.fullId} " +
|
152
|
+
"#{a('start')} - #{a('end')} {\n\n"
|
153
|
+
|
154
|
+
if manager.responsibilities.empty?
|
155
|
+
# If there were no assignments, just write a comment.
|
156
|
+
@file << " # This resource is not responsible for any task.\n\n"
|
157
|
+
else
|
158
|
+
manager.responsibilities.each do |responsibility|
|
159
|
+
task = responsibility.task
|
160
|
+
@file << " # Task: #{task.name}\n"
|
161
|
+
|
162
|
+
responsibility.journalEntries.each do |entry|
|
163
|
+
task = entry.property
|
164
|
+
@file << " task #{task.fullId} {\n"
|
165
|
+
alertLevel = @project['alertLevels'][entry.alertLevel][0]
|
166
|
+
@file << " # status #{alertLevel} \"#{entry.headline}\" {\n"
|
167
|
+
@file << " # # Date: #{entry.date}\n"
|
168
|
+
if (tsRecord = entry.timeSheetRecord)
|
169
|
+
@file << " # # "
|
170
|
+
@file << "Work: #{tsRecord.actualWorkPercent.to_i}% "
|
171
|
+
if tsRecord.actualWorkPercent != tsRecord.planWorkPercent
|
172
|
+
@file << "(#{tsRecord.planWorkPercent.to_i}%) "
|
173
|
+
end
|
174
|
+
if tsRecord.remaining
|
175
|
+
@file << " Remaining: #{tsRecord.actualRemaining}d "
|
176
|
+
if tsRecord.actualRemaining != tsRecord.planRemaining
|
177
|
+
@file << "(#{tsRecord.planRemaining}d) "
|
178
|
+
end
|
179
|
+
else
|
180
|
+
@file << " End: " +
|
181
|
+
"#{tsRecord.actualEnd.to_s(a('timeFormat'))} "
|
182
|
+
if tsRecord.actualEnd != tsRecord.planEnd
|
183
|
+
@file << "(#{tsRecord.planEnd.to_s(a('timeFormat'))}) "
|
184
|
+
end
|
185
|
+
end
|
186
|
+
@file << "\n"
|
187
|
+
end
|
188
|
+
@file << " # author #{entry.author.fullId}\n"
|
189
|
+
if entry.summary
|
190
|
+
@file << " # summary -8<-\n" +
|
191
|
+
indentBlock(4, entry.summary.richText.inputText) +
|
192
|
+
" # ->8-\n"
|
193
|
+
end
|
194
|
+
if entry.details
|
195
|
+
@file << " # details -8<-\n" +
|
196
|
+
indentBlock(4, entry.details.richText.inputText) +
|
197
|
+
" # ->8-\n"
|
198
|
+
end
|
199
|
+
@file << " # }\n }\n\n"
|
200
|
+
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
@file << "}\n# -------->8-------->8--------\n\n"
|
205
|
+
end
|
206
|
+
@file
|
207
|
+
end
|
208
|
+
|
209
|
+
private
|
210
|
+
|
211
|
+
def indentBlock(indent, text)
|
212
|
+
indentation = ' ' * indent + '# '
|
213
|
+
buffer = indentation
|
214
|
+
out = ''
|
215
|
+
text.each_utf8_char do |c|
|
216
|
+
unless buffer.empty?
|
217
|
+
out += buffer
|
218
|
+
buffer = ''
|
219
|
+
end
|
220
|
+
out << c
|
221
|
+
buffer = indentation if c == "\n"
|
222
|
+
end
|
223
|
+
# Make sure we always have a trailing line break
|
224
|
+
out += "\n" unless out[-1] == "\n"
|
225
|
+
out
|
226
|
+
end
|
227
|
+
|
228
|
+
end
|
229
|
+
|
230
|
+
end
|
231
|
+
|
data/lib/reports/TableReport.rb
CHANGED
@@ -38,10 +38,13 @@ class TaskJuggler
|
|
38
38
|
'effortdone' => [ 'Effort Done', true, :right, true ],
|
39
39
|
'effortleft' => [ 'Effort Left', true, :right, true ],
|
40
40
|
'freetime' => [ 'Free Time', true, :right, true ],
|
41
|
+
'followers' => [ 'Followers', false, :left, true ],
|
41
42
|
'id' => [ 'Id', false, :left, false ],
|
43
|
+
'journal' => [ 'Journal', false, :left, false ],
|
42
44
|
'line' => [ 'Line No.', false, :right, false ],
|
43
45
|
'name' => [ 'Name', true, :left, false ],
|
44
46
|
'no' => [ 'No.', false, :right, false ],
|
47
|
+
'precursors' => [ 'Precursors', false, :left, true ],
|
45
48
|
'rate' => [ 'Rate', true, :right, true ],
|
46
49
|
'resources' => [ 'Resources', false, :left, true ],
|
47
50
|
'responsible' => [ 'Responsible', false, :left, true ],
|
@@ -52,12 +55,13 @@ class TaskJuggler
|
|
52
55
|
'wbs' => [ 'WBS', false, :left, false ]
|
53
56
|
}
|
54
57
|
@@propertiesByType = {
|
55
|
-
# Type
|
56
|
-
DateAttribute
|
57
|
-
FixnumAttribute
|
58
|
-
FloatAttribute
|
59
|
-
|
60
|
-
|
58
|
+
# Type Indent Align
|
59
|
+
DateAttribute => [ false, :left ],
|
60
|
+
FixnumAttribute => [ false, :right ],
|
61
|
+
FloatAttribute => [ false, :right ],
|
62
|
+
ResourceListAttribute => [ false, :left ],
|
63
|
+
RichTextAttribute => [ false, :left ],
|
64
|
+
StringAttribute => [ false, :left ]
|
61
65
|
}
|
62
66
|
# Generate a new TableReport object.
|
63
67
|
def initialize(report)
|
@@ -76,57 +80,37 @@ class TaskJuggler
|
|
76
80
|
super
|
77
81
|
end
|
78
82
|
|
79
|
-
|
80
|
-
|
81
83
|
# Turn the TableReport into an equivalent HTML element tree.
|
82
84
|
def to_html
|
83
85
|
html = []
|
84
86
|
|
85
87
|
html << rt_to_html('header')
|
86
|
-
html << (
|
87
|
-
'cellspacing' => '2', 'border' => '0',
|
88
|
-
'cellpadding' => '0', 'align' => 'center',
|
89
|
-
'class' => 'tjtable'))
|
90
|
-
|
91
|
-
# The headline is put in a sub-table to appear bigger.
|
92
|
-
if a('headline')
|
93
|
-
table << (thead = XMLElement.new('thead'))
|
94
|
-
thead << (tr = XMLElement.new('tr'))
|
95
|
-
tr << (td = XMLElement.new('td'))
|
96
|
-
td << (table1 = XMLElement.new('table', 'summary' => 'headline',
|
97
|
-
'cellspacing' => '1', 'border' => '0',
|
98
|
-
'cellpadding' => '5',
|
99
|
-
'align' => 'center', 'width' => '100%'))
|
100
|
-
table1 << (tr1 = XMLElement.new('tr'))
|
101
|
-
tr1 << (td1 = XMLElement.new('td', 'align' => 'center',
|
102
|
-
'style' => 'font-size:16px; ' +
|
103
|
-
'font-weight:bold; ' +
|
104
|
-
'padding:5px',
|
105
|
-
'class' => 'tabfront'))
|
106
|
-
td1 << a('headline').to_html
|
107
|
-
end
|
88
|
+
html << (tableFrame = generateHtmlTableFrame)
|
108
89
|
|
109
90
|
# Now generate the actual table with the data.
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
91
|
+
tableFrame << generateHtmlTableRow do
|
92
|
+
td = XMLElement.new('td')
|
93
|
+
td << @table.to_html
|
94
|
+
td
|
95
|
+
end
|
114
96
|
|
115
97
|
# Embedd the caption as RichText into the table footer.
|
116
98
|
if a('caption')
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
99
|
+
tableFrame << generateHtmlTableRow do
|
100
|
+
td = XMLElement.new('td')
|
101
|
+
td << (div = XMLElement.new('div', 'class' => 'tj_table_caption'))
|
102
|
+
a('caption').sectionNumbers = false
|
103
|
+
div << a('caption').to_html
|
104
|
+
td
|
105
|
+
end
|
123
106
|
end
|
124
107
|
|
125
|
-
#
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
108
|
+
# The legend.
|
109
|
+
tableFrame << generateHtmlTableRow do
|
110
|
+
td = XMLElement.new('td')
|
111
|
+
td << @legend.to_html
|
112
|
+
td
|
113
|
+
end
|
130
114
|
|
131
115
|
html << rt_to_html('footer')
|
132
116
|
html
|
@@ -553,10 +537,8 @@ class TaskJuggler
|
|
553
537
|
# The GanttChart can be reached via the special variable of the column
|
554
538
|
# header.
|
555
539
|
chart = columnDef.column.cell1.special
|
556
|
-
GanttLine.new(chart,
|
557
|
-
|
558
|
-
(line.subLineNo - 1) * (line.height + 1),
|
559
|
-
line.height)
|
540
|
+
GanttLine.new(chart, query, (line.subLineNo - 1) * (line.height + 1),
|
541
|
+
line.height, a('selfcontained') ? nil : columnDef.tooltip)
|
560
542
|
return true
|
561
543
|
# The calendar cells can be all generated by the same function. But we
|
562
544
|
# need to use different parameters.
|
@@ -704,6 +686,8 @@ class TaskJuggler
|
|
704
686
|
else
|
705
687
|
nil
|
706
688
|
end
|
689
|
+
cell.iconTooltip = RichText.new("'''ID:''' #{property.fullId}").
|
690
|
+
generateIntermediateFormat
|
707
691
|
when 'no'
|
708
692
|
cell.text = line.no.to_s
|
709
693
|
when 'wbs'
|
@@ -742,7 +726,7 @@ class TaskJuggler
|
|
742
726
|
# in this line. _line_ is the @table line. _t_ is the start date for the
|
743
727
|
# calendar. _sameTimeNextFunc_ is the function that will move the date to
|
744
728
|
# the next cell.
|
745
|
-
def genCalChartTaskCell(
|
729
|
+
def genCalChartTaskCell(origQuery, line, columnDef, t, sameTimeNextFunc)
|
746
730
|
task = line.property
|
747
731
|
# Find out if we have an enclosing resource scope.
|
748
732
|
if line.scopeLine && line.scopeLine.property.is_a?(Resource)
|
@@ -753,27 +737,34 @@ class TaskJuggler
|
|
753
737
|
|
754
738
|
# Get the interval of the task. In case a date is invalid due to a
|
755
739
|
# scheduling problem, we use the full project interval.
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
@project['end'] :
|
740
|
+
taskStart = task['start', origQuery.scenarioIdx]
|
741
|
+
taskEnd = task['end', origQuery.scenarioIdx]
|
742
|
+
taskIv = Interval.new(taskStart.nil? ? @project['start'] : taskStart,
|
743
|
+
taskEnd.nil? ? @project['end'] : taskEnd)
|
760
744
|
|
761
745
|
firstCell = nil
|
762
746
|
while t < @end
|
763
|
-
#
|
764
|
-
|
765
|
-
|
747
|
+
# We modify the start and end dates to match the cell boundaries. So
|
748
|
+
# we need to make sure we don't modify the original Query but our own
|
749
|
+
# copies.
|
750
|
+
query = origQuery.dup
|
766
751
|
# call TjTime::sameTimeNext... function
|
767
752
|
nextT = t.send(sameTimeNextFunc)
|
768
753
|
cellIv = Interval.new(t, nextT)
|
769
754
|
case columnDef.content
|
770
755
|
when 'empty'
|
756
|
+
# Create a new cell
|
757
|
+
cell = newCell(query, line)
|
771
758
|
# We only generate cells will different background colors.
|
772
759
|
when 'load'
|
773
760
|
query.attributeId = 'effort'
|
774
|
-
query.
|
775
|
-
query.
|
761
|
+
query.start = t
|
762
|
+
query.end = nextT
|
776
763
|
query.process
|
764
|
+
|
765
|
+
# Create a new cell
|
766
|
+
cell = newCell(query, line)
|
767
|
+
|
777
768
|
# To increase readability, we don't show 0.0 values.
|
778
769
|
cell.text = query.to_s if query.to_num != 0.0
|
779
770
|
else
|
@@ -782,10 +773,16 @@ class TaskJuggler
|
|
782
773
|
|
783
774
|
# Determine cell category (mostly the background color)
|
784
775
|
if cellIv.overlaps?(taskIv)
|
776
|
+
# The cell is either a container or leaf task
|
785
777
|
cell.category = task.container? ? 'calconttask' : 'caltask'
|
778
|
+
# If the user has requested a custom tooltip, add it to each task cell.
|
779
|
+
cell.tooltip = columnDef.tooltip.getPattern(query) || nil
|
780
|
+
cell.showTooltipHint = false
|
786
781
|
elsif !@project.isWorkingTime(cellIv)
|
782
|
+
# The cell is a vacation cell.
|
787
783
|
cell.category = 'offduty'
|
788
784
|
else
|
785
|
+
# The cell is just filled with the background color.
|
789
786
|
cell.category = 'taskcell'
|
790
787
|
end
|
791
788
|
cell.category += line.property.get('index') % 2 == 1 ? '1' : '2'
|
@@ -808,7 +805,7 @@ class TaskJuggler
|
|
808
805
|
# reported in this line. _line_ is the @table line. _t_ is the start date
|
809
806
|
# for the calendar. _sameTimeNextFunc_ is the function that will move the
|
810
807
|
# date to the next cell.
|
811
|
-
def genCalChartResourceCell(
|
808
|
+
def genCalChartResourceCell(origQuery, line, columnDef, t,
|
812
809
|
sameTimeNextFunc)
|
813
810
|
resource = line.property
|
814
811
|
# Find out if we have an enclosing task scope.
|
@@ -816,17 +813,21 @@ class TaskJuggler
|
|
816
813
|
task = line.scopeLine.property
|
817
814
|
# Get the interval of the task. In case a date is invalid due to a
|
818
815
|
# scheduling problem, we use the full project interval.
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
@project['end'] : task['end', query.scenarioIdx])
|
816
|
+
taskStart = task['start', origQuery.scenarioIdx]
|
817
|
+
taskEnd = task['end', origQuery.scenarioIdx]
|
818
|
+
taskIv = Interval.new(taskStart.nil? ? @project['start'] : taskStart,
|
819
|
+
taskEnd.nil? ? @project['end'] : taskEnd)
|
824
820
|
else
|
825
821
|
task = nil
|
826
822
|
end
|
827
823
|
|
828
824
|
firstCell = nil
|
829
825
|
while t < @end
|
826
|
+
# We modify the start and end dates to match the cell boundaries. So
|
827
|
+
# we need to make sure we don't modify the original Query but our own
|
828
|
+
# copies.
|
829
|
+
query = origQuery.dup
|
830
|
+
|
830
831
|
# Create a new cell
|
831
832
|
cell = newCell(query, line)
|
832
833
|
|
@@ -868,12 +869,17 @@ class TaskJuggler
|
|
868
869
|
raise "Unknown column content #{column.content}"
|
869
870
|
end
|
870
871
|
|
872
|
+
# Set the tooltip for the cell. We might delete it again.
|
873
|
+
cell.tooltip = columnDef.tooltip.getPattern(query) || nil
|
874
|
+
cell.showTooltipHint = false
|
875
|
+
|
871
876
|
# Determine cell category (mostly the background color)
|
872
877
|
cell.category = if task
|
873
878
|
if cellIv.overlaps?(taskIv)
|
874
879
|
if workLoadTask > 0.0 && freeLoad == 0.0
|
875
880
|
'busy'
|
876
881
|
elsif workLoad == 0.0 && freeLoad == 0.0
|
882
|
+
cell.tooltip = nil
|
877
883
|
'offduty'
|
878
884
|
else
|
879
885
|
'loaded'
|
@@ -882,8 +888,10 @@ class TaskJuggler
|
|
882
888
|
if freeLoad > 0.0
|
883
889
|
'free'
|
884
890
|
elsif workLoad == 0.0 && freeLoad == 0.0
|
891
|
+
cell.tooltip = nil
|
885
892
|
'offduty'
|
886
893
|
else
|
894
|
+
cell.tooltip = nil
|
887
895
|
'resourcecell'
|
888
896
|
end
|
889
897
|
end
|
@@ -895,6 +903,7 @@ class TaskJuggler
|
|
895
903
|
elsif workLoad == 0.0 && freeLoad > 0.0
|
896
904
|
'free'
|
897
905
|
else
|
906
|
+
cell.tooltip = nil
|
898
907
|
'offduty'
|
899
908
|
end
|
900
909
|
end
|
data/lib/reports/TaskListRE.rb
CHANGED
@@ -42,12 +42,10 @@ class TaskJuggler
|
|
42
42
|
taskList.query = @report.project.reportContext.query
|
43
43
|
taskList.sort!
|
44
44
|
|
45
|
-
# Prepare the resource list.
|
45
|
+
# Prepare the resource list. Don't filter it yet! It would break the
|
46
|
+
# *_() LogicalFunctions.
|
46
47
|
resourceList = PropertyList.new(@project.resources)
|
47
48
|
resourceList.setSorting(@report.get('sortResources'))
|
48
|
-
resourceList = filterResourceList(resourceList, nil,
|
49
|
-
@report.get('hideResource'),
|
50
|
-
@report.get('rollupResource'))
|
51
49
|
resourceList.query = @report.project.reportContext.query
|
52
50
|
resourceList.sort!
|
53
51
|
|
data/lib/reports/TextReport.rb
CHANGED
@@ -25,27 +25,33 @@ class TaskJuggler
|
|
25
25
|
super
|
26
26
|
|
27
27
|
@lWidth = @cWidth = @rWidth = 0
|
28
|
+
@lPadding = @cPadding = @rPadding = 0
|
28
29
|
end
|
29
30
|
|
30
31
|
def generateIntermediateFormat
|
31
32
|
super
|
32
33
|
|
34
|
+
# A width of 0 means, the columns flexible.
|
33
35
|
if a('center')
|
34
36
|
if a('left') && a('right')
|
35
37
|
@lWidth = @rWidth = 20
|
36
38
|
@cWidth = 60
|
39
|
+
@lPadding = @cPadding = 2
|
37
40
|
elsif a('left') && !a('right')
|
38
41
|
@lWidth = 25
|
39
42
|
@cWidth = 75
|
43
|
+
@lPadding = 2
|
40
44
|
elsif !a('left') && a('right')
|
41
45
|
@cWidth = 75
|
42
46
|
@rWidth = 25
|
47
|
+
@cPadding = 2
|
43
48
|
else
|
44
49
|
@cWidth = 100
|
45
50
|
end
|
46
51
|
else
|
47
52
|
if a('left') && a('right')
|
48
53
|
@lWidth = @rWidth = 50
|
54
|
+
@lPadding = 2
|
49
55
|
elsif a('left') && !a('right')
|
50
56
|
@lWidth = 100
|
51
57
|
elsif !a('left') && a('right')
|
@@ -56,21 +62,21 @@ class TaskJuggler
|
|
56
62
|
|
57
63
|
def to_html
|
58
64
|
html = []
|
59
|
-
|
60
65
|
html << rt_to_html('header')
|
61
|
-
if
|
62
|
-
html << (table = XMLElement.new('table', '
|
63
|
-
|
64
|
-
|
65
|
-
'class' => 'textPageSkel'))
|
66
|
-
table << (tr = XMLElement.new('tr'))
|
67
|
-
|
66
|
+
if a('left') || a('center') || a('right')
|
67
|
+
html << (table = XMLElement.new('table', 'class' => 'tj_text_page',
|
68
|
+
'cellspacing' => '0'))
|
69
|
+
table << (row = XMLElement.new('tr', 'class' => 'tj_text_row'))
|
68
70
|
%w( left center right).each do |i|
|
69
71
|
width = instance_variable_get('@' + i[0].chr + 'Width')
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
72
|
+
padding = instance_variable_get('@' + i[0].chr + 'Padding')
|
73
|
+
if a(i)
|
74
|
+
row << (col = XMLElement.new('td', 'class' => "tj_column_#{i}"))
|
75
|
+
style = ''
|
76
|
+
style += "width:#{width}%; " if width > 0
|
77
|
+
style += "padding-right:#{padding}%; " if padding > 0
|
78
|
+
col['style'] = style
|
79
|
+
col << rt_to_html(i)
|
74
80
|
end
|
75
81
|
end
|
76
82
|
|