taskjuggler 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|