taskjuggler 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +160 -0
- data/benchmarks/UTF-8-Strings.rb +58 -0
- data/data/css/tjreport.css +7 -2
- data/doc/AppConfig.html +10 -4
- data/doc/Arguments.html +10 -4
- data/doc/CHANGELOG.html +171 -5
- data/doc/COPYING.html +10 -4
- data/doc/Object.html +11 -107
- data/doc/README.html +10 -4
- data/doc/RuntimeConfig.html +10 -4
- data/doc/String.html +16 -11
- data/doc/StringIO.html +10 -4
- data/doc/TaskJuggler.html +506 -435
- data/doc/TaskJuggler/Account.html +10 -4
- data/doc/TaskJuggler/AccountAttribute.html +10 -4
- data/doc/TaskJuggler/AccountScenario.html +10 -4
- data/doc/TaskJuggler/Allocation.html +69 -60
- data/doc/TaskJuggler/AllocationAttribute.html +10 -4
- data/doc/TaskJuggler/AttributeBase.html +10 -4
- data/doc/TaskJuggler/AttributeDefinition.html +10 -4
- data/doc/TaskJuggler/BatchProcessor.html +202 -192
- data/doc/TaskJuggler/Booking.html +10 -4
- data/doc/TaskJuggler/BookingListAttribute.html +10 -4
- data/doc/TaskJuggler/BooleanAttribute.html +10 -4
- data/doc/TaskJuggler/CSVFile.html +10 -4
- data/doc/TaskJuggler/CellSettingPattern.html +10 -4
- data/doc/TaskJuggler/CellSettingPatternList.html +10 -4
- data/doc/TaskJuggler/Charge.html +10 -4
- data/doc/TaskJuggler/ChargeListAttribute.html +10 -4
- data/doc/TaskJuggler/ChargeSet.html +10 -4
- data/doc/TaskJuggler/ChargeSetListAttribute.html +10 -4
- data/doc/TaskJuggler/ColumnListAttribute.html +10 -4
- data/doc/TaskJuggler/ColumnTable.html +10 -4
- data/doc/TaskJuggler/Daemon.html +71 -52
- data/doc/TaskJuggler/DateAttribute.html +10 -4
- data/doc/TaskJuggler/DefinitionListAttribute.html +10 -4
- data/doc/TaskJuggler/DependencyListAttribute.html +10 -4
- data/doc/TaskJuggler/DurationAttribute.html +10 -4
- data/doc/TaskJuggler/{MacroParser.html → FileList.html} +58 -173
- data/doc/TaskJuggler/{RichTextException.html → FileRecord.html} +59 -80
- data/doc/TaskJuggler/FixnumAttribute.html +10 -4
- data/doc/TaskJuggler/FlagListAttribute.html +10 -4
- data/doc/TaskJuggler/FloatAttribute.html +10 -4
- data/doc/TaskJuggler/FormatListAttribute.html +10 -4
- data/doc/TaskJuggler/GanttChart.html +10 -4
- data/doc/TaskJuggler/GanttContainer.html +14 -8
- data/doc/TaskJuggler/GanttHeader.html +10 -4
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +10 -4
- data/doc/TaskJuggler/GanttLine.html +29 -24
- data/doc/TaskJuggler/GanttLoadStack.html +10 -4
- data/doc/TaskJuggler/GanttMilestone.html +10 -4
- data/doc/TaskJuggler/GanttRouter.html +10 -4
- data/doc/TaskJuggler/GanttTaskBar.html +20 -10
- data/doc/TaskJuggler/HTMLDocument.html +10 -4
- data/doc/TaskJuggler/HTMLGraphics.html +10 -4
- data/doc/TaskJuggler/Interval.html +10 -4
- data/doc/TaskJuggler/IntervalListAttribute.html +10 -4
- data/doc/TaskJuggler/JobInfo.html +10 -4
- data/doc/TaskJuggler/Journal.html +227 -160
- data/doc/TaskJuggler/JournalEntry.html +10 -4
- data/doc/TaskJuggler/JournalEntryList.html +158 -72
- data/doc/TaskJuggler/KeywordArray.html +21 -9
- data/doc/TaskJuggler/KeywordDocumentation.html +612 -475
- data/doc/TaskJuggler/Limits.html +13 -8
- data/doc/TaskJuggler/Limits/Limit.html +10 -4
- data/doc/TaskJuggler/LimitsAttribute.html +10 -4
- data/doc/TaskJuggler/ListAttributeBase.html +10 -4
- data/doc/TaskJuggler/Log.html +10 -4
- data/doc/TaskJuggler/LogFile.html +10 -4
- data/doc/TaskJuggler/LogicalAttribute.html +10 -4
- data/doc/TaskJuggler/LogicalExpression.html +11 -5
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +10 -4
- data/doc/TaskJuggler/LogicalFlag.html +10 -4
- data/doc/TaskJuggler/LogicalFunction.html +132 -124
- data/doc/TaskJuggler/LogicalOperation.html +10 -4
- data/doc/TaskJuggler/Macro.html +16 -10
- data/doc/TaskJuggler/MacroTable.html +44 -38
- data/doc/TaskJuggler/ManagerResponsibilities.html +10 -4
- data/doc/TaskJuggler/ManagerStatusRecord.html +10 -4
- data/doc/TaskJuggler/Message.html +92 -68
- data/doc/TaskJuggler/MessageHandler.html +349 -28
- data/doc/TaskJuggler/Navigator.html +10 -4
- data/doc/TaskJuggler/NavigatorElement.html +10 -4
- data/doc/TaskJuggler/NikuProject.html +10 -4
- data/doc/TaskJuggler/NikuReport.html +10 -4
- data/doc/TaskJuggler/NikuResource.html +10 -4
- data/doc/TaskJuggler/NodeListAttribute.html +10 -4
- data/doc/TaskJuggler/OnShiftCache.html +10 -4
- data/doc/TaskJuggler/ProcessIntercom.html +118 -111
- data/doc/TaskJuggler/ProcessIntercomIface.html +75 -22
- data/doc/TaskJuggler/Project.html +886 -913
- data/doc/TaskJuggler/ProjectBroker.html +442 -331
- data/doc/TaskJuggler/ProjectBrokerIface.html +95 -38
- data/doc/TaskJuggler/ProjectFileParser.html +320 -317
- data/doc/TaskJuggler/ProjectFileScanner.html +336 -339
- data/doc/TaskJuggler/ProjectRecord.html +119 -56
- data/doc/TaskJuggler/ProjectServer.html +282 -237
- data/doc/TaskJuggler/ProjectServerIface.html +45 -39
- data/doc/TaskJuggler/PropertyAttribute.html +10 -4
- data/doc/TaskJuggler/PropertyList.html +177 -173
- data/doc/TaskJuggler/PropertySet.html +11 -5
- data/doc/TaskJuggler/PropertyTreeNode.html +194 -191
- data/doc/TaskJuggler/Query.html +280 -256
- data/doc/TaskJuggler/RTFHandlers.html +10 -4
- data/doc/TaskJuggler/RTFNavigator.html +33 -26
- data/doc/TaskJuggler/RTFQuery.html +135 -169
- data/doc/TaskJuggler/RTFReport.html +63 -56
- data/doc/TaskJuggler/RTFReportLink.html +58 -47
- data/doc/TaskJuggler/RTFWithQuerySupport.html +666 -0
- data/doc/TaskJuggler/RealFormat.html +10 -4
- data/doc/TaskJuggler/RealFormatAttribute.html +10 -4
- data/doc/TaskJuggler/ReferenceAttribute.html +10 -4
- data/doc/TaskJuggler/Report.html +333 -290
- data/doc/TaskJuggler/ReportBase.html +182 -174
- data/doc/TaskJuggler/ReportContext.html +10 -4
- data/doc/TaskJuggler/ReportServer.html +144 -126
- data/doc/TaskJuggler/ReportServerIface.html +50 -44
- data/doc/TaskJuggler/ReportServerRecord.html +38 -32
- data/doc/TaskJuggler/ReportServlet.html +144 -137
- data/doc/TaskJuggler/ReportTable.html +10 -4
- data/doc/TaskJuggler/ReportTableCell.html +169 -164
- data/doc/TaskJuggler/ReportTableColumn.html +10 -4
- data/doc/TaskJuggler/ReportTableLegend.html +10 -4
- data/doc/TaskJuggler/ReportTableLine.html +10 -4
- data/doc/TaskJuggler/Resource.html +121 -115
- data/doc/TaskJuggler/ResourceListAttribute.html +10 -4
- data/doc/TaskJuggler/ResourceListRE.html +10 -4
- data/doc/TaskJuggler/ResourceScenario.html +13 -7
- data/doc/TaskJuggler/RichText.html +61 -37
- data/doc/TaskJuggler/RichTextAttribute.html +10 -4
- data/doc/TaskJuggler/RichTextDocument.html +91 -81
- data/doc/TaskJuggler/RichTextElement.html +378 -317
- data/doc/TaskJuggler/RichTextFunctionExample.html +10 -4
- data/doc/TaskJuggler/RichTextFunctionHandler.html +16 -11
- data/doc/TaskJuggler/RichTextImage.html +10 -4
- data/doc/TaskJuggler/RichTextIntermediate.html +138 -70
- data/doc/TaskJuggler/RichTextParser.html +48 -40
- data/doc/TaskJuggler/RichTextScanner.html +328 -906
- data/doc/TaskJuggler/RichTextSnip.html +59 -57
- data/doc/TaskJuggler/RichTextSyntaxRules.html +458 -369
- data/doc/TaskJuggler/Scenario.html +10 -4
- data/doc/TaskJuggler/ScenarioData.html +33 -30
- data/doc/TaskJuggler/ScenarioListAttribute.html +10 -4
- data/doc/TaskJuggler/Scoreboard.html +10 -4
- data/doc/TaskJuggler/SheetHandlerBase.html +315 -191
- data/doc/TaskJuggler/SheetReceiver.html +334 -313
- data/doc/TaskJuggler/SheetSender.html +10 -4
- data/doc/TaskJuggler/Shift.html +10 -4
- data/doc/TaskJuggler/ShiftAssignment.html +10 -4
- data/doc/TaskJuggler/ShiftAssignments.html +10 -4
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +10 -4
- data/doc/TaskJuggler/ShiftScenario.html +10 -4
- data/doc/TaskJuggler/SimpleQueryExpander.html +697 -0
- data/doc/TaskJuggler/SortListAttribute.html +10 -4
- data/doc/TaskJuggler/SourceFileInfo.html +10 -4
- data/doc/TaskJuggler/StatusSheetReceiver.html +10 -4
- data/doc/TaskJuggler/StatusSheetReport.html +10 -4
- data/doc/TaskJuggler/StatusSheetSender.html +10 -4
- data/doc/TaskJuggler/StringAttribute.html +10 -4
- data/doc/TaskJuggler/SymbolAttribute.html +10 -4
- data/doc/TaskJuggler/SyntaxReference.html +260 -230
- data/doc/TaskJuggler/TOCEntry.html +99 -42
- data/doc/TaskJuggler/TSResourceRecord.html +10 -4
- data/doc/TaskJuggler/TSTaskRecord.html +10 -4
- data/doc/TaskJuggler/TableColumnDefinition.html +10 -4
- data/doc/TaskJuggler/TableOfContents.html +54 -12
- data/doc/TaskJuggler/TableReport.html +877 -872
- data/doc/TaskJuggler/Task.html +117 -68
- data/doc/TaskJuggler/TaskDependency.html +10 -4
- data/doc/TaskJuggler/TaskListAttribute.html +10 -4
- data/doc/TaskJuggler/TaskListRE.html +10 -4
- data/doc/TaskJuggler/TaskScenario.html +1681 -1563
- data/doc/TaskJuggler/TextFormatter.html +10 -4
- data/doc/TaskJuggler/TextParser.html +567 -534
- data/doc/TaskJuggler/TextParser/Pattern.html +128 -118
- data/doc/TaskJuggler/TextParser/Rule.html +26 -15
- data/doc/TaskJuggler/TextParser/StackElement.html +10 -4
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +22 -16
- data/doc/TaskJuggler/TextParser/TokenDoc.html +10 -4
- data/doc/TaskJuggler/TextReport.html +15 -6
- data/doc/TaskJuggler/TextScanner.html +319 -287
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +16 -10
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +23 -17
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +17 -11
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
- data/doc/TaskJuggler/TimeSheet.html +138 -175
- data/doc/TaskJuggler/TimeSheetReceiver.html +10 -4
- data/doc/TaskJuggler/TimeSheetRecord.html +65 -58
- data/doc/TaskJuggler/TimeSheetReport.html +47 -42
- data/doc/TaskJuggler/TimeSheetSender.html +10 -4
- data/doc/TaskJuggler/TimeSheetSummary.html +91 -83
- data/doc/TaskJuggler/TimeSheets.html +22 -16
- data/doc/TaskJuggler/Tj3AppBase.html +10 -4
- data/doc/TaskJuggler/Tj3Client.html +399 -365
- data/doc/TaskJuggler/Tj3Daemon.html +107 -94
- data/doc/TaskJuggler/Tj3SheetAppBase.html +10 -4
- data/doc/TaskJuggler/Tj3SsReceiver.html +10 -4
- data/doc/TaskJuggler/Tj3SsSender.html +10 -4
- data/doc/TaskJuggler/Tj3TsReceiver.html +10 -4
- data/doc/TaskJuggler/Tj3TsSender.html +10 -4
- data/doc/TaskJuggler/Tj3TsSummary.html +10 -4
- data/doc/TaskJuggler/TjException.html +10 -4
- data/doc/TaskJuggler/TjTime.html +145 -140
- data/doc/TaskJuggler/TjpExample.html +10 -4
- data/doc/TaskJuggler/TjpExportRE.html +122 -118
- data/doc/TaskJuggler/TjpSyntaxRules.html +4065 -4052
- data/doc/TaskJuggler/URLParameter.html +10 -4
- data/doc/TaskJuggler/UserManual.html +162 -155
- data/doc/TaskJuggler/VimSyntax.html +1028 -0
- data/doc/TaskJuggler/WebServer.html +45 -27
- data/doc/TaskJuggler/WorkingHours.html +10 -4
- data/doc/TaskJuggler/WorkingHoursAttribute.html +10 -4
- data/doc/TaskJuggler/XMLBlob.html +10 -4
- data/doc/TaskJuggler/XMLComment.html +10 -4
- data/doc/TaskJuggler/XMLDocument.html +10 -4
- data/doc/TaskJuggler/XMLElement.html +10 -4
- data/doc/TaskJuggler/XMLNamedText.html +10 -4
- data/doc/TaskJuggler/XMLText.html +10 -4
- data/doc/index.html +735 -677
- data/doc/lib/AccountScenario_rb.html +1 -1
- data/doc/lib/Account_rb.html +1 -1
- data/doc/lib/Allocation_rb.html +1 -1
- data/doc/lib/AppConfig_rb.html +1 -1
- data/doc/lib/AttributeBase_rb.html +1 -1
- data/doc/lib/AttributeDefinition_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +1 -1
- data/doc/lib/BatchProcessor_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/ChargeSet_rb.html +1 -1
- data/doc/lib/Charge_rb.html +1 -1
- data/doc/lib/{Message_rb.html → FileList_rb.html} +3 -5
- data/doc/lib/HTMLDocument_rb.html +1 -1
- data/doc/lib/Interval_rb.html +1 -1
- data/doc/lib/Journal_rb.html +1 -1
- data/doc/lib/KeywordArray_rb.html +1 -1
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/Limits_rb.html +1 -1
- data/doc/lib/LogFile_rb.html +1 -1
- data/doc/lib/Log_rb.html +1 -1
- data/doc/lib/LogicalExpression_rb.html +1 -1
- data/doc/lib/LogicalFunction_rb.html +1 -1
- data/doc/lib/LogicalOperation_rb.html +1 -1
- data/doc/lib/MacroTable_rb.html +1 -3
- data/doc/lib/MessageHandler_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +1 -1
- data/doc/lib/ProjectFileScanner_rb.html +1 -1
- data/doc/lib/Project_rb.html +4 -2
- data/doc/lib/PropertyList_rb.html +1 -1
- data/doc/lib/PropertySet_rb.html +1 -1
- data/doc/lib/PropertyTreeNode_rb.html +1 -1
- data/doc/lib/Query_rb.html +1 -1
- data/doc/lib/RTFHandlers_rb.html +1 -1
- data/doc/lib/RTFNavigator_rb.html +1 -1
- data/doc/lib/RTFQuery_rb.html +2 -2
- data/doc/lib/RTFReportLink_rb.html +4 -2
- data/doc/lib/RTFReport_rb.html +1 -1
- data/doc/lib/{MacroParser_rb.html → RTFWithQuerySupport_rb.html} +4 -6
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +1 -1
- data/doc/lib/Resource_rb.html +1 -1
- data/doc/lib/RichTextDocument_rb.html +1 -1
- data/doc/lib/RichTextElement_rb.html +1 -1
- data/doc/lib/RichTextFunctionExample_rb.html +1 -1
- data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +1 -1
- data/doc/lib/RichTextScanner_rb.html +3 -1
- data/doc/lib/RichTextSnip_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
- data/doc/lib/RichText_rb.html +3 -1
- data/doc/lib/RuntimeConfig_rb.html +1 -1
- data/doc/lib/ScenarioData_rb.html +2 -2
- data/doc/lib/Scenario_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/SheetHandlerBase_rb.html +5 -1
- data/doc/lib/SheetReceiver_rb.html +3 -1
- data/doc/lib/SheetSender_rb.html +1 -1
- data/doc/lib/ShiftAssignments_rb.html +1 -1
- data/doc/lib/ShiftScenario_rb.html +1 -1
- data/doc/lib/Shift_rb.html +1 -1
- data/doc/lib/SimpleQueryExpander_rb.html +67 -0
- data/doc/lib/SourceFileInfo_rb.html +1 -1
- data/doc/lib/StatusSheetReceiver_rb.html +1 -1
- data/doc/lib/StatusSheetSender_rb.html +1 -1
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TOCEntry_rb.html +1 -1
- data/doc/lib/TableColumnDefinition_rb.html +1 -1
- data/doc/lib/TableOfContents_rb.html +1 -1
- data/doc/lib/TaskDependency_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +1 -1
- data/doc/lib/TaskScenario_rb.html +1 -1
- data/doc/lib/Task_rb.html +1 -1
- data/doc/lib/TextFormatter_rb.html +1 -1
- data/doc/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/TextParser/Rule_rb.html +1 -1
- data/doc/lib/TextParser/StackElement_rb.html +1 -1
- data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/TextParser_rb.html +3 -1
- data/doc/lib/TextScanner_rb.html +1 -3
- data/doc/lib/TimeSheetReceiver_rb.html +1 -1
- data/doc/lib/TimeSheetSender_rb.html +1 -1
- data/doc/lib/TimeSheetSummary_rb.html +1 -1
- data/doc/lib/TimeSheets_rb.html +1 -1
- data/doc/lib/Tj3AppBase_rb.html +1 -1
- data/doc/lib/Tj3Config_rb.html +1 -1
- data/doc/lib/Tj3SheetAppBase_rb.html +1 -1
- data/doc/lib/TjException_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +1 -1
- data/doc/lib/TjpExample_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +1 -1
- data/doc/lib/URLParameter_rb.html +1 -1
- data/doc/lib/UTF8String_rb.html +1 -1
- data/doc/lib/UserManual_rb.html +1 -1
- data/doc/lib/{ruby-signal-bug_rb.html → VimSyntax_rb.html} +17 -4
- data/doc/lib/WorkingHours_rb.html +1 -1
- data/doc/lib/XMLDocument_rb.html +1 -1
- data/doc/lib/XMLElement_rb.html +1 -1
- data/doc/lib/daemon/Daemon_rb.html +1 -1
- data/doc/lib/daemon/ProcessIntercom_rb.html +1 -1
- data/doc/lib/daemon/ProjectBroker_rb.html +1 -1
- data/doc/lib/daemon/ProjectServer_rb.html +1 -1
- data/doc/lib/daemon/ReportServer_rb.html +1 -3
- data/doc/lib/daemon/WebServer_rb.html +1 -1
- data/doc/lib/deep_copy_rb.html +1 -1
- data/doc/lib/reports/CSVFile_rb.html +1 -1
- data/doc/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/reports/GanttChart_rb.html +1 -1
- data/doc/lib/reports/GanttContainer_rb.html +1 -1
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/lib/reports/GanttHeader_rb.html +1 -1
- data/doc/lib/reports/GanttLine_rb.html +1 -1
- data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
- data/doc/lib/reports/GanttMilestone_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +1 -1
- data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
- data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
- data/doc/lib/reports/Navigator_rb.html +1 -1
- data/doc/lib/reports/NikuReport_rb.html +1 -1
- data/doc/lib/reports/ReportBase_rb.html +1 -1
- data/doc/lib/reports/ReportContext_rb.html +1 -1
- data/doc/lib/reports/ReportTableCell_rb.html +1 -1
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +1 -1
- data/doc/lib/reports/Report_rb.html +1 -1
- data/doc/lib/reports/ResourceListRE_rb.html +1 -1
- data/doc/lib/reports/StatusSheetReport_rb.html +1 -1
- data/doc/lib/reports/TableReport_rb.html +1 -1
- data/doc/lib/reports/TaskListRE_rb.html +1 -1
- data/doc/lib/reports/TextReport_rb.html +1 -1
- data/doc/lib/reports/TimeSheetReport_rb.html +1 -1
- data/doc/lib/reports/TjpExportRE_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +1 -1
- data/doc/lib/tj3client_rb.html +1 -1
- data/doc/lib/tj3d_rb.html +1 -1
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +1 -1
- data/doc/lib/tj3ts_receiver_rb.html +1 -1
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/lib/Allocation.rb +8 -5
- data/lib/BatchProcessor.rb +7 -3
- data/lib/FileList.rb +58 -0
- data/lib/Journal.rb +73 -33
- data/lib/KeywordArray.rb +4 -0
- data/lib/KeywordDocumentation.rb +45 -11
- data/lib/Limits.rb +0 -1
- data/lib/LogicalExpression.rb +1 -1
- data/lib/LogicalFunction.rb +14 -12
- data/lib/MacroTable.rb +3 -4
- data/lib/MessageHandler.rb +136 -7
- data/lib/Project.rb +72 -86
- data/lib/ProjectFileParser.rb +30 -33
- data/lib/ProjectFileScanner.rb +7 -16
- data/lib/PropertyList.rb +25 -27
- data/lib/PropertySet.rb +1 -1
- data/lib/PropertyTreeNode.rb +9 -12
- data/lib/Query.rb +5 -4
- data/lib/RTFNavigator.rb +2 -1
- data/lib/RTFQuery.rb +4 -11
- data/lib/RTFReport.rb +2 -1
- data/lib/RTFReportLink.rb +10 -4
- data/lib/RTFWithQuerySupport.rb +45 -0
- data/lib/Resource.rb +20 -20
- data/lib/ResourceScenario.rb +3 -3
- data/lib/RichText.rb +15 -7
- data/lib/RichTextDocument.rb +8 -4
- data/lib/RichTextElement.rb +35 -12
- data/lib/RichTextFunctionHandler.rb +11 -12
- data/lib/RichTextParser.rb +5 -3
- data/lib/RichTextScanner.rb +144 -565
- data/lib/RichTextSnip.rb +3 -7
- data/lib/RichTextSyntaxRules.rb +51 -32
- data/lib/ScenarioData.rb +16 -25
- data/lib/SheetHandlerBase.rb +59 -2
- data/lib/SheetReceiver.rb +36 -18
- data/lib/SimpleQueryExpander.rb +58 -0
- data/lib/SyntaxReference.rb +9 -5
- data/lib/TOCEntry.rb +2 -0
- data/lib/TableOfContents.rb +4 -0
- data/lib/Task.rb +23 -12
- data/lib/TaskJuggler.rb +72 -33
- data/lib/TaskScenario.rb +131 -53
- data/lib/TextParser.rb +43 -30
- data/lib/TextParser/Pattern.rb +17 -13
- data/lib/TextParser/Rule.rb +5 -0
- data/lib/TextScanner.rb +46 -25
- data/lib/TimeSheetSummary.rb +9 -7
- data/lib/TimeSheets.rb +14 -23
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +1 -2
- data/lib/TjpSyntaxRules.rb +128 -104
- data/lib/UTF8String.rb +0 -1
- data/lib/UserManual.rb +5 -4
- data/lib/VimSyntax.rb +223 -0
- data/lib/daemon/Daemon.rb +9 -0
- data/lib/daemon/ProcessIntercom.rb +19 -4
- data/lib/daemon/ProjectBroker.rb +149 -68
- data/lib/daemon/ProjectServer.rb +119 -79
- data/lib/daemon/ReportServer.rb +42 -31
- data/lib/daemon/WebServer.rb +21 -2
- data/lib/deep_copy.rb +1 -1
- data/lib/reports/GanttContainer.rb +2 -2
- data/lib/reports/GanttLine.rb +2 -3
- data/lib/reports/GanttTaskBar.rb +7 -3
- data/lib/reports/Report.rb +62 -57
- data/lib/reports/ReportBase.rb +6 -4
- data/lib/reports/ReportTableCell.rb +13 -14
- data/lib/reports/TableReport.rb +2 -1
- data/lib/reports/TextReport.rb +3 -0
- data/lib/reports/TimeSheetReport.rb +2 -3
- data/lib/reports/TjpExportRE.rb +0 -2
- data/lib/tj3client.rb +31 -3
- data/lib/tj3d.rb +8 -1
- data/manual/Day_To_Day_Juggling +2 -95
- data/manual/How_To_Contribute +2 -1
- data/manual/Rich_Text_Attributes +37 -3
- data/manual/Software +203 -0
- data/test/MessageChecker.rb +4 -4
- data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
- data/test/TestSuite/HTML-Reports/CellText.html +758 -0
- data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
- data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
- data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
- data/test/TestSuite/HTML-Reports/Query.html +31 -0
- data/test/TestSuite/HTML-Reports/css/tjmanual.css +14 -0
- data/test/TestSuite/HTML-Reports/css/tjreport.css +233 -21
- data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
- data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/ReportGenerator/Correct/Alerts.tjp +48 -0
- data/test/TestSuite/ReportGenerator/Correct/Macros.tjp +57 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Alerts-1.csv +386 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Macros-1.csv +6 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjmanual.css +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjreport.css +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/details.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-green.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-red.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-yellow.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resource.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resourcegroup.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/task.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/taskgroup.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-down.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-flat.png +0 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-up.png +0 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +26 -0
- data/test/TestSuite/ReportGenerator/{Correct → Errors}/scripts/wz_tooltip.js +0 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.html +3210 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +19 -0
- data/test/TestSuite/Scheduler/Correct/Container.html +22 -22
- data/test/TestSuite/Scheduler/Correct/Limits.html +4964 -0
- data/test/TestSuite/Scheduler/Correct/Shift.html +1707 -417
- data/test/TestSuite/Scheduler/Correct/Shift2.html +9 -9
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +6 -2
- data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +66 -0
- data/test/TestSuite/Scheduler/Errors/css/tjreport.css +407 -0
- data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
- data/test/TestSuite/Scheduler/Errors/loop_detected_1.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_10.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_11.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_14.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_2.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_4.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_5.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/loop_detected_9.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Scheduler/Errors/task_pred_before.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/task_pred_before_gd.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/task_pred_before_gl.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/task_succ_after.tjp +12 -0
- data/test/TestSuite/Scheduler/Errors/task_succ_after_gd.tjp +12 -0
- data/test/TestSuite/Scheduler/Errors/task_succ_after_gl.tjp +12 -0
- data/test/TestSuite/StatusSheets/dev2.tji +22 -0
- data/test/TestSuite/StatusSheets/resrep.tji +7 -0
- data/test/TestSuite/StatusSheets/run +6 -4
- data/test/TestSuite/StatusSheets/tj3d.log +312 -0
- data/test/TestSuite/Syntax/Correct/Managers.html +263 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +1 -2
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +1 -1
- data/test/TestSuite/TimeSheets/acceptable_intervals +1 -0
- data/test/TestSuite/TimeSheets/resrep.tji +7 -0
- data/test/TestSuite/TimeSheets/run +6 -5
- data/test/TestSuite/TimeSheets/statussheets.log +1 -0
- data/test/TestSuite/TimeSheets/ts.tji +351 -0
- data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
- data/test/test_PropertySet.rb +2 -2
- data/test/test_RichText.rb +178 -387
- data/test/test_SimpleQueryExpander.rb +55 -0
- data/test/test_deep_copy.rb +2 -2
- metadata +854 -834
- data/lib/MacroParser.rb +0 -77
- data/lib/Message.rb +0 -56
- data/lib/ruby-signal-bug.rb +0 -43
- data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
- data/test/TestSuite/HTML-Reports/reference.html +0 -51
- data/test/TestSuite/ReportGenerator/Correct/Journal.html +0 -63
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
- data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
- data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
- data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
data/lib/tj3d.rb
CHANGED
|
@@ -27,9 +27,10 @@ class TaskJuggler
|
|
|
27
27
|
@mandatoryArgs = '[<tjp file> [<tji file> ...] ...]'
|
|
28
28
|
|
|
29
29
|
@log = LogFile.instance
|
|
30
|
-
@log.logFile = Dir.getwd
|
|
30
|
+
@log.logFile = File.join(Dir.getwd, "/#{AppConfig.appName}.log")
|
|
31
31
|
@log.appName = AppConfig.appName
|
|
32
32
|
@daemonize = true
|
|
33
|
+
@uriFile = File.join(Dir.getwd, '.tj3d.uri')
|
|
33
34
|
@port = nil
|
|
34
35
|
@webServer = false
|
|
35
36
|
@webServerPort = nil
|
|
@@ -52,6 +53,11 @@ EOT
|
|
|
52
53
|
'requests (Default: 8474).')) do |arg|
|
|
53
54
|
@port = arg
|
|
54
55
|
end
|
|
56
|
+
@opts.on('--urifile', String,
|
|
57
|
+
format('If the port is 0, use this file to store the URI ' +
|
|
58
|
+
'of the server.')) do |arg|
|
|
59
|
+
@uriFile = arg
|
|
60
|
+
end
|
|
55
61
|
@opts.on('-w', '--webserver',
|
|
56
62
|
format('Start a web server that serves the reports of ' +
|
|
57
63
|
'the loaded projects.')) do
|
|
@@ -76,6 +82,7 @@ EOT
|
|
|
76
82
|
# Set some config variables if corresponding data was provided via the
|
|
77
83
|
# command line.
|
|
78
84
|
broker.port = @port if @port
|
|
85
|
+
broker.uriFile = @uriFile.untaint
|
|
79
86
|
broker.enableWebServer = @webServer
|
|
80
87
|
broker.webServerPort = @webServerPort if @webServerPort
|
|
81
88
|
broker.projectFiles = sortInputFiles(files) unless files.empty?
|
data/manual/Day_To_Day_Juggling
CHANGED
|
@@ -216,101 +216,8 @@ another source code management system and even another operating
|
|
|
216
216
|
system like Windows or MacOS. This is all possible, but not the scope
|
|
217
217
|
of this manual.
|
|
218
218
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
Depending on the size of your project the scheduling time can take
|
|
222
|
-
several minutes or more. Since all operations need to be done on the
|
|
223
|
-
data of a scheduled project, it makes sense to have this data readily
|
|
224
|
-
available. This is the job of the TaskJuggler server or daemon in
|
|
225
|
-
Linux lingo. The program is called ''''tj3d''''. When started, it
|
|
226
|
-
automatically disconnects from the terminal and runs in the
|
|
227
|
-
background. All interactions with the server are done via the TCP/IP
|
|
228
|
-
protocol. For security reasons, only connections from the same
|
|
229
|
-
machine (localhost) are accepted. To get access all clients must
|
|
230
|
-
provide an authentication key. A TaskJuggler server can serve any
|
|
231
|
-
number of projects. Once a project has been loaded successfully,
|
|
232
|
-
clients can retrieve the data in form of reports. Projects are
|
|
233
|
-
identified by their project ID. If a newly added project has the same
|
|
234
|
-
ID such as an already loaded project, the new project will replace
|
|
235
|
-
the old project once it was scheduled successfully. Before you start
|
|
236
|
-
the server, you need to provide a configuration file with some basic
|
|
237
|
-
settings.
|
|
238
|
-
|
|
239
|
-
All taskjuggler components can use the same TaskJuggler configuration
|
|
240
|
-
file. The format is a simple plain text format that follows the
|
|
241
|
-
[http://www.yaml.org/ YAML specification]. The file should be called
|
|
242
|
-
''''.taskjuglerrc'''' or ''''taskjuggler.rc''''. The settings are
|
|
243
|
-
structured by sections. Section names always start with an underscore.
|
|
244
|
-
|
|
245
|
-
_global:
|
|
246
|
-
authKey: topsecret
|
|
247
|
-
_log:
|
|
248
|
-
logLevel: 3
|
|
249
|
-
outputLevel: 3
|
|
250
|
-
|
|
251
|
-
This file sets the authentication key for all TaskJuggler components.
|
|
252
|
-
You must replace ''topsecret'' with your own random character
|
|
253
|
-
sequence.
|
|
254
|
-
|
|
255
|
-
For the purpose of this documentation we assume you have a local user
|
|
256
|
-
called ''taskjuggler'' and your project data in
|
|
257
|
-
''''/home/taskjuggler/project/prj''''. Your TaskJuggler configuration
|
|
258
|
-
should then be put into
|
|
259
|
-
''''/home/taskjuggler/project/prj/.taskjugglerrc''''.
|
|
260
|
-
|
|
261
|
-
The log section controls the content of the log file. Since the
|
|
262
|
-
daemon does not have a terminal attached to it, all messages are
|
|
263
|
-
stored in a file called ''''tj3d.log''''. For debugging purposes, you
|
|
264
|
-
can use the ''''-d'''' option to prevent the daemon from
|
|
265
|
-
disconnecting from the terminal. In this case the ''''outputLevel''''
|
|
266
|
-
configuration option controls the amount of details to be printed out.
|
|
267
|
-
|
|
268
|
-
* 0: No output
|
|
269
|
-
* 1: Only fatal errors
|
|
270
|
-
* 2: Fatal and normal errors
|
|
271
|
-
* 3: Like 2, but additionally with information messages
|
|
272
|
-
* 4: Like 3, but additionally with debug messages
|
|
273
|
-
|
|
274
|
-
The configuration file will be searched in the current directory,
|
|
275
|
-
the current user's home directory or ''''/etc''''. You can also
|
|
276
|
-
explicitly tell the server where to find the configuration file with
|
|
277
|
-
the ''''-c'''' option. See
|
|
278
|
-
|
|
279
|
-
tj3d --help
|
|
280
|
-
|
|
281
|
-
for details.
|
|
282
|
-
|
|
283
|
-
==== The TaskJuggler Client ====
|
|
284
|
-
|
|
285
|
-
To control the TaskJuggler server, you need to use the TaskJuggler
|
|
286
|
-
client. You can use the client to add or remove projects from the
|
|
287
|
-
server, inquire the status of loaded projects. It can also be used to
|
|
288
|
-
show the available reports for each project and to generate report or
|
|
289
|
-
check time or status sheets.
|
|
290
|
-
|
|
291
|
-
The client must provide the correct authentication key to the server.
|
|
292
|
-
You need to ensure that it can find the proper configuration file
|
|
293
|
-
with the authentication key.
|
|
294
|
-
|
|
295
|
-
tj3client --help
|
|
296
|
-
|
|
297
|
-
will provide a full lust of supported commands. To load a project
|
|
298
|
-
simply type
|
|
299
|
-
|
|
300
|
-
tj3client add yourproject.tjp
|
|
301
|
-
|
|
302
|
-
In case there were no errors
|
|
303
|
-
|
|
304
|
-
tj3client status
|
|
305
|
-
|
|
306
|
-
should now list your project.
|
|
307
|
-
|
|
308
|
-
tj3client list-reports <project_id>
|
|
309
|
-
|
|
310
|
-
shows a list of available reports for the project with the provided
|
|
311
|
-
ID. To generate a report, you can type
|
|
312
|
-
|
|
313
|
-
tj3client report <project_id> <report_id>
|
|
219
|
+
To use the tracking system, you need to setup the
|
|
220
|
+
[[Software#tj3d|taskjuggler server]] to serve your project.
|
|
314
221
|
|
|
315
222
|
==== The Time Sheet Template Sender ====
|
|
316
223
|
|
data/manual/How_To_Contribute
CHANGED
|
@@ -32,7 +32,8 @@ Live (or bootable) CD/DVD or use a VmWare Player image of a Linux
|
|
|
32
32
|
distribution.
|
|
33
33
|
|
|
34
34
|
Make sure you have followed the steps described in the
|
|
35
|
-
[Installation#Installation_Steps_for_Developers
|
|
35
|
+
[Installation.html#Installation_Steps_for_Developers Installation
|
|
36
|
+
Steps for Developers] chapter.
|
|
36
37
|
|
|
37
38
|
If you have never used Git before, you need to configure it first. You
|
|
38
39
|
need to set your name and email address. This information will be
|
data/manual/Rich_Text_Attributes
CHANGED
|
@@ -84,13 +84,23 @@ create the URL.
|
|
|
84
84
|
|
|
85
85
|
Images can be added with a similar syntax.
|
|
86
86
|
|
|
87
|
-
[[image.jpg]]
|
|
88
|
-
[[image.jpg|alt=An image]]
|
|
87
|
+
[[File:image.jpg]]
|
|
88
|
+
[[File:image.jpg|alt=An image]]
|
|
89
89
|
|
|
90
90
|
This first version will be replaced with the file ''''image.jpg''''
|
|
91
91
|
when the output format supports this. Otherwise a blank space will be
|
|
92
92
|
inserted. The second version inserts the text ''''An image'''' if the
|
|
93
|
-
output format does not support images.
|
|
93
|
+
output format does not support images. The following image types are
|
|
94
|
+
supported and detected by their file name extensions: ''''.jpg'''',
|
|
95
|
+
''''.gif'''', ''''.png'''' and ''''.svg''''.
|
|
96
|
+
|
|
97
|
+
The vertical positioning of the embedded file can be controlled with
|
|
98
|
+
additional attributes.
|
|
99
|
+
|
|
100
|
+
[[File:image.svg|text-bottom]]
|
|
101
|
+
|
|
102
|
+
The following attributes are supported: ''''top, middle, bottom,
|
|
103
|
+
baseline, sub, super, text-top, text-bottom''''.
|
|
94
104
|
|
|
95
105
|
In some situations, it is desirable to not interpret certain markup
|
|
96
106
|
sequences and reproduce the text verbatim. Such text must be enclosed
|
|
@@ -147,6 +157,30 @@ Paramters:
|
|
|
147
157
|
|
|
148
158
|
* ''''id'''' : ID of a defined [[report]]
|
|
149
159
|
|
|
160
|
+
* ''''attributes'''': A set of attributes that override the original
|
|
161
|
+
attributes of the referenced report. All [[report|report attributes]]
|
|
162
|
+
are supported. Since the value of attributes already must be enclosed
|
|
163
|
+
by single or double quotes, all single or double quotes contained in
|
|
164
|
+
the string must be escaped with backslashes. This feature enables
|
|
165
|
+
reports with content that is customized based on where they have been
|
|
166
|
+
referenced from. It requires the reports to be dynamically generated
|
|
167
|
+
and is only available when used with the ''''tj3d'''' web server.
|
|
168
|
+
The ''''tj3'''' application will ignore the attributes setting.
|
|
169
|
+
|
|
170
|
+
taskreport "All" {
|
|
171
|
+
formats html
|
|
172
|
+
columns name {
|
|
173
|
+
celltext 1 -8<-
|
|
174
|
+
<-query attribute="name"-> <-reportlink id="taskRep"
|
|
175
|
+
attributes="hidetask plan.id != \"<-id->\""->
|
|
176
|
+
->8-
|
|
177
|
+
}, start, end
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
taskreport taskRep "Task" {
|
|
181
|
+
formats html
|
|
182
|
+
}
|
|
183
|
+
|
|
150
184
|
The report link generator inserts a link to the referenced report.
|
|
151
185
|
----
|
|
152
186
|
'''Inline Generator''' ''''query''''
|
data/manual/Software
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
== The TaskJuggler Software ==
|
|
2
|
+
|
|
3
|
+
After the installation of a software package the first questions that
|
|
4
|
+
most users have is ''"How do I run it?"''. Many users expect to find
|
|
5
|
+
an icon on their desktop or an entry in the start menu hierarchy.
|
|
6
|
+
Don't bother looking for them, you won't find any for TaskJuggler. As
|
|
7
|
+
we have mentioned before, TaskJuggler is a command line program. All
|
|
8
|
+
the components are started from a shell by typing in the command name.
|
|
9
|
+
|
|
10
|
+
This chapter describes the most important TaskJuggler commands and
|
|
11
|
+
how to use them. If you haven't used command line programs before,
|
|
12
|
+
don't worry - you will quickly get used to it.
|
|
13
|
+
|
|
14
|
+
=== ''''tj3'''' ===
|
|
15
|
+
|
|
16
|
+
''''tj3'''' is the main program that you will probably use the
|
|
17
|
+
most. It reads in your project files and schedules them. In case
|
|
18
|
+
there are no errors, it will also generate all the reports that you
|
|
19
|
+
have defined in your project files. It requires at least one
|
|
20
|
+
parameter, the name of your main project file. In case your main
|
|
21
|
+
project file is called ''''tutorial.tjp'''' you can process it by typing
|
|
22
|
+
|
|
23
|
+
tj3 tutorial.tjp
|
|
24
|
+
|
|
25
|
+
You will see an output similar to the one below.
|
|
26
|
+
|
|
27
|
+
> tj3 tutorial.tjp
|
|
28
|
+
TaskJuggler III v0.0.6 - A Project Management Software
|
|
29
|
+
|
|
30
|
+
Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs(a)kde.org>
|
|
31
|
+
|
|
32
|
+
This program is free software; you can redistribute it and/or modify it under
|
|
33
|
+
the terms of version 2 of the GNU General Public License as published by the
|
|
34
|
+
Free Software Foundation.
|
|
35
|
+
|
|
36
|
+
Reading file tutorial.tjp [ Done ]
|
|
37
|
+
Preparing scenario Plan [ Done ]
|
|
38
|
+
Scheduling scenario Plan [ Done ]
|
|
39
|
+
Checking scenario Plan [ Done ]
|
|
40
|
+
Preparing scenario Delayed [ Done ]
|
|
41
|
+
Scheduling scenario Delayed [ Done ]
|
|
42
|
+
Checking scenario Delayed [ Done ]
|
|
43
|
+
Report Overview [ Done ]
|
|
44
|
+
Report Status [ Done ]
|
|
45
|
+
Report Development [ Done ]
|
|
46
|
+
Report Deliveries [ Done ]
|
|
47
|
+
Report ContactList [ Done ]
|
|
48
|
+
Report ResourceGraph [ Done ]
|
|
49
|
+
|
|
50
|
+
''''tj3'''' support a number of runtime options that control the
|
|
51
|
+
behavior. Please use the ''''--help'''' option to get more details.
|
|
52
|
+
|
|
53
|
+
tj3 --help
|
|
54
|
+
|
|
55
|
+
=== ''''tj3man'''' ===
|
|
56
|
+
|
|
57
|
+
''''tj3man'''' provides you with a quick access to the syntax
|
|
58
|
+
reference. If you run it without further parameters it will print a
|
|
59
|
+
list of all syntax keywords. In some cases, keywords can be used in
|
|
60
|
+
different contexts with different meanings. These keywords are listed
|
|
61
|
+
multiple times with the context identifier appended separated by a
|
|
62
|
+
dot. E. g. the ''''shift'''' keyword can be used in the global
|
|
63
|
+
context, in the [[resource]], [[task]] and [[timesheet]] context. It
|
|
64
|
+
will be listed as
|
|
65
|
+
|
|
66
|
+
shift
|
|
67
|
+
shift.resource
|
|
68
|
+
shift.task
|
|
69
|
+
shift.timesheet
|
|
70
|
+
|
|
71
|
+
To get more information about a specific keyword you need to provide
|
|
72
|
+
it as parameter to ''''tj3man''''.
|
|
73
|
+
|
|
74
|
+
tj3man shift.task
|
|
75
|
+
|
|
76
|
+
=== ''''tj3d'''' ===
|
|
77
|
+
|
|
78
|
+
''''tj3d'''' is the TaskJuggler daemon. It is a program that runs
|
|
79
|
+
in the background, disconnected from your shell to provide certain
|
|
80
|
+
services. It can generate reports on demand and sever them as web
|
|
81
|
+
pages to a web browser. It's also used to process incoming time
|
|
82
|
+
sheets.
|
|
83
|
+
|
|
84
|
+
Depending on the size of your project the scheduling time can take
|
|
85
|
+
several minutes or more. Since all operations need to be done on the
|
|
86
|
+
data of a scheduled project, it makes sense to have this data readily
|
|
87
|
+
available. This is the job of the TaskJuggler server or daemon in
|
|
88
|
+
Linux lingo. The program is called ''''tj3d''''. When started, it
|
|
89
|
+
automatically disconnects from the terminal and runs in the
|
|
90
|
+
background. All interactions with the server are done via the TCP/IP
|
|
91
|
+
protocol. For security reasons, only connections from the same
|
|
92
|
+
machine (localhost) are accepted. To get access all clients must
|
|
93
|
+
provide an authentication key. A TaskJuggler server can serve any
|
|
94
|
+
number of projects. Once a project has been loaded successfully,
|
|
95
|
+
clients can retrieve the data in form of reports. Projects are
|
|
96
|
+
identified by their project ID. If a newly added project has the same
|
|
97
|
+
ID such as an already loaded project, the new project will replace
|
|
98
|
+
the old project once it was scheduled successfully. Before you start
|
|
99
|
+
the server, you need to provide a configuration file with some basic
|
|
100
|
+
settings.
|
|
101
|
+
|
|
102
|
+
All taskjuggler components can use the same TaskJuggler configuration
|
|
103
|
+
file. The format is a simple plain text format that follows the
|
|
104
|
+
[http://www.yaml.org/ YAML specification]. The file should be called
|
|
105
|
+
''''.taskjuglerrc'''' or ''''taskjuggler.rc''''. The settings are
|
|
106
|
+
structured by sections. Section names always start with an underscore.
|
|
107
|
+
|
|
108
|
+
_global:
|
|
109
|
+
authKey: topsecret
|
|
110
|
+
_log:
|
|
111
|
+
logLevel: 3
|
|
112
|
+
outputLevel: 3
|
|
113
|
+
|
|
114
|
+
This file sets the authentication key for all TaskJuggler components.
|
|
115
|
+
You must replace ''topsecret'' with your own random character
|
|
116
|
+
sequence.
|
|
117
|
+
|
|
118
|
+
For the purpose of this documentation we assume you have a local user
|
|
119
|
+
called ''taskjuggler'' and your project data in
|
|
120
|
+
''''/home/taskjuggler/project/prj''''. Your TaskJuggler configuration
|
|
121
|
+
should then be put into
|
|
122
|
+
''''/home/taskjuggler/project/prj/.taskjugglerrc''''.
|
|
123
|
+
|
|
124
|
+
The log section controls the content of the log file. Since the
|
|
125
|
+
daemon does not have a terminal attached to it, all messages are
|
|
126
|
+
stored in a file called ''''tj3d.log''''. For debugging purposes, you
|
|
127
|
+
can use the ''''-d'''' option to prevent the daemon from
|
|
128
|
+
disconnecting from the terminal. In this case the ''''outputLevel''''
|
|
129
|
+
configuration option controls the amount of details to be printed out.
|
|
130
|
+
|
|
131
|
+
* 0: No output
|
|
132
|
+
* 1: Only fatal errors
|
|
133
|
+
* 2: Fatal and normal errors
|
|
134
|
+
* 3: Like 2, but additionally with information messages
|
|
135
|
+
* 4: Like 3, but additionally with debug messages
|
|
136
|
+
|
|
137
|
+
The configuration file will be searched in the current directory,
|
|
138
|
+
the current user's home directory or ''''/etc''''. You can also
|
|
139
|
+
explicitly tell the server where to find the configuration file with
|
|
140
|
+
the ''''-c'''' option. See
|
|
141
|
+
|
|
142
|
+
tj3d --help
|
|
143
|
+
|
|
144
|
+
for details.
|
|
145
|
+
|
|
146
|
+
The daemon can also be turned into a web server that serves the HTML
|
|
147
|
+
reports of one or more projects. To enable the web server, start the
|
|
148
|
+
daemon with the ''''-w'''' option. By default, the web server is
|
|
149
|
+
listening on port 8080. This can be changed in the ''''_global''''
|
|
150
|
+
section of the config file.
|
|
151
|
+
|
|
152
|
+
_global:
|
|
153
|
+
authKey: topsecret
|
|
154
|
+
webServerPort: 8080
|
|
155
|
+
|
|
156
|
+
To access the HTML reports point your web browser to
|
|
157
|
+
''''http://localhost:8080/taskjuggler''''. This assumes that the
|
|
158
|
+
server is running on your local machine. You will then see a list of
|
|
159
|
+
all loaded projects. Click on the project name to get a list of all
|
|
160
|
+
reports for this project.
|
|
161
|
+
|
|
162
|
+
So far, the daemon has not received any kind of security review. We
|
|
163
|
+
strongly advise you to only use the daemon in a trusted environment
|
|
164
|
+
with only trusted users!
|
|
165
|
+
|
|
166
|
+
=== ''''tj3client'''' ===
|
|
167
|
+
|
|
168
|
+
To control the TaskJuggler server, you need to use the TaskJuggler
|
|
169
|
+
client. You can use the client to add or remove projects from the
|
|
170
|
+
server, inquire the status of loaded projects. It can also be used to
|
|
171
|
+
show the available reports for each project and to generate report or
|
|
172
|
+
check time or status sheets.
|
|
173
|
+
|
|
174
|
+
The client must provide the correct authentication key to the server.
|
|
175
|
+
You need to ensure that it can find the proper configuration file
|
|
176
|
+
with the authentication key.
|
|
177
|
+
|
|
178
|
+
tj3client --help
|
|
179
|
+
|
|
180
|
+
will provide a full lust of supported commands. To load a project
|
|
181
|
+
simply type
|
|
182
|
+
|
|
183
|
+
tj3client add yourproject.tjp
|
|
184
|
+
|
|
185
|
+
In case there were no errors
|
|
186
|
+
|
|
187
|
+
tj3client status
|
|
188
|
+
|
|
189
|
+
should now list your project.
|
|
190
|
+
|
|
191
|
+
tj3client list-reports <project_id>
|
|
192
|
+
|
|
193
|
+
shows a list of available reports for the project with the provided
|
|
194
|
+
ID. To generate a report, you can type
|
|
195
|
+
|
|
196
|
+
tj3client report <project_id> <report_id>
|
|
197
|
+
|
|
198
|
+
A server that is running can be terminated with the following command.
|
|
199
|
+
|
|
200
|
+
tj3client terminate
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
data/test/MessageChecker.rb
CHANGED
|
@@ -17,9 +17,9 @@ module MessageChecker
|
|
|
17
17
|
def checkMessages(tj, file)
|
|
18
18
|
refMessages = collectMessages(file)
|
|
19
19
|
tj.messageHandler.messages.each do |message|
|
|
20
|
-
assert(ref = refMessages.pop, "Unexpected #{message.
|
|
21
|
-
assert_equal(ref[0], message.
|
|
22
|
-
"Error in #{file}: Got #{message.
|
|
20
|
+
assert(ref = refMessages.pop, "Unexpected #{message.type.to_s} #{message.id}: #{message}")
|
|
21
|
+
assert_equal(ref[0], message.type.to_s,
|
|
22
|
+
"Error in #{file}: Got #{message.type.to_s} instead of #{ref[0]}")
|
|
23
23
|
assert_equal(ref[2], message.id,
|
|
24
24
|
"Error in #{file}: Got #{message.id} instead of #{ref[2]}")
|
|
25
25
|
if message.sourceFileInfo
|
|
@@ -34,7 +34,7 @@ module MessageChecker
|
|
|
34
34
|
|
|
35
35
|
# All files that generate messages have comments in them that specify the
|
|
36
36
|
# expected messages. The comments have the following form:
|
|
37
|
-
# MARK: <
|
|
37
|
+
# MARK: <type> <lineNo> <message Id>
|
|
38
38
|
# We collect all these reference messages to compare them with the
|
|
39
39
|
# generated messages after the test has been run.
|
|
40
40
|
def collectMessages(file)
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
+
<!-- This file has been generated by taskjuggler3 v0.0.3-->
|
|
4
|
+
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
|
5
|
+
<head>
|
|
6
|
+
<title>TaskJuggler Report - Alerts</title>
|
|
7
|
+
<link href="css/tjreport.css" rel="stylesheet" type="text/css"/>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<script src="scripts/wz_tooltip.js" type="text/javascript"></script>
|
|
11
|
+
<noscript><div style="text-align:center; color:#FF0000">This page requires Javascript for full functionality. Please enable it
|
|
12
|
+
in your browser settings!
|
|
13
|
+
</div></noscript>
|
|
14
|
+
<div style="margin: 35px 5% 25px 5%; ">
|
|
15
|
+
<table align="center" border="0" cellpadding="0" cellspacing="2" class="tjtable" summary="Report Table"><tbody>
|
|
16
|
+
<tr><td><table align="center" cellpadding="2" cellspacing="1" class="tabback" width="100%"><tbody>
|
|
17
|
+
<tr class="tabhead" style="height:19px; font-size:15px;">
|
|
18
|
+
<td class="tabcell" rowspan="2"><div class="headercelldiv" style="text-align:center; padding-left:5px; padding-right:5px; font-weight:bold; ">Name</div></td>
|
|
19
|
+
<td class="tabcell" rowspan="2"><div class="headercelldiv" style="text-align:center; padding-left:5px; padding-right:5px; font-weight:bold; ">Alert</div></td>
|
|
20
|
+
</tr>
|
|
21
|
+
<tr class="tabhead" style="height:19px; font-size:15px;"/>
|
|
22
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
23
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
24
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
25
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#C00000; ">
|
|
26
|
+
<img align="top" src="icons/flag-red.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
27
|
+
</tr>
|
|
28
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
29
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
30
|
+
<img align="top" src="icons/taskgroup.png" style="margin-right:3px;margin-bottom:2px"/>Inherit Red</div></td>
|
|
31
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#C00000; ">
|
|
32
|
+
<img align="top" src="icons/flag-red.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
33
|
+
</tr>
|
|
34
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
35
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
36
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
37
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#C00000; ">
|
|
38
|
+
<img align="top" src="icons/flag-red.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
39
|
+
</tr>
|
|
40
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
41
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
42
|
+
<img align="top" src="icons/taskgroup.png" style="margin-right:3px;margin-bottom:2px"/>Overwrite Red</div></td>
|
|
43
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#C00000; ">
|
|
44
|
+
<img align="top" src="icons/flag-red.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
45
|
+
</tr>
|
|
46
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
47
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
48
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
49
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#C00000; ">
|
|
50
|
+
<img align="top" src="icons/flag-red.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
51
|
+
</tr>
|
|
52
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
53
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
54
|
+
<img align="top" src="icons/taskgroup.png" style="margin-right:3px;margin-bottom:2px"/>Inherit Red</div></td>
|
|
55
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#C00000; ">
|
|
56
|
+
<img align="top" src="icons/flag-red.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
57
|
+
</tr>
|
|
58
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
59
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
60
|
+
<img align="top" src="icons/taskgroup.png" style="margin-right:3px;margin-bottom:2px"/>Inherit Red</div></td>
|
|
61
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#C00000; ">
|
|
62
|
+
<img align="top" src="icons/flag-red.png" style="margin-right:3px;margin-bottom:2px"/>Red</div></td>
|
|
63
|
+
</tr>
|
|
64
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
65
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
66
|
+
<img align="top" src="icons/taskgroup.png" style="margin-right:3px;margin-bottom:2px"/>Inherit Yellow</div></td>
|
|
67
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#BEA800; ">
|
|
68
|
+
<img align="top" src="icons/flag-yellow.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
69
|
+
</tr>
|
|
70
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
71
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
72
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
73
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#BEA800; ">
|
|
74
|
+
<img align="top" src="icons/flag-yellow.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
75
|
+
</tr>
|
|
76
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
77
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
78
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
79
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#BEA800; ">
|
|
80
|
+
<img align="top" src="icons/flag-yellow.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
81
|
+
</tr>
|
|
82
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
83
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
84
|
+
<img align="top" src="icons/taskgroup.png" style="margin-right:3px;margin-bottom:2px"/>Inherit Yellow</div></td>
|
|
85
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#BEA800; ">
|
|
86
|
+
<img align="top" src="icons/flag-yellow.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
87
|
+
</tr>
|
|
88
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
89
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
90
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
91
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#BEA800; ">
|
|
92
|
+
<img align="top" src="icons/flag-yellow.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
93
|
+
</tr>
|
|
94
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
95
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
96
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
97
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#BEA800; ">
|
|
98
|
+
<img align="top" src="icons/flag-yellow.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
99
|
+
</tr>
|
|
100
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
101
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
102
|
+
<img align="top" src="icons/taskgroup.png" style="margin-right:3px;margin-bottom:2px"/>Inherit Yellow</div></td>
|
|
103
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#BEA800; ">
|
|
104
|
+
<img align="top" src="icons/flag-yellow.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
105
|
+
</tr>
|
|
106
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
107
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
108
|
+
<img align="top" src="icons/taskgroup.png" style="margin-right:3px;margin-bottom:2px"/>Overwrite Yellow</div></td>
|
|
109
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#BEA800; ">
|
|
110
|
+
<img align="top" src="icons/flag-yellow.png" style="margin-right:3px;margin-bottom:2px"/>Yellow</div></td>
|
|
111
|
+
</tr>
|
|
112
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
113
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
114
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
115
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#008000; ">
|
|
116
|
+
<img align="top" src="icons/flag-green.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
117
|
+
</tr>
|
|
118
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
119
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
120
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
121
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#008000; ">
|
|
122
|
+
<img align="top" src="icons/flag-green.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
123
|
+
</tr>
|
|
124
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
125
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
126
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
127
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#008000; ">
|
|
128
|
+
<img align="top" src="icons/flag-green.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
129
|
+
</tr>
|
|
130
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
131
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
132
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
133
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#008000; ">
|
|
134
|
+
<img align="top" src="icons/flag-green.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
135
|
+
</tr>
|
|
136
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
137
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
138
|
+
<img align="top" src="icons/taskgroup.png" style="margin-right:3px;margin-bottom:2px"/>Inherit Green</div></td>
|
|
139
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#008000; ">
|
|
140
|
+
<img align="top" src="icons/flag-green.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
141
|
+
</tr>
|
|
142
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
143
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
144
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
145
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#008000; ">
|
|
146
|
+
<img align="top" src="icons/flag-green.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
147
|
+
</tr>
|
|
148
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
149
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
150
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
151
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#008000; ">
|
|
152
|
+
<img align="top" src="icons/flag-green.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
153
|
+
</tr>
|
|
154
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
155
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; ">
|
|
156
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
157
|
+
<td class="taskcell1"><div class="celldiv" style="text-align:left; color:#008000; ">
|
|
158
|
+
<img align="top" src="icons/flag-green.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
159
|
+
</tr>
|
|
160
|
+
<tr class="tabline" style="font-size:12px; ">
|
|
161
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; ">
|
|
162
|
+
<img align="top" src="icons/task.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
163
|
+
<td class="taskcell2"><div class="celldiv" style="text-align:left; color:#008000; ">
|
|
164
|
+
<img align="top" src="icons/flag-green.png" style="margin-right:3px;margin-bottom:2px"/>Green</div></td>
|
|
165
|
+
</tr>
|
|
166
|
+
</tbody></table></td></tr>
|
|
167
|
+
<tr style="font-size:10px;"><td style="padding-left:1px; padding-right:1px;"/></tr>
|
|
168
|
+
</tbody></table>
|
|
169
|
+
<div class="copyright">Project: Alerts Version: 1.0 - Created on 2009-12-03 08:47:14 with <a href="http://www.taskjuggler.org">TaskJuggler III</a> v0.0.3</div>
|
|
170
|
+
</div>
|
|
171
|
+
</body>
|
|
172
|
+
</html>
|