taskjuggler 0.0.5 → 0.0.6
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 +2086 -0
- data/benchmarks/666tasks.tjp +3183 -0
- data/benchmarks/booking.tjp +14 -10
- data/doc/AppConfig.html +95 -73
- data/doc/Arguments.html +22 -2
- data/doc/CHANGELOG.html +2587 -0
- data/doc/COPYING.html +21 -1
- data/doc/Object.html +161 -122
- data/doc/README.html +21 -1
- data/doc/RuntimeConfig.html +26 -6
- data/doc/String.html +38 -18
- data/doc/StringIO.html +579 -0
- data/doc/TaskJuggler.html +251 -143
- data/doc/TaskJuggler/Account.html +26 -6
- data/doc/TaskJuggler/AccountAttribute.html +28 -8
- data/doc/TaskJuggler/AccountScenario.html +24 -4
- data/doc/TaskJuggler/Allocation.html +30 -10
- data/doc/TaskJuggler/AllocationAttribute.html +28 -8
- data/doc/TaskJuggler/AttributeBase.html +46 -26
- data/doc/TaskJuggler/AttributeDefinition.html +22 -2
- data/doc/TaskJuggler/BatchProcessor.html +40 -20
- data/doc/TaskJuggler/Booking.html +26 -6
- data/doc/TaskJuggler/BookingListAttribute.html +28 -8
- data/doc/TaskJuggler/BooleanAttribute.html +28 -8
- data/doc/TaskJuggler/CSVFile.html +308 -146
- data/doc/TaskJuggler/CellSettingPattern.html +22 -2
- data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
- data/doc/TaskJuggler/Charge.html +26 -6
- data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
- data/doc/TaskJuggler/ChargeSet.html +33 -13
- data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
- data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
- data/doc/TaskJuggler/ColumnTable.html +24 -4
- data/doc/TaskJuggler/Daemon.html +26 -6
- data/doc/TaskJuggler/DateAttribute.html +26 -6
- data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
- data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
- data/doc/TaskJuggler/DurationAttribute.html +28 -8
- data/doc/TaskJuggler/FixnumAttribute.html +24 -4
- data/doc/TaskJuggler/FlagListAttribute.html +28 -8
- data/doc/TaskJuggler/FloatAttribute.html +26 -6
- data/doc/TaskJuggler/FormatListAttribute.html +24 -4
- data/doc/TaskJuggler/GanttChart.html +147 -126
- data/doc/TaskJuggler/GanttContainer.html +34 -14
- data/doc/TaskJuggler/GanttHeader.html +28 -8
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
- data/doc/TaskJuggler/GanttLine.html +38 -18
- data/doc/TaskJuggler/GanttLoadStack.html +26 -6
- data/doc/TaskJuggler/GanttMilestone.html +34 -14
- data/doc/TaskJuggler/GanttRouter.html +50 -30
- data/doc/TaskJuggler/GanttTaskBar.html +34 -14
- data/doc/TaskJuggler/HTMLDocument.html +26 -6
- data/doc/TaskJuggler/HTMLGraphics.html +30 -10
- data/doc/TaskJuggler/Interval.html +40 -22
- data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
- data/doc/TaskJuggler/JobInfo.html +24 -4
- data/doc/TaskJuggler/Journal.html +226 -147
- data/doc/TaskJuggler/JournalEntry.html +22 -2
- data/doc/TaskJuggler/JournalEntryList.html +129 -112
- data/doc/TaskJuggler/KeywordArray.html +26 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
- data/doc/TaskJuggler/Limits.html +152 -123
- data/doc/TaskJuggler/Limits/Limit.html +149 -70
- data/doc/TaskJuggler/LimitsAttribute.html +36 -51
- data/doc/TaskJuggler/ListAttributeBase.html +24 -4
- data/doc/TaskJuggler/Log.html +50 -32
- data/doc/TaskJuggler/LogFile.html +37 -17
- data/doc/TaskJuggler/LogicalAttribute.html +53 -33
- data/doc/TaskJuggler/LogicalExpression.html +26 -6
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
- data/doc/TaskJuggler/LogicalFlag.html +42 -22
- data/doc/TaskJuggler/LogicalFunction.html +204 -140
- data/doc/TaskJuggler/LogicalOperation.html +135 -111
- data/doc/TaskJuggler/Macro.html +22 -2
- data/doc/TaskJuggler/MacroParser.html +32 -12
- data/doc/TaskJuggler/MacroTable.html +32 -12
- data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
- data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
- data/doc/TaskJuggler/Message.html +24 -4
- data/doc/TaskJuggler/MessageHandler.html +24 -4
- data/doc/TaskJuggler/Navigator.html +104 -71
- data/doc/TaskJuggler/NavigatorElement.html +32 -12
- data/doc/TaskJuggler/NikuProject.html +22 -2
- data/doc/TaskJuggler/NikuReport.html +310 -228
- data/doc/TaskJuggler/NikuResource.html +22 -2
- data/doc/TaskJuggler/NodeListAttribute.html +615 -0
- data/doc/TaskJuggler/OnShiftCache.html +32 -12
- data/doc/TaskJuggler/ProcessIntercom.html +205 -78
- data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
- data/doc/TaskJuggler/Project.html +708 -660
- data/doc/TaskJuggler/ProjectBroker.html +506 -304
- data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
- data/doc/TaskJuggler/ProjectFileParser.html +429 -373
- data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
- data/doc/TaskJuggler/ProjectRecord.html +80 -60
- data/doc/TaskJuggler/ProjectServer.html +312 -237
- data/doc/TaskJuggler/ProjectServerIface.html +101 -43
- data/doc/TaskJuggler/PropertyAttribute.html +32 -12
- data/doc/TaskJuggler/PropertyList.html +166 -145
- data/doc/TaskJuggler/PropertySet.html +254 -224
- data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
- data/doc/TaskJuggler/Query.html +169 -148
- data/doc/TaskJuggler/RTFHandlers.html +622 -0
- data/doc/TaskJuggler/RTFNavigator.html +28 -8
- data/doc/TaskJuggler/RTFQuery.html +40 -20
- data/doc/TaskJuggler/RTFReport.html +62 -25
- data/doc/TaskJuggler/RTFReportLink.html +765 -0
- data/doc/TaskJuggler/RealFormat.html +26 -6
- data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
- data/doc/TaskJuggler/Report.html +402 -251
- data/doc/TaskJuggler/ReportBase.html +162 -137
- data/doc/TaskJuggler/ReportContext.html +112 -29
- data/doc/TaskJuggler/ReportServer.html +89 -64
- data/doc/TaskJuggler/ReportServerIface.html +75 -55
- data/doc/TaskJuggler/ReportServerRecord.html +54 -31
- data/doc/TaskJuggler/ReportServlet.html +980 -0
- data/doc/TaskJuggler/ReportTable.html +41 -21
- data/doc/TaskJuggler/ReportTableCell.html +214 -170
- data/doc/TaskJuggler/ReportTableColumn.html +30 -10
- data/doc/TaskJuggler/ReportTableLegend.html +36 -16
- data/doc/TaskJuggler/ReportTableLine.html +32 -12
- data/doc/TaskJuggler/Resource.html +99 -87
- data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
- data/doc/TaskJuggler/ResourceListRE.html +47 -26
- data/doc/TaskJuggler/ResourceScenario.html +403 -437
- data/doc/TaskJuggler/RichText.html +26 -6
- data/doc/TaskJuggler/RichTextAttribute.html +50 -30
- data/doc/TaskJuggler/RichTextDocument.html +37 -17
- data/doc/TaskJuggler/RichTextElement.html +475 -413
- data/doc/TaskJuggler/RichTextException.html +22 -2
- data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
- data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
- data/doc/TaskJuggler/RichTextImage.html +22 -2
- data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
- data/doc/TaskJuggler/RichTextParser.html +56 -34
- data/doc/TaskJuggler/RichTextScanner.html +82 -61
- data/doc/TaskJuggler/RichTextSnip.html +34 -14
- data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
- data/doc/TaskJuggler/Scenario.html +22 -2
- data/doc/TaskJuggler/ScenarioData.html +30 -46
- data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
- data/doc/TaskJuggler/Scoreboard.html +42 -22
- data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
- data/doc/TaskJuggler/SheetReceiver.html +333 -295
- data/doc/TaskJuggler/SheetSender.html +253 -230
- data/doc/TaskJuggler/Shift.html +26 -6
- data/doc/TaskJuggler/ShiftAssignment.html +89 -73
- data/doc/TaskJuggler/ShiftAssignments.html +226 -234
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
- data/doc/TaskJuggler/ShiftScenario.html +28 -8
- data/doc/TaskJuggler/SortListAttribute.html +34 -14
- data/doc/TaskJuggler/SourceFileInfo.html +24 -4
- data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
- data/doc/TaskJuggler/StatusSheetReport.html +168 -153
- data/doc/TaskJuggler/StatusSheetSender.html +24 -3
- data/doc/TaskJuggler/StringAttribute.html +38 -18
- data/doc/TaskJuggler/SymbolAttribute.html +32 -12
- data/doc/TaskJuggler/SyntaxReference.html +40 -20
- data/doc/TaskJuggler/TOCEntry.html +26 -6
- data/doc/TaskJuggler/TSResourceRecord.html +22 -2
- data/doc/TaskJuggler/TSTaskRecord.html +22 -2
- data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
- data/doc/TaskJuggler/TableOfContents.html +26 -6
- data/doc/TaskJuggler/TableReport.html +937 -904
- data/doc/TaskJuggler/Task.html +55 -36
- data/doc/TaskJuggler/TaskDependency.html +24 -4
- data/doc/TaskJuggler/TaskListAttribute.html +50 -30
- data/doc/TaskJuggler/TaskListRE.html +27 -7
- data/doc/TaskJuggler/TaskScenario.html +1273 -1153
- data/doc/TaskJuggler/TextFormatter.html +28 -8
- data/doc/TaskJuggler/TextParser.html +585 -338
- data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
- data/doc/TaskJuggler/TextParser/Rule.html +95 -73
- data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
- data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
- data/doc/TaskJuggler/TextReport.html +28 -8
- data/doc/TaskJuggler/TextScanner.html +400 -1404
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
- data/doc/TaskJuggler/TimeSheet.html +48 -28
- data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
- data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
- data/doc/TaskJuggler/TimeSheetReport.html +154 -133
- data/doc/TaskJuggler/TimeSheetSender.html +24 -3
- data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
- data/doc/TaskJuggler/TimeSheets.html +26 -6
- data/doc/TaskJuggler/Tj3AppBase.html +85 -58
- data/doc/TaskJuggler/Tj3Client.html +292 -238
- data/doc/TaskJuggler/Tj3Daemon.html +159 -74
- data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
- data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
- data/doc/TaskJuggler/Tj3SsSender.html +53 -26
- data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
- data/doc/TaskJuggler/Tj3TsSender.html +26 -6
- data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
- data/doc/TaskJuggler/TjException.html +22 -2
- data/doc/TaskJuggler/TjTime.html +216 -160
- data/doc/TaskJuggler/TjpExample.html +34 -14
- data/doc/TaskJuggler/TjpExportRE.html +403 -407
- data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
- data/doc/TaskJuggler/URLParameter.html +649 -0
- data/doc/TaskJuggler/UserManual.html +42 -22
- data/doc/TaskJuggler/WebServer.html +702 -0
- data/doc/TaskJuggler/WorkingHours.html +38 -18
- data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
- data/doc/TaskJuggler/XMLBlob.html +24 -4
- data/doc/TaskJuggler/XMLComment.html +24 -4
- data/doc/TaskJuggler/XMLDocument.html +30 -10
- data/doc/TaskJuggler/XMLElement.html +34 -14
- data/doc/TaskJuggler/XMLNamedText.html +22 -2
- data/doc/TaskJuggler/XMLText.html +24 -4
- data/doc/index.html +1841 -1666
- 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 +2 -2
- data/doc/lib/AttributeBase_rb.html +1 -1
- data/doc/lib/AttributeDefinition_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +2 -2
- 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/HTMLDocument_rb.html +1 -1
- data/doc/lib/Interval_rb.html +1 -1
- data/doc/lib/Journal_rb.html +2 -2
- data/doc/lib/KeywordArray_rb.html +1 -1
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/Limits_rb.html +2 -2
- data/doc/lib/LogFile_rb.html +2 -2
- data/doc/lib/Log_rb.html +1 -1
- data/doc/lib/LogicalExpression_rb.html +1 -1
- data/doc/lib/LogicalFunction_rb.html +2 -2
- data/doc/lib/LogicalOperation_rb.html +2 -2
- data/doc/lib/MacroParser_rb.html +1 -1
- data/doc/lib/MacroTable_rb.html +1 -1
- data/doc/lib/MessageHandler_rb.html +1 -1
- data/doc/lib/Message_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +4 -8
- data/doc/lib/ProjectFileScanner_rb.html +67 -0
- data/doc/lib/Project_rb.html +2 -2
- data/doc/lib/PropertyList_rb.html +2 -2
- data/doc/lib/PropertySet_rb.html +2 -2
- data/doc/lib/PropertyTreeNode_rb.html +2 -2
- data/doc/lib/Query_rb.html +2 -2
- data/doc/lib/RTFHandlers_rb.html +73 -0
- data/doc/lib/RTFNavigator_rb.html +1 -1
- data/doc/lib/RTFQuery_rb.html +1 -1
- data/doc/lib/RTFReportLink_rb.html +71 -0
- data/doc/lib/RTFReport_rb.html +2 -2
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +2 -2
- data/doc/lib/Resource_rb.html +2 -2
- data/doc/lib/RichTextDocument_rb.html +1 -1
- data/doc/lib/RichTextElement_rb.html +2 -2
- data/doc/lib/RichTextFunctionExample_rb.html +1 -1
- data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +2 -2
- data/doc/lib/RichTextScanner_rb.html +2 -2
- data/doc/lib/RichTextSnip_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
- data/doc/lib/RichText_rb.html +1 -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 +1 -1
- data/doc/lib/SheetReceiver_rb.html +2 -2
- data/doc/lib/SheetSender_rb.html +4 -2
- data/doc/lib/ShiftAssignments_rb.html +4 -2
- data/doc/lib/ShiftScenario_rb.html +1 -1
- data/doc/lib/Shift_rb.html +1 -1
- data/doc/lib/SourceFileInfo_rb.html +1 -1
- data/doc/lib/StatusSheetReceiver_rb.html +2 -2
- data/doc/lib/StatusSheetSender_rb.html +2 -2
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TOCEntry_rb.html +1 -1
- data/doc/lib/TableColumnDefinition_rb.html +2 -2
- data/doc/lib/TableOfContents_rb.html +1 -1
- data/doc/lib/TaskDependency_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +2 -2
- data/doc/lib/TaskScenario_rb.html +2 -2
- data/doc/lib/Task_rb.html +2 -2
- data/doc/lib/TextFormatter_rb.html +1 -1
- data/doc/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/TextParser/Rule_rb.html +2 -2
- data/doc/lib/TextParser/StackElement_rb.html +2 -2
- data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/TextParser_rb.html +2 -2
- data/doc/lib/TextScanner_rb.html +6 -2
- data/doc/lib/TimeSheetReceiver_rb.html +2 -2
- data/doc/lib/TimeSheetSender_rb.html +2 -2
- data/doc/lib/TimeSheetSummary_rb.html +2 -2
- data/doc/lib/TimeSheets_rb.html +2 -2
- data/doc/lib/Tj3AppBase_rb.html +2 -2
- data/doc/lib/Tj3Config_rb.html +2 -2
- data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
- data/doc/lib/TjException_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +2 -2
- data/doc/lib/TjpExample_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +2 -2
- data/doc/lib/URLParameter_rb.html +67 -0
- data/doc/lib/UTF8String_rb.html +1 -1
- data/doc/lib/UserManual_rb.html +1 -1
- data/doc/lib/WorkingHours_rb.html +1 -1
- data/doc/lib/XMLDocument_rb.html +2 -2
- data/doc/lib/XMLElement_rb.html +1 -1
- data/doc/lib/daemon/Daemon_rb.html +1 -1
- data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
- data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
- data/doc/lib/daemon/ProjectServer_rb.html +2 -2
- data/doc/lib/daemon/ReportServer_rb.html +2 -2
- data/doc/lib/daemon/WebServer_rb.html +75 -0
- data/doc/lib/deep_copy_rb.html +2 -2
- data/doc/lib/reports/CSVFile_rb.html +2 -2
- data/doc/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/reports/GanttChart_rb.html +2 -2
- 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 +2 -2
- data/doc/lib/reports/NikuReport_rb.html +2 -2
- data/doc/lib/reports/ReportBase_rb.html +2 -2
- data/doc/lib/reports/ReportContext_rb.html +2 -2
- data/doc/lib/reports/ReportTableCell_rb.html +2 -2
- 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 +2 -2
- data/doc/lib/reports/Report_rb.html +2 -2
- data/doc/lib/reports/ResourceListRE_rb.html +2 -2
- data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
- data/doc/lib/reports/TableReport_rb.html +2 -2
- data/doc/lib/reports/TaskListRE_rb.html +2 -2
- data/doc/lib/reports/TextReport_rb.html +1 -1
- data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
- data/doc/lib/reports/TjpExportRE_rb.html +2 -2
- data/doc/lib/ruby-signal-bug_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +2 -2
- data/doc/lib/tj3client_rb.html +2 -2
- data/doc/lib/tj3d_rb.html +2 -2
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +2 -2
- data/doc/lib/tj3ts_receiver_rb.html +2 -2
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/doc/rdoc.css +9 -4
- data/examples/tutorial.tjp +17 -15
- data/gem_spec.rb +3 -0
- data/lib/AppConfig.rb +3 -1
- data/lib/Attributes.rb +10 -8
- data/lib/Journal.rb +55 -20
- data/lib/Limits.rb +72 -46
- data/lib/LogFile.rb +3 -3
- data/lib/LogicalFunction.rb +19 -6
- data/lib/LogicalOperation.rb +5 -1
- data/lib/Project.rb +37 -9
- data/lib/ProjectFileParser.rb +25 -22
- data/lib/ProjectFileScanner.rb +365 -0
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +14 -4
- data/lib/PropertyTreeNode.rb +42 -29
- data/lib/Query.rb +3 -1
- data/lib/RTFHandlers.rb +35 -0
- data/lib/RTFReport.rb +23 -6
- data/lib/RTFReportLink.rb +72 -0
- data/lib/Resource.rb +8 -16
- data/lib/ResourceScenario.rb +1 -22
- data/lib/RichTextElement.rb +42 -0
- data/lib/RichTextParser.rb +6 -4
- data/lib/RichTextScanner.rb +5 -5
- data/lib/RichTextSyntaxRules.rb +48 -10
- data/lib/ScenarioData.rb +5 -3
- data/lib/SheetReceiver.rb +24 -6
- data/lib/SheetSender.rb +17 -13
- data/lib/ShiftAssignments.rb +56 -52
- data/lib/StatusSheetReceiver.rb +1 -0
- data/lib/StatusSheetSender.rb +1 -0
- data/lib/TableColumnDefinition.rb +4 -2
- data/lib/Task.rb +8 -9
- data/lib/TaskJuggler.rb +21 -11
- data/lib/TaskScenario.rb +61 -26
- data/lib/TextParser.rb +268 -106
- data/lib/TextParser/Rule.rb +4 -2
- data/lib/TextParser/StackElement.rb +6 -4
- data/lib/TextScanner.rb +283 -700
- data/lib/TimeSheetReceiver.rb +1 -0
- data/lib/TimeSheetSender.rb +1 -0
- data/lib/TimeSheetSummary.rb +51 -26
- data/lib/TimeSheets.rb +1 -1
- data/lib/Tj3AppBase.rb +8 -1
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +5 -0
- data/lib/TjpSyntaxRules.rb +360 -144
- data/lib/URLParameter.rb +30 -0
- data/lib/XMLDocument.rb +2 -2
- data/lib/daemon/ProcessIntercom.rb +50 -9
- data/lib/daemon/ProjectBroker.rb +63 -10
- data/lib/daemon/ProjectServer.rb +47 -16
- data/lib/daemon/ReportServer.rb +9 -4
- data/lib/daemon/WebServer.rb +204 -0
- data/lib/deep_copy.rb +4 -1
- data/lib/reports/CSVFile.rb +150 -66
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/Navigator.rb +18 -5
- data/lib/reports/NikuReport.rb +32 -2
- data/lib/reports/Report.rb +65 -37
- data/lib/reports/ReportBase.rb +14 -9
- data/lib/reports/ReportContext.rb +19 -4
- data/lib/reports/ReportTable.rb +2 -2
- data/lib/reports/ReportTableCell.rb +54 -30
- data/lib/reports/ResourceListRE.rb +4 -3
- data/lib/reports/StatusSheetReport.rb +8 -13
- data/lib/reports/TableReport.rb +47 -32
- data/lib/reports/TaskListRE.rb +3 -3
- data/lib/reports/TimeSheetReport.rb +14 -5
- data/lib/reports/TjpExportRE.rb +14 -19
- data/lib/taskjuggler3.rb +15 -0
- data/lib/tj3client.rb +9 -7
- data/lib/tj3d.rb +38 -10
- data/lib/tj3ss_sender.rb +7 -0
- data/lib/tj3ts_receiver.rb +1 -0
- data/manual/Day_To_Day_Juggling +1 -1
- data/manual/Rich_Text_Attributes +8 -0
- data/manual/TaskJuggler_2x_Migration +7 -0
- data/manual/The_TaskJuggler_Syntax +20 -6
- data/prj_cfg.rb +3 -2
- data/tasks/changelog.rake +36 -0
- data/tasks/csts.rake +2 -3
- data/tasks/gem.rake +10 -0
- data/tasks/missing.rake +0 -17
- data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
- data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
- data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
- data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
- data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
- data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
- data/test/TestSuite/StatusSheets/run +3 -2
- data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
- data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
- data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
- data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
- data/test/TestSuite/TimeSheets/run +5 -5
- data/test/test_CSVFile.rb +75 -0
- data/test/test_Limits.rb +63 -5
- data/test/test_ProjectFileScanner.rb +163 -0
- data/test/test_ReportGenerator.rb +81 -0
- data/test/test_RichText.rb +21 -3
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +4 -4
- data/test/test_Syntax.rb +1 -1
- data/test/test_URLParameter.rb +30 -0
- metadata +126 -32
- data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
- data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
- data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
- data/test/TestSuite/TimeSheets/receiver.log +0 -102
- data/test/TestSuite/TimeSheets/sender.log +0 -794
- data/test/TestSuite/TimeSheets/summary.log +0 -884
- data/test/TestSuite/TimeSheets/timesheets.log +0 -45
- data/test/TestSuite/TimeSheets/tj3d.log +0 -292
- data/test/test_TextScanner.rb +0 -95
|
@@ -69,21 +69,21 @@
|
|
|
69
69
|
<h3 class="section-header">Methods</h3>
|
|
70
70
|
<ul class="link-list">
|
|
71
71
|
|
|
72
|
-
<li><a href="#
|
|
72
|
+
<li><a href="#method-c-new">::new</a></li>
|
|
73
73
|
|
|
74
|
-
<li><a href="#
|
|
74
|
+
<li><a href="#method-i-createDirectories">#createDirectories</a></li>
|
|
75
75
|
|
|
76
|
-
<li><a href="#
|
|
76
|
+
<li><a href="#method-i-enableSignatureForReporting">#enableSignatureForReporting</a></li>
|
|
77
77
|
|
|
78
|
-
<li><a href="#
|
|
78
|
+
<li><a href="#method-i-genResourceList">#genResourceList</a></li>
|
|
79
79
|
|
|
80
|
-
<li><a href="#
|
|
80
|
+
<li><a href="#method-i-genTemplates">#genTemplates</a></li>
|
|
81
81
|
|
|
82
|
-
<li><a href="#
|
|
82
|
+
<li><a href="#method-i-generateReport">#generateReport</a></li>
|
|
83
83
|
|
|
84
|
-
<li><a href="#
|
|
84
|
+
<li><a href="#method-i-sendReportTemplates">#sendReportTemplates</a></li>
|
|
85
85
|
|
|
86
|
-
<li><a href="#
|
|
86
|
+
<li><a href="#method-i-sendTemplates">#sendTemplates</a></li>
|
|
87
87
|
|
|
88
88
|
</ul>
|
|
89
89
|
</div>
|
|
@@ -100,6 +100,8 @@
|
|
|
100
100
|
<h3 class="section-header">Files</h3>
|
|
101
101
|
<ul>
|
|
102
102
|
|
|
103
|
+
<li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
|
|
104
|
+
|
|
103
105
|
<li class="file"><a href="../COPYING.html">COPYING</a></li>
|
|
104
106
|
|
|
105
107
|
<li class="file"><a href="../README.html">README</a></li>
|
|
@@ -269,6 +271,8 @@
|
|
|
269
271
|
|
|
270
272
|
<li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
|
|
271
273
|
|
|
274
|
+
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
275
|
+
|
|
272
276
|
<li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
|
|
273
277
|
|
|
274
278
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
@@ -283,6 +287,8 @@
|
|
|
283
287
|
|
|
284
288
|
<li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
|
|
285
289
|
|
|
290
|
+
<li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
|
|
291
|
+
|
|
286
292
|
<li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
|
|
287
293
|
|
|
288
294
|
<li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
|
|
@@ -299,12 +305,16 @@
|
|
|
299
305
|
|
|
300
306
|
<li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
|
|
301
307
|
|
|
308
|
+
<li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
|
|
309
|
+
|
|
302
310
|
<li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
|
|
303
311
|
|
|
304
312
|
<li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
|
|
305
313
|
|
|
306
314
|
<li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
|
|
307
315
|
|
|
316
|
+
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
|
|
317
|
+
|
|
308
318
|
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
|
309
319
|
|
|
310
320
|
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
|
@@ -323,6 +333,8 @@
|
|
|
323
333
|
|
|
324
334
|
<li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
|
|
325
335
|
|
|
336
|
+
<li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
|
|
337
|
+
|
|
326
338
|
<li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
|
|
327
339
|
|
|
328
340
|
<li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
|
|
@@ -451,6 +463,8 @@
|
|
|
451
463
|
|
|
452
464
|
<li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
|
453
465
|
|
|
466
|
+
<li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
|
|
467
|
+
|
|
454
468
|
<li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
|
455
469
|
|
|
456
470
|
<li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
|
|
@@ -495,8 +509,12 @@
|
|
|
495
509
|
|
|
496
510
|
<li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
|
|
497
511
|
|
|
512
|
+
<li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
|
|
513
|
+
|
|
498
514
|
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
|
499
515
|
|
|
516
|
+
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
517
|
+
|
|
500
518
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
501
519
|
|
|
502
520
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -523,6 +541,8 @@
|
|
|
523
541
|
|
|
524
542
|
<li><a href="../String.html">String</a></li>
|
|
525
543
|
|
|
544
|
+
<li><a href="../StringIO.html">StringIO</a></li>
|
|
545
|
+
|
|
526
546
|
</ul>
|
|
527
547
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
528
548
|
</div>
|
|
@@ -594,7 +614,7 @@ A base class for sheet senders.
|
|
|
594
614
|
|
|
595
615
|
|
|
596
616
|
<div id="new-method" class="method-detail ">
|
|
597
|
-
<a name="
|
|
617
|
+
<a name="method-c-new"></a>
|
|
598
618
|
|
|
599
619
|
<div class="method-heading">
|
|
600
620
|
|
|
@@ -613,34 +633,37 @@ A base class for sheet senders.
|
|
|
613
633
|
<div class="method-source-code"
|
|
614
634
|
id="new-source">
|
|
615
635
|
<pre>
|
|
616
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
636
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 26</span>
|
|
637
|
+
26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">appName</span>, <span class="ruby-identifier">type</span>)
|
|
638
|
+
27: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">appName</span>)
|
|
639
|
+
28:
|
|
640
|
+
29: <span class="ruby-ivar">@sheetType</span> = <span class="ruby-identifier">type</span>
|
|
641
|
+
30: <span class="ruby-comment cmt"># The following settings must be provided by the deriving class.</span>
|
|
642
|
+
31: <span class="ruby-comment cmt"># This is a LogicalExpression string that controls what resources should</span>
|
|
643
|
+
32: <span class="ruby-comment cmt"># not be getting a report sheet template.</span>
|
|
644
|
+
33: <span class="ruby-ivar">@hideResource</span> = <span class="ruby-keyword kw">nil</span>
|
|
645
|
+
34: <span class="ruby-comment cmt"># This file contains the signature (date or interval) that the</span>
|
|
646
|
+
35: <span class="ruby-comment cmt"># SheetReceiver will accept as a valid signature.</span>
|
|
647
|
+
36: <span class="ruby-ivar">@signatureFile</span> = <span class="ruby-keyword kw">nil</span>
|
|
648
|
+
37: <span class="ruby-comment cmt"># The base directory of the sheet templates.</span>
|
|
649
|
+
38: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-keyword kw">nil</span>
|
|
650
|
+
39: <span class="ruby-comment cmt"># When true, existing templates will be regenerated and send out again.</span>
|
|
651
|
+
40: <span class="ruby-comment cmt"># Otherwise the existing template will not be send out again.</span>
|
|
652
|
+
41: <span class="ruby-ivar">@force</span> = <span class="ruby-keyword kw">false</span>
|
|
653
|
+
42:
|
|
654
|
+
43: <span class="ruby-ivar">@signatureFilter</span> = <span class="ruby-keyword kw">nil</span>
|
|
655
|
+
44: <span class="ruby-comment cmt"># The subject of the template email.</span>
|
|
656
|
+
45: <span class="ruby-ivar">@mailSubject</span> = <span class="ruby-keyword kw">nil</span>
|
|
657
|
+
46: <span class="ruby-comment cmt"># The into text of the template email.</span>
|
|
658
|
+
47: <span class="ruby-ivar">@introText</span> = <span class="ruby-keyword kw">nil</span>
|
|
659
|
+
48:
|
|
660
|
+
49: <span class="ruby-comment cmt"># The end date of the reported interval.</span>
|
|
661
|
+
50: <span class="ruby-ivar">@date</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%Y-%m-%d'</span>)
|
|
662
|
+
51: <span class="ruby-comment cmt"># Determines the length of the reported interval.</span>
|
|
663
|
+
52: <span class="ruby-ivar">@intervalDuration</span> = <span class="ruby-value str">'1w'</span>
|
|
664
|
+
53: <span class="ruby-comment cmt"># We need this to determine if we already sent out a report.</span>
|
|
665
|
+
54: <span class="ruby-ivar">@timeStamp</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>
|
|
666
|
+
55: <span class="ruby-keyword kw">end</span></pre>
|
|
644
667
|
</div>
|
|
645
668
|
|
|
646
669
|
</div>
|
|
@@ -658,7 +681,7 @@ A base class for sheet senders.
|
|
|
658
681
|
|
|
659
682
|
|
|
660
683
|
<div id="send-emplates-method" class="method-detail ">
|
|
661
|
-
<a name="
|
|
684
|
+
<a name="method-i-sendTemplates"></a>
|
|
662
685
|
|
|
663
686
|
<div class="method-heading">
|
|
664
687
|
|
|
@@ -682,15 +705,15 @@ and can be further limited with a list of resource IDs passed by
|
|
|
682
705
|
<div class="method-source-code"
|
|
683
706
|
id="send-emplates-source">
|
|
684
707
|
<pre>
|
|
685
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
708
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 60</span>
|
|
709
|
+
60: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendTemplates</span>(<span class="ruby-identifier">resourceList</span>)
|
|
710
|
+
61: <span class="ruby-identifier">setWorkingDir</span>
|
|
711
|
+
62: <span class="ruby-identifier">createDirectories</span>
|
|
712
|
+
63:
|
|
713
|
+
64: <span class="ruby-identifier">resources</span> = <span class="ruby-identifier">genResourceList</span>(<span class="ruby-identifier">resourceList</span>)
|
|
714
|
+
65: <span class="ruby-identifier">genTemplates</span>(<span class="ruby-identifier">resources</span>)
|
|
715
|
+
66: <span class="ruby-identifier">sendReportTemplates</span>(<span class="ruby-identifier">resources</span>)
|
|
716
|
+
67: <span class="ruby-keyword kw">end</span></pre>
|
|
694
717
|
</div>
|
|
695
718
|
|
|
696
719
|
</div>
|
|
@@ -708,7 +731,7 @@ and can be further limited with a list of resource IDs passed by
|
|
|
708
731
|
|
|
709
732
|
|
|
710
733
|
<div id="create-irectories-method" class="method-detail ">
|
|
711
|
-
<a name="
|
|
734
|
+
<a name="method-i-createDirectories"></a>
|
|
712
735
|
|
|
713
736
|
<div class="method-heading">
|
|
714
737
|
|
|
@@ -727,17 +750,17 @@ and can be further limited with a list of resource IDs passed by
|
|
|
727
750
|
<div class="method-source-code"
|
|
728
751
|
id="create-irectories-source">
|
|
729
752
|
<pre>
|
|
730
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
70: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mkdir</span>(<span class="ruby-ivar">@templateDir</span>)
|
|
735
|
-
71: <span class="ruby-keyword kw">end</span>
|
|
736
|
-
72: <span class="ruby-ivar">@templateDir</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"/#{@date}"</span>
|
|
737
|
-
73: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-ivar">@templateDir</span>)
|
|
753
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 71</span>
|
|
754
|
+
71: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">createDirectories</span>
|
|
755
|
+
72: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-ivar">@templateDir</span>)
|
|
756
|
+
73: <span class="ruby-identifier">warning</span>(<span class="ruby-node">"Creating directory #{@templateDir}"</span>)
|
|
738
757
|
74: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mkdir</span>(<span class="ruby-ivar">@templateDir</span>)
|
|
739
758
|
75: <span class="ruby-keyword kw">end</span>
|
|
740
|
-
76:
|
|
759
|
+
76: <span class="ruby-ivar">@templateDir</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"/#{@date}"</span>
|
|
760
|
+
77: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-ivar">@templateDir</span>)
|
|
761
|
+
78: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mkdir</span>(<span class="ruby-ivar">@templateDir</span>)
|
|
762
|
+
79: <span class="ruby-keyword kw">end</span>
|
|
763
|
+
80: <span class="ruby-keyword kw">end</span></pre>
|
|
741
764
|
</div>
|
|
742
765
|
|
|
743
766
|
</div>
|
|
@@ -749,7 +772,7 @@ and can be further limited with a list of resource IDs passed by
|
|
|
749
772
|
|
|
750
773
|
|
|
751
774
|
<div id="enable-ignature-or-eporting-method" class="method-detail ">
|
|
752
|
-
<a name="
|
|
775
|
+
<a name="method-i-enableSignatureForReporting"></a>
|
|
753
776
|
|
|
754
777
|
<div class="method-heading">
|
|
755
778
|
|
|
@@ -768,56 +791,56 @@ and can be further limited with a list of resource IDs passed by
|
|
|
768
791
|
<div class="method-source-code"
|
|
769
792
|
id="enable-ignature-or-eporting-source">
|
|
770
793
|
<pre>
|
|
771
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
794
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 193</span>
|
|
795
|
+
193: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">enableSignatureForReporting</span>(<span class="ruby-identifier">templateFile</span>)
|
|
796
|
+
194: <span class="ruby-identifier">signature</span> = <span class="ruby-keyword kw">nil</span>
|
|
797
|
+
195: <span class="ruby-comment cmt"># That's a pretty bad hack to make reasonably certain that the tj3 server</span>
|
|
798
|
+
196: <span class="ruby-comment cmt"># process has put the complete file into the file system.</span>
|
|
799
|
+
197: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
|
|
800
|
+
198: <span class="ruby-keyword kw">begin</span>
|
|
801
|
+
199: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">templateFile</span>)
|
|
802
|
+
200: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">templateFile</span>, <span class="ruby-value str">'r'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
|
|
803
|
+
201: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">file</span>.<span class="ruby-identifier">gets</span>)
|
|
804
|
+
202: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">matches</span> = <span class="ruby-ivar">@signatureFilter</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">line</span>)
|
|
805
|
+
203: <span class="ruby-identifier">signature</span> = <span class="ruby-identifier">matches</span>[<span class="ruby-value">1</span>]
|
|
806
|
+
204: <span class="ruby-keyword kw">end</span>
|
|
807
|
+
205: <span class="ruby-keyword kw">end</span>
|
|
808
|
+
206: <span class="ruby-keyword kw">end</span>
|
|
809
|
+
207: <span class="ruby-keyword kw">end</span>
|
|
810
|
+
208: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
811
|
+
209: <span class="ruby-comment cmt"># If the file doesn't exist yet or the cannot yet be read, wait for</span>
|
|
812
|
+
210: <span class="ruby-comment cmt"># 300ms. We try this 100 times.</span>
|
|
813
|
+
211: <span class="ruby-identifier">sleep</span>(<span class="ruby-value">0.3</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">signature</span>
|
|
814
|
+
212: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">signature</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">i</span> <span class="ruby-operator"><</span> <span class="ruby-value">100</span>
|
|
815
|
+
213: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">signature</span>
|
|
816
|
+
214: <span class="ruby-identifier">error</span>(<span class="ruby-value str">"enableSignatureForReporting: Cannot find signature in file "</span> <span class="ruby-operator">+</span>
|
|
817
|
+
215: <span class="ruby-node">"#{templateFile}"</span>)
|
|
818
|
+
216: <span class="ruby-keyword kw">end</span>
|
|
819
|
+
217:
|
|
820
|
+
218: <span class="ruby-identifier">acceptedSignatures</span> = []
|
|
821
|
+
219: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-ivar">@signatureFile</span>)
|
|
822
|
+
220: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-ivar">@signatureFile</span>, <span class="ruby-value str">'r'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
|
|
823
|
+
221: <span class="ruby-identifier">acceptedSignatures</span> = <span class="ruby-identifier">file</span>.<span class="ruby-identifier">readlines</span>
|
|
824
|
+
222: <span class="ruby-keyword kw">end</span>
|
|
825
|
+
223: <span class="ruby-identifier">acceptedSignatures</span>.<span class="ruby-identifier">map!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">chomp</span> }
|
|
826
|
+
224: <span class="ruby-identifier">acceptedSignatures</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">chomp</span>.<span class="ruby-identifier">empty?</span> }
|
|
827
|
+
225: <span class="ruby-keyword kw">else</span>
|
|
828
|
+
226: <span class="ruby-identifier">info</span>(<span class="ruby-node">"#{@signatureFile} does not exist yet."</span>)
|
|
829
|
+
227: <span class="ruby-keyword kw">end</span>
|
|
830
|
+
228: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">acceptedSignatures</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">signature</span>)
|
|
831
|
+
229: <span class="ruby-comment cmt"># Add the new signature</span>
|
|
832
|
+
230: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Adding #{signature} to #{@signatureFile}"</span>)
|
|
833
|
+
231: <span class="ruby-identifier">acceptedSignatures</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">signature</span>
|
|
834
|
+
232: <span class="ruby-comment cmt"># And write back the adapted file.</span>
|
|
835
|
+
233: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-ivar">@signatureFile</span>, <span class="ruby-value str">'w'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
|
|
836
|
+
234: <span class="ruby-identifier">acceptedSignatures</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">iv</span><span class="ruby-operator">|</span>
|
|
837
|
+
235: <span class="ruby-identifier">file</span>.<span class="ruby-identifier">write</span>(<span class="ruby-node">"#{iv}\n"</span>)
|
|
838
|
+
236: <span class="ruby-keyword kw">end</span>
|
|
839
|
+
237: <span class="ruby-keyword kw">end</span>
|
|
840
|
+
238: <span class="ruby-keyword kw">else</span>
|
|
841
|
+
239: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Signature #{signature} is already listed in #{@signatureFile}"</span>)
|
|
842
|
+
240: <span class="ruby-keyword kw">end</span>
|
|
843
|
+
241: <span class="ruby-keyword kw">end</span></pre>
|
|
821
844
|
</div>
|
|
822
845
|
|
|
823
846
|
</div>
|
|
@@ -829,7 +852,7 @@ and can be further limited with a list of resource IDs passed by
|
|
|
829
852
|
|
|
830
853
|
|
|
831
854
|
<div id="gen-esource-ist-method" class="method-detail ">
|
|
832
|
-
<a name="
|
|
855
|
+
<a name="method-i-genResourceList"></a>
|
|
833
856
|
|
|
834
857
|
<div class="method-heading">
|
|
835
858
|
|
|
@@ -848,58 +871,59 @@ and can be further limited with a list of resource IDs passed by
|
|
|
848
871
|
<div class="method-source-code"
|
|
849
872
|
id="gen-esource-ist-source">
|
|
850
873
|
<pre>
|
|
851
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
874
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 82</span>
|
|
875
|
+
82: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">genResourceList</span>(<span class="ruby-identifier">resourceList</span>)
|
|
876
|
+
83: <span class="ruby-identifier">list</span> = []
|
|
877
|
+
84: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Retrieving resource list...'</span>)
|
|
878
|
+
85: <span class="ruby-comment cmt"># Create a TJP report definition for a CSV report that contains the id,</span>
|
|
879
|
+
86: <span class="ruby-comment cmt"># name, email, effort and free work for each resource that is not hidden</span>
|
|
880
|
+
87: <span class="ruby-comment cmt"># by @hideResource.</span>
|
|
881
|
+
88: <span class="ruby-identifier">reportDef</span> = <span class="ruby-value str">resourcereport rl_21497214 '.' { formats csv columns id, name, email, effort, freework hideresource #{@hideResource} sortresources id.up loadunit days period %{#{@date} - 1w} +1w}</span>
|
|
882
|
+
89: <span class="ruby-identifier">report</span> = <span class="ruby-identifier">generateReport</span>(<span class="ruby-value str">'rl_21497214'</span>, <span class="ruby-identifier">reportDef</span>)
|
|
883
|
+
90: <span class="ruby-comment cmt"># Parse the CSV report into an Array of Arrays</span>
|
|
884
|
+
91: <span class="ruby-identifier">csv</span> = <span class="ruby-constant">CSVFile</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">report</span>)
|
|
885
|
+
92:
|
|
886
|
+
93: <span class="ruby-comment cmt"># Get rid of the column title line</span>
|
|
887
|
+
94: <span class="ruby-identifier">csv</span>.<span class="ruby-identifier">delete_at</span>(<span class="ruby-value">0</span>)
|
|
888
|
+
95:
|
|
889
|
+
96: <span class="ruby-comment cmt"># Process the CSV report line by line</span>
|
|
890
|
+
97: <span class="ruby-identifier">csv</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">email</span>, <span class="ruby-identifier">effort</span>, <span class="ruby-identifier">free</span><span class="ruby-operator">|</span>
|
|
891
|
+
98: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">email</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">email</span>.<span class="ruby-identifier">empty?</span>
|
|
892
|
+
99: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Resource '#{id}' must have a valid email address"</span>)
|
|
893
|
+
100: <span class="ruby-keyword kw">end</span>
|
|
894
|
+
101:
|
|
895
|
+
102: <span class="ruby-comment cmt"># Ignore resources that are on vacation for the whole period.</span>
|
|
896
|
+
103: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">effort</span> <span class="ruby-operator">==</span> <span class="ruby-value">0.0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">free</span> <span class="ruby-operator">==</span> <span class="ruby-value">0.0</span>
|
|
897
|
+
104: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Resource '#{id}' was on vacation the whole period"</span>)
|
|
898
|
+
105: <span class="ruby-keyword kw">next</span>
|
|
899
|
+
106: <span class="ruby-keyword kw">end</span>
|
|
900
|
+
107:
|
|
901
|
+
108: <span class="ruby-identifier">list</span> <span class="ruby-operator"><<</span> [ <span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">email</span>, <span class="ruby-identifier">effort</span>, <span class="ruby-identifier">free</span> ]
|
|
902
|
+
109: <span class="ruby-keyword kw">end</span>
|
|
903
|
+
110:
|
|
904
|
+
111: <span class="ruby-comment cmt"># Save the resource list to a file. We'll need it in the receiver again.</span>
|
|
905
|
+
112: <span class="ruby-keyword kw">begin</span>
|
|
906
|
+
113: <span class="ruby-identifier">fileName</span> = <span class="ruby-ivar">@templateDir</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/resources.yml'</span>
|
|
907
|
+
114: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-value str">'w'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
|
|
908
|
+
115: <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">dump</span>(<span class="ruby-identifier">list</span>, <span class="ruby-identifier">file</span>)
|
|
909
|
+
116: <span class="ruby-keyword kw">end</span>
|
|
910
|
+
117: <span class="ruby-keyword kw">rescue</span>
|
|
911
|
+
118: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Saving of #{fileName} failed: #{$!}"</span>)
|
|
912
|
+
119: <span class="ruby-keyword kw">end</span>
|
|
913
|
+
120:
|
|
914
|
+
121: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">empty?</span>
|
|
915
|
+
122: <span class="ruby-comment cmt"># When the user specified resource list is empty, we generate templates</span>
|
|
916
|
+
123: <span class="ruby-comment cmt"># for all users that don't match the @hideResource filter. Otherwise we</span>
|
|
917
|
+
124: <span class="ruby-comment cmt"># only generate templates for those in the list and that are not hidden</span>
|
|
918
|
+
125: <span class="ruby-comment cmt"># by the filter.</span>
|
|
919
|
+
126: <span class="ruby-identifier">list</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">item</span>[<span class="ruby-value">0</span>]) }
|
|
920
|
+
127: <span class="ruby-keyword kw">end</span>
|
|
921
|
+
128:
|
|
922
|
+
129: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'genResourceList: list is empty'</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">list</span>.<span class="ruby-identifier">empty?</span>
|
|
923
|
+
130:
|
|
924
|
+
131: <span class="ruby-identifier">info</span>(<span class="ruby-node">"#{list.length} resources found"</span>)
|
|
925
|
+
132: <span class="ruby-identifier">list</span>
|
|
926
|
+
133: <span class="ruby-keyword kw">end</span></pre>
|
|
903
927
|
</div>
|
|
904
928
|
|
|
905
929
|
</div>
|
|
@@ -911,7 +935,7 @@ and can be further limited with a list of resource IDs passed by
|
|
|
911
935
|
|
|
912
936
|
|
|
913
937
|
<div id="gen-emplates-method" class="method-detail ">
|
|
914
|
-
<a name="
|
|
938
|
+
<a name="method-i-genTemplates"></a>
|
|
915
939
|
|
|
916
940
|
<div class="method-heading">
|
|
917
941
|
|
|
@@ -930,29 +954,29 @@ and can be further limited with a list of resource IDs passed by
|
|
|
930
954
|
<div class="method-source-code"
|
|
931
955
|
id="gen-emplates-source">
|
|
932
956
|
<pre>
|
|
933
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
957
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 144</span>
|
|
958
|
+
144: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">genTemplates</span>(<span class="ruby-identifier">resources</span>)
|
|
959
|
+
145: <span class="ruby-identifier">firstTemplateFile</span> = <span class="ruby-keyword kw">nil</span>
|
|
960
|
+
146: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resInfo</span><span class="ruby-operator">|</span>
|
|
961
|
+
147: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">resInfo</span>[<span class="ruby-value">0</span>]
|
|
962
|
+
148: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Generating template for #{res}..."</span>)
|
|
963
|
+
149: <span class="ruby-identifier">reportId</span> = <span class="ruby-node">"sheet_template_#{res}"</span>
|
|
964
|
+
150: <span class="ruby-identifier">templateFile</span> = <span class="ruby-node">"#{@templateDir}/#{res}_#{@date}"</span>
|
|
965
|
+
151: <span class="ruby-comment cmt"># We use the first template file to get the sheet interval.</span>
|
|
966
|
+
152: <span class="ruby-identifier">firstTemplateFile</span> = <span class="ruby-identifier">templateFile</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'.tji'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">firstTemplateFile</span>
|
|
967
|
+
153:
|
|
968
|
+
154: <span class="ruby-comment cmt"># Don't re-generate already existing templates unless we are in force</span>
|
|
969
|
+
155: <span class="ruby-comment cmt"># mode. We probably have sent them out earlier with a manual trigger.</span>
|
|
970
|
+
156: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@force</span> <span class="ruby-operator">&&</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">templateFile</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'.tji'</span>)
|
|
971
|
+
157: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Skipping already existing #{templateFile}.tji."</span>)
|
|
972
|
+
158: <span class="ruby-keyword kw">next</span>
|
|
973
|
+
159: <span class="ruby-keyword kw">end</span>
|
|
974
|
+
160:
|
|
975
|
+
161: <span class="ruby-identifier">reportDef</span> = <span class="ruby-value str">#{@sheetType}sheetreport #{reportId} \"#{templateFile}\" { hideresource ~(plan.id = \"#{res}\") period %{#{@date} - #{@intervalDuration}} +#{@intervalDuration} sorttasks id.up}</span>
|
|
976
|
+
162: <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">reportDef</span>)
|
|
977
|
+
163: <span class="ruby-keyword kw">end</span>
|
|
978
|
+
164: <span class="ruby-identifier">enableSignatureForReporting</span>(<span class="ruby-identifier">firstTemplateFile</span>)
|
|
979
|
+
165: <span class="ruby-keyword kw">end</span></pre>
|
|
956
980
|
</div>
|
|
957
981
|
|
|
958
982
|
</div>
|
|
@@ -964,7 +988,7 @@ and can be further limited with a list of resource IDs passed by
|
|
|
964
988
|
|
|
965
989
|
|
|
966
990
|
<div id="generate-eport-method" class="method-detail ">
|
|
967
|
-
<a name="
|
|
991
|
+
<a name="method-i-generateReport"></a>
|
|
968
992
|
|
|
969
993
|
<div class="method-heading">
|
|
970
994
|
|
|
@@ -983,28 +1007,28 @@ and can be further limited with a list of resource IDs passed by
|
|
|
983
1007
|
<div class="method-source-code"
|
|
984
1008
|
id="generate-eport-source">
|
|
985
1009
|
<pre>
|
|
986
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1010
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 243</span>
|
|
1011
|
+
243: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">reportDef</span>)
|
|
1012
|
+
244: <span class="ruby-identifier">out</span> = <span class="ruby-value str">''</span>
|
|
1013
|
+
245: <span class="ruby-identifier">err</span> = <span class="ruby-value str">''</span>
|
|
1014
|
+
246: <span class="ruby-keyword kw">begin</span>
|
|
1015
|
+
247: <span class="ruby-identifier">command</span> = <span class="ruby-node">"tj3client --silent report #{@projectId} #{id} = ."</span>
|
|
1016
|
+
248: <span class="ruby-identifier">status</span> = <span class="ruby-constant">Open4</span>.<span class="ruby-identifier">popen4</span>(<span class="ruby-identifier">command</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pid</span>, <span class="ruby-identifier">stdin</span>, <span class="ruby-identifier">stdout</span>, <span class="ruby-identifier">stderr</span><span class="ruby-operator">|</span>
|
|
1017
|
+
249: <span class="ruby-comment cmt"># Send the report definition to the tj3client process via stdin.</span>
|
|
1018
|
+
250: <span class="ruby-identifier">stdin</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">reportDef</span>)
|
|
1019
|
+
251: <span class="ruby-identifier">stdin</span>.<span class="ruby-identifier">close</span>
|
|
1020
|
+
252: <span class="ruby-comment cmt"># Retrieve the output</span>
|
|
1021
|
+
253: <span class="ruby-identifier">out</span> = <span class="ruby-identifier">stdout</span>.<span class="ruby-identifier">read</span>
|
|
1022
|
+
254: <span class="ruby-identifier">err</span> = <span class="ruby-identifier">stderr</span>.<span class="ruby-identifier">read</span>
|
|
1023
|
+
255: <span class="ruby-keyword kw">end</span>
|
|
1024
|
+
256: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span>.<span class="ruby-identifier">exitstatus</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
|
|
1025
|
+
257: <span class="ruby-identifier">error</span>(<span class="ruby-node">"generateReport: #{err}"</span>)
|
|
1026
|
+
258: <span class="ruby-keyword kw">end</span>
|
|
1027
|
+
259: <span class="ruby-keyword kw">rescue</span>
|
|
1028
|
+
260: <span class="ruby-identifier">error</span>(<span class="ruby-node">"generateReport: Report generation failed: #{$!}"</span>)
|
|
1029
|
+
261: <span class="ruby-keyword kw">end</span>
|
|
1030
|
+
262: <span class="ruby-identifier">out</span>
|
|
1031
|
+
263: <span class="ruby-keyword kw">end</span></pre>
|
|
1008
1032
|
</div>
|
|
1009
1033
|
|
|
1010
1034
|
</div>
|
|
@@ -1016,7 +1040,7 @@ and can be further limited with a list of resource IDs passed by
|
|
|
1016
1040
|
|
|
1017
1041
|
|
|
1018
1042
|
<div id="send-eport-emplates-method" class="method-detail ">
|
|
1019
|
-
<a name="
|
|
1043
|
+
<a name="method-i-sendReportTemplates"></a>
|
|
1020
1044
|
|
|
1021
1045
|
<div class="method-heading">
|
|
1022
1046
|
|
|
@@ -1035,27 +1059,26 @@ and can be further limited with a list of resource IDs passed by
|
|
|
1035
1059
|
<div class="method-source-code"
|
|
1036
1060
|
id="send-eport-emplates-source">
|
|
1037
1061
|
<pre>
|
|
1038
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
187: <span class="ruby-keyword kw">end</span></pre>
|
|
1062
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 173</span>
|
|
1063
|
+
173: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendReportTemplates</span>(<span class="ruby-identifier">resources</span>)
|
|
1064
|
+
174: <span class="ruby-identifier">resources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">email</span><span class="ruby-operator">|</span>
|
|
1065
|
+
175: <span class="ruby-identifier">attachment</span> = <span class="ruby-node">"#{@templateDir}/#{id}_#{@date}.tji"</span>
|
|
1066
|
+
176: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">attachment</span>)
|
|
1067
|
+
177: <span class="ruby-identifier">error</span>(<span class="ruby-value str">"sendReportTemplates: "</span> <span class="ruby-operator">+</span>
|
|
1068
|
+
178: <span class="ruby-node">"#{@sheetType} sheet #{attachment} for #{name} not found"</span>)
|
|
1069
|
+
179: <span class="ruby-keyword kw">end</span>
|
|
1070
|
+
180: <span class="ruby-comment cmt"># Don't send out old templates again. @timeStamp has a higher</span>
|
|
1071
|
+
181: <span class="ruby-comment cmt"># resolution. We add 1s to avoid truncation errors.</span>
|
|
1072
|
+
182: <span class="ruby-keyword kw">if</span> (<span class="ruby-constant">File</span>.<span class="ruby-identifier">mtime</span>(<span class="ruby-identifier">attachment</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>) <span class="ruby-operator"><</span> <span class="ruby-ivar">@timeStamp</span>
|
|
1073
|
+
183: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Old template #{attachment} found. Not sending it out."</span>)
|
|
1074
|
+
184: <span class="ruby-keyword kw">next</span>
|
|
1075
|
+
185: <span class="ruby-keyword kw">end</span>
|
|
1076
|
+
186:
|
|
1077
|
+
187: <span class="ruby-identifier">message</span> = <span class="ruby-node">" Hello #{name}!\n\n#{@introText}"</span> <span class="ruby-operator">+</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">attachment</span>)
|
|
1078
|
+
188:
|
|
1079
|
+
189: <span class="ruby-identifier">sendEmail</span>(<span class="ruby-identifier">email</span>, <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@mailSubject</span>, <span class="ruby-ivar">@date</span>), <span class="ruby-identifier">message</span>, <span class="ruby-identifier">attachment</span>)
|
|
1080
|
+
190: <span class="ruby-keyword kw">end</span>
|
|
1081
|
+
191: <span class="ruby-keyword kw">end</span></pre>
|
|
1059
1082
|
</div>
|
|
1060
1083
|
|
|
1061
1084
|
</div>
|