taskjuggler 0.0.8 → 0.0.9
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 +1144 -2047
- data/README +1 -1
- data/Rakefile +6 -6
- data/data/css/tjmanual.css +20 -0
- data/data/css/tjreport.css +7 -6
- data/doc/AppConfig.html +136 -130
- data/doc/Arguments.html +46 -40
- data/doc/CHANGELOG.html +1162 -2057
- data/doc/COPYING.html +8 -2
- data/doc/Object.html +205 -199
- data/doc/README.html +9 -3
- data/doc/RuntimeConfig.html +75 -69
- data/doc/String.html +69 -63
- data/doc/TaskJuggler.html +350 -291
- data/doc/TaskJuggler/Account.html +26 -20
- data/doc/TaskJuggler/AccountAttribute.html +24 -18
- data/doc/TaskJuggler/AccountScenario.html +24 -18
- data/doc/TaskJuggler/Allocation.html +74 -68
- data/doc/TaskJuggler/AllocationAttribute.html +54 -48
- data/doc/TaskJuggler/AttributeBase.html +172 -93
- data/doc/TaskJuggler/AttributeDefinition.html +22 -16
- data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
- data/doc/TaskJuggler/BatchProcessor.html +263 -257
- data/doc/TaskJuggler/Booking.html +44 -38
- data/doc/TaskJuggler/BookingListAttribute.html +25 -21
- data/doc/TaskJuggler/BooleanAttribute.html +24 -18
- data/doc/TaskJuggler/CSVFile.html +193 -187
- data/doc/TaskJuggler/CellSettingPattern.html +13 -7
- data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
- data/doc/TaskJuggler/Charge.html +49 -43
- data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
- data/doc/TaskJuggler/ChargeSet.html +94 -88
- data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
- data/doc/TaskJuggler/CollisionDetector.html +142 -136
- data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
- data/doc/TaskJuggler/ColumnTable.html +50 -44
- data/doc/TaskJuggler/Daemon.html +71 -50
- data/doc/TaskJuggler/DataCache.html +110 -58
- data/doc/TaskJuggler/DataCacheEntry.html +22 -16
- data/doc/TaskJuggler/DateAttribute.html +24 -18
- data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
- data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
- data/doc/TaskJuggler/DurationAttribute.html +25 -19
- data/doc/TaskJuggler/FileList.html +25 -19
- data/doc/TaskJuggler/FileRecord.html +17 -11
- data/doc/TaskJuggler/FixnumAttribute.html +16 -10
- data/doc/TaskJuggler/FlagListAttribute.html +25 -21
- data/doc/TaskJuggler/FloatAttribute.html +20 -14
- data/doc/TaskJuggler/FormatListAttribute.html +17 -11
- data/doc/TaskJuggler/GanttChart.html +242 -236
- data/doc/TaskJuggler/GanttContainer.html +71 -67
- data/doc/TaskJuggler/GanttHeader.html +113 -107
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
- data/doc/TaskJuggler/GanttLine.html +217 -210
- data/doc/TaskJuggler/GanttLoadStack.html +89 -83
- data/doc/TaskJuggler/GanttMilestone.html +11 -6
- data/doc/TaskJuggler/GanttRouter.html +194 -186
- data/doc/TaskJuggler/GanttTaskBar.html +41 -34
- data/doc/TaskJuggler/HTMLDocument.html +52 -46
- data/doc/TaskJuggler/HTMLGraphics.html +58 -52
- data/doc/TaskJuggler/Interval.html +90 -84
- data/doc/TaskJuggler/IntervalList.html +777 -0
- data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
- data/doc/TaskJuggler/JobInfo.html +36 -30
- data/doc/TaskJuggler/Journal.html +188 -177
- data/doc/TaskJuggler/JournalEntry.html +36 -30
- data/doc/TaskJuggler/JournalEntryList.html +88 -82
- data/doc/TaskJuggler/KeywordArray.html +12 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
- data/doc/TaskJuggler/Limits.html +111 -105
- data/doc/TaskJuggler/Limits/Limit.html +71 -65
- data/doc/TaskJuggler/LimitsAttribute.html +21 -15
- data/doc/TaskJuggler/ListAttributeBase.html +16 -10
- data/doc/TaskJuggler/Log.html +111 -105
- data/doc/TaskJuggler/LogFile.html +54 -48
- data/doc/TaskJuggler/LogicalAttribute.html +35 -29
- data/doc/TaskJuggler/LogicalExpression.html +32 -26
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
- data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
- data/doc/TaskJuggler/LogicalFlag.html +24 -18
- data/doc/TaskJuggler/LogicalFunction.html +164 -158
- data/doc/TaskJuggler/LogicalOperation.html +138 -132
- data/doc/TaskJuggler/Macro.html +14 -8
- data/doc/TaskJuggler/MacroTable.html +42 -36
- data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
- data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
- data/doc/TaskJuggler/Message.html +56 -50
- data/doc/TaskJuggler/MessageHandler.html +73 -67
- data/doc/TaskJuggler/Navigator.html +92 -86
- data/doc/TaskJuggler/NavigatorElement.html +88 -82
- data/doc/TaskJuggler/NikuProject.html +15 -9
- data/doc/TaskJuggler/NikuReport.html +405 -370
- data/doc/TaskJuggler/NikuResource.html +13 -7
- data/doc/TaskJuggler/NodeListAttribute.html +13 -9
- data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
- data/doc/TaskJuggler/ProcessIntercom.html +116 -110
- data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
- data/doc/TaskJuggler/Project.html +1064 -895
- data/doc/TaskJuggler/ProjectBroker.html +439 -366
- data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
- data/doc/TaskJuggler/ProjectFileParser.html +329 -319
- data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
- data/doc/TaskJuggler/ProjectRecord.html +66 -60
- data/doc/TaskJuggler/ProjectServer.html +287 -280
- data/doc/TaskJuggler/ProjectServerIface.html +43 -37
- data/doc/TaskJuggler/PropertyAttribute.html +16 -10
- data/doc/TaskJuggler/PropertyList.html +205 -199
- data/doc/TaskJuggler/PropertySet.html +264 -296
- data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
- data/doc/TaskJuggler/Query.html +309 -524
- data/doc/TaskJuggler/RTFHandlers.html +17 -11
- data/doc/TaskJuggler/RTFNavigator.html +33 -27
- data/doc/TaskJuggler/RTFQuery.html +135 -129
- data/doc/TaskJuggler/RTFReport.html +63 -57
- data/doc/TaskJuggler/RTFReportLink.html +55 -49
- data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
- data/doc/TaskJuggler/RealFormat.html +64 -58
- data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
- data/doc/TaskJuggler/Report.html +294 -249
- data/doc/TaskJuggler/ReportBase.html +229 -223
- data/doc/TaskJuggler/ReportContext.html +52 -46
- data/doc/TaskJuggler/ReportServer.html +143 -137
- data/doc/TaskJuggler/ReportServerIface.html +51 -43
- data/doc/TaskJuggler/ReportServerRecord.html +36 -30
- data/doc/TaskJuggler/ReportServlet.html +167 -140
- data/doc/TaskJuggler/ReportTable.html +137 -131
- data/doc/TaskJuggler/ReportTableCell.html +332 -292
- data/doc/TaskJuggler/ReportTableColumn.html +46 -40
- data/doc/TaskJuggler/ReportTableLegend.html +43 -38
- data/doc/TaskJuggler/ReportTableLine.html +66 -60
- data/doc/TaskJuggler/Resource.html +166 -160
- data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
- data/doc/TaskJuggler/ResourceListRE.html +47 -41
- data/doc/TaskJuggler/ResourceScenario.html +671 -644
- data/doc/TaskJuggler/RichText.html +51 -45
- data/doc/TaskJuggler/RichTextAttribute.html +28 -22
- data/doc/TaskJuggler/RichTextDocument.html +96 -90
- data/doc/TaskJuggler/RichTextElement.html +503 -497
- data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
- data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
- data/doc/TaskJuggler/RichTextImage.html +14 -8
- data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
- data/doc/TaskJuggler/RichTextParser.html +59 -53
- data/doc/TaskJuggler/RichTextScanner.html +184 -178
- data/doc/TaskJuggler/RichTextSnip.html +69 -63
- data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
- data/doc/TaskJuggler/Scenario.html +13 -7
- data/doc/TaskJuggler/ScenarioData.html +40 -34
- data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
- data/doc/TaskJuggler/Scoreboard.html +129 -107
- data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
- data/doc/TaskJuggler/SheetReceiver.html +333 -327
- data/doc/TaskJuggler/SheetSender.html +227 -221
- data/doc/TaskJuggler/Shift.html +26 -20
- data/doc/TaskJuggler/ShiftAssignment.html +45 -39
- data/doc/TaskJuggler/ShiftAssignments.html +178 -172
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
- data/doc/TaskJuggler/ShiftScenario.html +29 -23
- data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
- data/doc/TaskJuggler/SortListAttribute.html +17 -13
- data/doc/TaskJuggler/SourceFileInfo.html +19 -13
- data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
- data/doc/TaskJuggler/StatusSheetReport.html +166 -159
- data/doc/TaskJuggler/StatusSheetSender.html +80 -74
- data/doc/TaskJuggler/StringAttribute.html +20 -14
- data/doc/TaskJuggler/SymbolAttribute.html +16 -10
- data/doc/TaskJuggler/SyntaxReference.html +231 -225
- data/doc/TaskJuggler/TOCEntry.html +46 -40
- data/doc/TaskJuggler/TSResourceRecord.html +15 -9
- data/doc/TaskJuggler/TSTaskRecord.html +16 -10
- data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
- data/doc/TaskJuggler/TableOfContents.html +28 -22
- data/doc/TaskJuggler/TableReport.html +906 -866
- data/doc/TaskJuggler/Task.html +99 -93
- data/doc/TaskJuggler/TaskDependency.html +24 -18
- data/doc/TaskJuggler/TaskListAttribute.html +29 -25
- data/doc/TaskJuggler/TaskListRE.html +46 -39
- data/doc/TaskJuggler/TaskScenario.html +2218 -1965
- data/doc/TaskJuggler/TextFormatter.html +154 -148
- data/doc/TaskJuggler/TextParser.html +362 -348
- data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
- data/doc/TaskJuggler/TextParser/Rule.html +147 -141
- data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
- data/doc/TaskJuggler/TextParser/State.html +88 -82
- data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
- data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
- data/doc/TaskJuggler/TextReport.html +80 -74
- data/doc/TaskJuggler/TextScanner.html +284 -272
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
- data/doc/TaskJuggler/TimeSheet.html +123 -117
- data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
- data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
- data/doc/TaskJuggler/TimeSheetReport.html +206 -199
- data/doc/TaskJuggler/TimeSheetSender.html +27 -21
- data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
- data/doc/TaskJuggler/TimeSheets.html +20 -14
- data/doc/TaskJuggler/Tj3AppBase.html +100 -94
- data/doc/TaskJuggler/Tj3Client.html +407 -483
- data/doc/TaskJuggler/Tj3Daemon.html +116 -107
- data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
- data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3SsSender.html +64 -58
- data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3TsSender.html +51 -45
- data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
- data/doc/TaskJuggler/TjException.html +13 -7
- data/doc/TaskJuggler/TjTime.html +444 -438
- data/doc/TaskJuggler/TjpExample.html +84 -78
- data/doc/TaskJuggler/TjpExportRE.html +356 -349
- data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
- data/doc/TaskJuggler/URLParameter.html +16 -10
- data/doc/TaskJuggler/UserManual.html +185 -179
- data/doc/TaskJuggler/VimSyntax.html +144 -138
- data/doc/TaskJuggler/WebServer.html +46 -39
- data/doc/TaskJuggler/WelcomePage.html +769 -0
- data/doc/TaskJuggler/WorkingHours.html +185 -179
- data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
- data/doc/TaskJuggler/XMLBlob.html +21 -15
- data/doc/TaskJuggler/XMLComment.html +17 -11
- data/doc/TaskJuggler/XMLDocument.html +33 -27
- data/doc/TaskJuggler/XMLElement.html +97 -91
- data/doc/TaskJuggler/XMLNamedText.html +13 -7
- data/doc/TaskJuggler/XMLText.html +32 -26
- data/doc/index.html +601 -563
- data/doc/lib/AccountScenario_rb.html +5 -3
- data/doc/lib/Account_rb.html +5 -3
- data/doc/lib/Allocation_rb.html +5 -3
- data/doc/lib/AppConfig_rb.html +5 -3
- data/doc/lib/AttributeBase_rb.html +5 -3
- data/doc/lib/AttributeDefinition_rb.html +5 -3
- data/doc/lib/Attributes_rb.html +5 -3
- data/doc/lib/BatchProcessor_rb.html +5 -3
- data/doc/lib/Booking_rb.html +5 -3
- data/doc/lib/ChargeSet_rb.html +5 -3
- data/doc/lib/Charge_rb.html +5 -3
- data/doc/lib/DataCache_rb.html +5 -3
- data/doc/lib/FileList_rb.html +5 -3
- data/doc/lib/HTMLDocument_rb.html +5 -3
- data/doc/lib/IntervalList_rb.html +69 -0
- data/doc/lib/Interval_rb.html +5 -3
- data/doc/lib/Journal_rb.html +5 -3
- data/doc/lib/KeywordArray_rb.html +5 -3
- data/doc/lib/KeywordDocumentation_rb.html +5 -3
- data/doc/lib/Limits_rb.html +5 -3
- data/doc/lib/LogFile_rb.html +5 -3
- data/doc/lib/Log_rb.html +5 -3
- data/doc/lib/LogicalExpression_rb.html +5 -3
- data/doc/lib/LogicalFunction_rb.html +5 -3
- data/doc/lib/LogicalOperation_rb.html +5 -3
- data/doc/lib/MacroTable_rb.html +5 -3
- data/doc/lib/MessageHandler_rb.html +5 -3
- data/doc/lib/ProjectFileParser_rb.html +5 -3
- data/doc/lib/ProjectFileScanner_rb.html +5 -3
- data/doc/lib/Project_rb.html +5 -3
- data/doc/lib/PropertyList_rb.html +5 -3
- data/doc/lib/PropertySet_rb.html +5 -3
- data/doc/lib/PropertyTreeNode_rb.html +5 -3
- data/doc/lib/Query_rb.html +5 -3
- data/doc/lib/RTFHandlers_rb.html +5 -3
- data/doc/lib/RTFNavigator_rb.html +5 -3
- data/doc/lib/RTFQuery_rb.html +5 -3
- data/doc/lib/RTFReportLink_rb.html +5 -3
- data/doc/lib/RTFReport_rb.html +5 -3
- data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
- data/doc/lib/RealFormat_rb.html +5 -3
- data/doc/lib/ResourceScenario_rb.html +5 -3
- data/doc/lib/Resource_rb.html +5 -3
- data/doc/lib/RichTextDocument_rb.html +5 -3
- data/doc/lib/RichTextElement_rb.html +5 -3
- data/doc/lib/RichTextFunctionExample_rb.html +5 -3
- data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
- data/doc/lib/RichTextParser_rb.html +5 -3
- data/doc/lib/RichTextScanner_rb.html +5 -3
- data/doc/lib/RichTextSnip_rb.html +5 -3
- data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
- data/doc/lib/RichText_rb.html +5 -3
- data/doc/lib/RuntimeConfig_rb.html +5 -3
- data/doc/lib/ScenarioData_rb.html +5 -3
- data/doc/lib/Scenario_rb.html +5 -3
- data/doc/lib/Scoreboard_rb.html +7 -3
- data/doc/lib/SheetHandlerBase_rb.html +5 -3
- data/doc/lib/SheetReceiver_rb.html +5 -3
- data/doc/lib/SheetSender_rb.html +5 -3
- data/doc/lib/ShiftAssignments_rb.html +5 -3
- data/doc/lib/ShiftScenario_rb.html +5 -3
- data/doc/lib/Shift_rb.html +5 -3
- data/doc/lib/SimpleQueryExpander_rb.html +5 -3
- data/doc/lib/SourceFileInfo_rb.html +5 -3
- data/doc/lib/StatusSheetReceiver_rb.html +5 -3
- data/doc/lib/StatusSheetSender_rb.html +5 -3
- data/doc/lib/SyntaxReference_rb.html +5 -3
- data/doc/lib/TOCEntry_rb.html +5 -3
- data/doc/lib/TableColumnDefinition_rb.html +5 -3
- data/doc/lib/TableOfContents_rb.html +5 -3
- data/doc/lib/TaskDependency_rb.html +5 -3
- data/doc/lib/TaskJuggler_rb.html +5 -3
- data/doc/lib/TaskScenario_rb.html +5 -3
- data/doc/lib/Task_rb.html +5 -3
- data/doc/lib/TextFormatter_rb.html +6 -4
- data/doc/lib/TextParser/Pattern_rb.html +5 -3
- data/doc/lib/TextParser/Rule_rb.html +5 -3
- data/doc/lib/TextParser/StackElement_rb.html +5 -3
- data/doc/lib/TextParser/State_rb.html +6 -4
- data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
- data/doc/lib/TextParser_rb.html +5 -3
- data/doc/lib/TextScanner_rb.html +5 -3
- data/doc/lib/TimeSheetReceiver_rb.html +5 -3
- data/doc/lib/TimeSheetSender_rb.html +5 -3
- data/doc/lib/TimeSheetSummary_rb.html +6 -4
- data/doc/lib/TimeSheets_rb.html +5 -3
- data/doc/lib/Tj3AppBase_rb.html +5 -3
- data/doc/lib/Tj3Config_rb.html +5 -3
- data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
- data/doc/lib/TjException_rb.html +5 -3
- data/doc/lib/TjTime_rb.html +5 -3
- data/doc/lib/TjpExample_rb.html +5 -3
- data/doc/lib/TjpSyntaxRules_rb.html +5 -3
- data/doc/lib/URLParameter_rb.html +5 -3
- data/doc/lib/UTF8String_rb.html +5 -3
- data/doc/lib/UserManual_rb.html +5 -3
- data/doc/lib/VimSyntax_rb.html +6 -4
- data/doc/lib/WorkingHours_rb.html +5 -3
- data/doc/lib/XMLDocument_rb.html +5 -3
- data/doc/lib/XMLElement_rb.html +5 -3
- data/doc/lib/daemon/Daemon_rb.html +5 -3
- data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
- data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
- data/doc/lib/daemon/ProjectServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServlet_rb.html +69 -0
- data/doc/lib/daemon/WebServer_rb.html +9 -3
- data/doc/lib/daemon/WelcomePage_rb.html +71 -0
- data/doc/lib/deep_copy_rb.html +5 -3
- data/doc/lib/reports/CSVFile_rb.html +5 -3
- data/doc/lib/reports/CollisionDetector_rb.html +5 -3
- data/doc/lib/reports/ColumnTable_rb.html +5 -3
- data/doc/lib/reports/GanttChart_rb.html +5 -3
- data/doc/lib/reports/GanttContainer_rb.html +5 -3
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
- data/doc/lib/reports/GanttHeader_rb.html +5 -3
- data/doc/lib/reports/GanttLine_rb.html +5 -3
- data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
- data/doc/lib/reports/GanttMilestone_rb.html +5 -3
- data/doc/lib/reports/GanttRouter_rb.html +5 -3
- data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
- data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
- data/doc/lib/reports/Navigator_rb.html +5 -3
- data/doc/lib/reports/NikuReport_rb.html +5 -3
- data/doc/lib/reports/ReportBase_rb.html +5 -3
- data/doc/lib/reports/ReportContext_rb.html +5 -3
- data/doc/lib/reports/ReportTableCell_rb.html +5 -3
- data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
- data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
- data/doc/lib/reports/ReportTableLine_rb.html +5 -3
- data/doc/lib/reports/ReportTable_rb.html +5 -3
- data/doc/lib/reports/Report_rb.html +5 -3
- data/doc/lib/reports/ResourceListRE_rb.html +5 -3
- data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
- data/doc/lib/reports/TableReport_rb.html +5 -3
- data/doc/lib/reports/TaskListRE_rb.html +5 -3
- data/doc/lib/reports/TextReport_rb.html +5 -3
- data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
- data/doc/lib/reports/TjpExportRE_rb.html +5 -3
- data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
- data/doc/lib/tj3client_rb.html +5 -3
- data/doc/lib/tj3d_rb.html +6 -4
- data/doc/lib/tj3man_rb.html +5 -3
- data/doc/lib/tj3ss_receiver_rb.html +5 -3
- data/doc/lib/tj3ss_sender_rb.html +5 -3
- data/doc/lib/tj3ts_receiver_rb.html +5 -3
- data/doc/lib/tj3ts_sender_rb.html +5 -3
- data/doc/lib/tj3ts_summary_rb.html +5 -3
- data/examples/tutorial.tjp +13 -5
- data/gem_spec.rb +3 -0
- data/lib/Account.rb +2 -1
- data/lib/AccountScenario.rb +2 -1
- data/lib/Allocation.rb +2 -1
- data/lib/AppConfig.rb +2 -1
- data/lib/AttributeBase.rb +19 -5
- data/lib/AttributeDefinition.rb +2 -1
- data/lib/Attributes.rb +49 -38
- data/lib/BatchProcessor.rb +2 -1
- data/lib/Booking.rb +2 -1
- data/lib/Charge.rb +2 -1
- data/lib/ChargeSet.rb +2 -1
- data/lib/DataCache.rb +15 -1
- data/lib/FileList.rb +2 -1
- data/lib/HTMLDocument.rb +2 -1
- data/lib/Interval.rb +2 -1
- data/lib/IntervalList.rb +100 -0
- data/lib/Journal.rb +8 -2
- data/lib/KeywordArray.rb +2 -1
- data/lib/KeywordDocumentation.rb +10 -6
- data/lib/Limits.rb +2 -1
- data/lib/Log.rb +3 -2
- data/lib/LogFile.rb +2 -1
- data/lib/LogicalExpression.rb +2 -1
- data/lib/LogicalFunction.rb +2 -1
- data/lib/LogicalOperation.rb +2 -1
- data/lib/MacroTable.rb +2 -1
- data/lib/MessageHandler.rb +2 -1
- data/lib/Project.rb +92 -25
- data/lib/ProjectFileParser.rb +7 -2
- data/lib/ProjectFileScanner.rb +2 -1
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +2 -6
- data/lib/PropertyTreeNode.rb +22 -44
- data/lib/Query.rb +32 -13
- data/lib/RTFHandlers.rb +2 -1
- data/lib/RTFNavigator.rb +2 -1
- data/lib/RTFQuery.rb +3 -2
- data/lib/RTFReport.rb +2 -1
- data/lib/RTFReportLink.rb +2 -1
- data/lib/RTFWithQuerySupport.rb +2 -1
- data/lib/RealFormat.rb +2 -1
- data/lib/Resource.rb +2 -1
- data/lib/ResourceScenario.rb +35 -14
- data/lib/RichText.rb +2 -1
- data/lib/RichTextDocument.rb +2 -1
- data/lib/RichTextElement.rb +2 -1
- data/lib/RichTextFunctionExample.rb +2 -1
- data/lib/RichTextFunctionHandler.rb +2 -1
- data/lib/RichTextParser.rb +2 -1
- data/lib/RichTextScanner.rb +2 -1
- data/lib/RichTextSnip.rb +2 -1
- data/lib/RichTextSyntaxRules.rb +2 -1
- data/lib/RuntimeConfig.rb +2 -1
- data/lib/Scenario.rb +2 -1
- data/lib/ScenarioData.rb +2 -1
- data/lib/Scoreboard.rb +27 -8
- data/lib/SheetHandlerBase.rb +2 -1
- data/lib/SheetReceiver.rb +2 -1
- data/lib/SheetSender.rb +2 -1
- data/lib/Shift.rb +2 -1
- data/lib/ShiftAssignments.rb +2 -1
- data/lib/ShiftScenario.rb +2 -1
- data/lib/SimpleQueryExpander.rb +2 -1
- data/lib/SourceFileInfo.rb +2 -1
- data/lib/StatusSheetReceiver.rb +2 -1
- data/lib/StatusSheetSender.rb +2 -1
- data/lib/SyntaxReference.rb +2 -1
- data/lib/TOCEntry.rb +2 -1
- data/lib/TableColumnDefinition.rb +9 -2
- data/lib/TableOfContents.rb +2 -1
- data/lib/Task.rb +2 -1
- data/lib/TaskDependency.rb +2 -1
- data/lib/TaskJuggler.rb +8 -6
- data/lib/TaskScenario.rb +337 -153
- data/lib/TextFormatter.rb +3 -2
- data/lib/TextParser.rb +7 -2
- data/lib/TextParser/Pattern.rb +2 -1
- data/lib/TextParser/Rule.rb +2 -1
- data/lib/TextParser/StackElement.rb +2 -1
- data/lib/TextParser/State.rb +3 -2
- data/lib/TextParser/TokenDoc.rb +2 -1
- data/lib/TextScanner.rb +12 -5
- data/lib/TimeSheetReceiver.rb +2 -1
- data/lib/TimeSheetSender.rb +2 -1
- data/lib/TimeSheetSummary.rb +3 -2
- data/lib/TimeSheets.rb +2 -1
- data/lib/Tj3AppBase.rb +6 -5
- data/lib/Tj3Config.rb +5 -4
- data/lib/Tj3SheetAppBase.rb +2 -1
- data/lib/TjException.rb +2 -1
- data/lib/TjTime.rb +2 -1
- data/lib/TjpExample.rb +2 -1
- data/lib/TjpSyntaxRules.rb +264 -65
- data/lib/URLParameter.rb +2 -1
- data/lib/UTF8String.rb +2 -1
- data/lib/UserManual.rb +2 -1
- data/lib/VimSyntax.rb +3 -2
- data/lib/WorkingHours.rb +2 -1
- data/lib/XMLDocument.rb +2 -1
- data/lib/XMLElement.rb +2 -1
- data/lib/daemon/Daemon.rb +3 -1
- data/lib/daemon/ProcessIntercom.rb +3 -1
- data/lib/daemon/ProjectBroker.rb +84 -32
- data/lib/daemon/ProjectServer.rb +5 -3
- data/lib/daemon/ReportServer.rb +8 -5
- data/lib/daemon/ReportServlet.rb +166 -0
- data/lib/daemon/WebServer.rb +6 -150
- data/lib/daemon/WelcomePage.rb +80 -0
- data/lib/deep_copy.rb +2 -1
- data/lib/reports/CSVFile.rb +2 -1
- data/lib/reports/CollisionDetector.rb +2 -1
- data/lib/reports/ColumnTable.rb +2 -1
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/GanttContainer.rb +3 -4
- data/lib/reports/GanttHeader.rb +2 -1
- data/lib/reports/GanttHeaderScaleItem.rb +2 -1
- data/lib/reports/GanttLine.rb +12 -10
- data/lib/reports/GanttLoadStack.rb +2 -1
- data/lib/reports/GanttMilestone.rb +3 -3
- data/lib/reports/GanttRouter.rb +4 -1
- data/lib/reports/GanttTaskBar.rb +9 -7
- data/lib/reports/HTMLGraphics.rb +2 -1
- data/lib/reports/Navigator.rb +2 -1
- data/lib/reports/NikuReport.rb +79 -49
- data/lib/reports/Report.rb +42 -10
- data/lib/reports/ReportBase.rb +2 -1
- data/lib/reports/ReportContext.rb +2 -1
- data/lib/reports/ReportTable.rb +2 -1
- data/lib/reports/ReportTableCell.rb +63 -28
- data/lib/reports/ReportTableColumn.rb +2 -1
- data/lib/reports/ReportTableLegend.rb +5 -5
- data/lib/reports/ReportTableLine.rb +2 -1
- data/lib/reports/ResourceListRE.rb +2 -1
- data/lib/reports/StatusSheetReport.rb +4 -2
- data/lib/reports/TableReport.rb +42 -38
- data/lib/reports/TaskListRE.rb +4 -2
- data/lib/reports/TextReport.rb +2 -1
- data/lib/reports/TimeSheetReport.rb +4 -2
- data/lib/reports/TjpExportRE.rb +4 -2
- data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
- data/lib/tj3client.rb +19 -36
- data/lib/tj3d.rb +6 -2
- data/lib/tj3man.rb +4 -3
- data/lib/tj3ss_receiver.rb +2 -1
- data/lib/tj3ss_sender.rb +2 -1
- data/lib/tj3ts_receiver.rb +2 -1
- data/lib/tj3ts_sender.rb +2 -1
- data/lib/tj3ts_summary.rb +2 -1
- data/manual/Day_To_Day_Juggling +36 -0
- data/manual/How_To_Contribute +9 -4
- data/manual/Installation +10 -3
- data/manual/TaskJuggler_Internals +0 -2
- data/manual/Tutorial +25 -3
- data/prj_cfg.rb +4 -2
- data/spec/IntervalList_spec.rb +138 -0
- data/spec/ProjectBroker_spec.rb +133 -0
- data/tasks/changelog.rake +41 -24
- data/tasks/csts.rake +1 -0
- data/tasks/gem.rake +1 -0
- data/tasks/rcov.rake +1 -1
- data/tasks/spec.rake +7 -0
- data/tasks/test.rake +1 -0
- data/test/MessageChecker.rb +2 -1
- data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
- data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
- data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
- data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
- data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
- data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
- data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
- data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
- data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
- data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
- data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
- data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
- data/test/TestSuite/StatusSheets/sender.log +256 -0
- data/test/TestSuite/StatusSheets/statussheets.log +9 -0
- data/test/TestSuite/StatusSheets/tj3d.log +395 -0
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
- data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
- data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
- data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
- data/test/all.rb +2 -4
- data/test/test_BatchProcessor.rb +2 -1
- data/test/test_CSV-Reports.rb +34 -23
- data/test/test_CSVFile.rb +2 -1
- data/test/test_CollisionDetector.rb +3 -2
- data/test/test_Journal.rb +2 -1
- data/test/test_Limits.rb +2 -1
- data/test/test_LogicalExpression.rb +2 -1
- data/test/test_MacroTable.rb +2 -1
- data/test/test_Project.rb +3 -2
- data/test/test_ProjectFileScanner.rb +2 -1
- data/test/test_PropertySet.rb +2 -1
- data/test/test_Query.rb +2 -1
- data/test/test_RealFormat.rb +2 -1
- data/test/test_ReportGenerator.rb +2 -1
- data/test/test_RichText.rb +2 -1
- data/test/test_Scheduler.rb +2 -1
- data/test/test_ShiftAssignments.rb +2 -1
- data/test/test_SimpleQueryExpander.rb +2 -1
- data/test/test_Syntax.rb +2 -1
- data/test/test_TextFormatter.rb +3 -2
- data/test/test_TjTime.rb +2 -1
- data/test/test_TjpExample.rb +2 -1
- data/test/test_URLParameter.rb +2 -1
- data/test/test_UTF8String.rb +2 -1
- data/test/test_WorkingHours.rb +2 -1
- data/test/test_deep_copy.rb +2 -1
- metadata +74 -20
- data/doc/StringIO.html +0 -595
- data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
- data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
- data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
|
@@ -141,6 +141,8 @@
|
|
|
141
141
|
|
|
142
142
|
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
|
143
143
|
|
|
144
|
+
<li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
|
145
|
+
|
|
144
146
|
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
|
145
147
|
|
|
146
148
|
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
|
@@ -219,6 +221,8 @@
|
|
|
219
221
|
|
|
220
222
|
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
|
221
223
|
|
|
224
|
+
<li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
|
225
|
+
|
|
222
226
|
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
|
223
227
|
|
|
224
228
|
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
|
@@ -251,6 +255,8 @@
|
|
|
251
255
|
|
|
252
256
|
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
|
253
257
|
|
|
258
|
+
<li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
|
259
|
+
|
|
254
260
|
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
|
255
261
|
|
|
256
262
|
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
|
@@ -531,6 +537,8 @@
|
|
|
531
537
|
|
|
532
538
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
533
539
|
|
|
540
|
+
<li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
|
541
|
+
|
|
534
542
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
535
543
|
|
|
536
544
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -557,8 +565,6 @@
|
|
|
557
565
|
|
|
558
566
|
<li><a href="../String.html">String</a></li>
|
|
559
567
|
|
|
560
|
-
<li><a href="../StringIO.html">StringIO</a></li>
|
|
561
|
-
|
|
562
568
|
</ul>
|
|
563
569
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
564
570
|
</div>
|
|
@@ -649,37 +655,37 @@ A base class for sheet senders.
|
|
|
649
655
|
<div class="method-source-code"
|
|
650
656
|
id="new-source">
|
|
651
657
|
<pre>
|
|
652
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
658
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 27</span>
|
|
659
|
+
27: <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>)
|
|
660
|
+
28: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">appName</span>)
|
|
661
|
+
29:
|
|
662
|
+
30: <span class="ruby-ivar">@sheetType</span> = <span class="ruby-identifier">type</span>
|
|
663
|
+
31: <span class="ruby-comment cmt"># The following settings must be provided by the deriving class.</span>
|
|
664
|
+
32: <span class="ruby-comment cmt"># This is a LogicalExpression string that controls what resources should</span>
|
|
665
|
+
33: <span class="ruby-comment cmt"># not be getting a report sheet template.</span>
|
|
666
|
+
34: <span class="ruby-ivar">@hideResource</span> = <span class="ruby-keyword kw">nil</span>
|
|
667
|
+
35: <span class="ruby-comment cmt"># This file contains the signature (date or interval) that the</span>
|
|
668
|
+
36: <span class="ruby-comment cmt"># SheetReceiver will accept as a valid signature.</span>
|
|
669
|
+
37: <span class="ruby-ivar">@signatureFile</span> = <span class="ruby-keyword kw">nil</span>
|
|
670
|
+
38: <span class="ruby-comment cmt"># The base directory of the sheet templates.</span>
|
|
671
|
+
39: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-keyword kw">nil</span>
|
|
672
|
+
40: <span class="ruby-comment cmt"># When true, existing templates will be regenerated and send out again.</span>
|
|
673
|
+
41: <span class="ruby-comment cmt"># Otherwise the existing template will not be send out again.</span>
|
|
674
|
+
42: <span class="ruby-ivar">@force</span> = <span class="ruby-keyword kw">false</span>
|
|
675
|
+
43:
|
|
676
|
+
44: <span class="ruby-ivar">@signatureFilter</span> = <span class="ruby-keyword kw">nil</span>
|
|
677
|
+
45: <span class="ruby-comment cmt"># The subject of the template email.</span>
|
|
678
|
+
46: <span class="ruby-ivar">@mailSubject</span> = <span class="ruby-keyword kw">nil</span>
|
|
679
|
+
47: <span class="ruby-comment cmt"># The into text of the template email.</span>
|
|
680
|
+
48: <span class="ruby-ivar">@introText</span> = <span class="ruby-keyword kw">nil</span>
|
|
681
|
+
49:
|
|
682
|
+
50: <span class="ruby-comment cmt"># The end date of the reported interval.</span>
|
|
683
|
+
51: <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>)
|
|
684
|
+
52: <span class="ruby-comment cmt"># Determines the length of the reported interval.</span>
|
|
685
|
+
53: <span class="ruby-ivar">@intervalDuration</span> = <span class="ruby-value str">'1w'</span>
|
|
686
|
+
54: <span class="ruby-comment cmt"># We need this to determine if we already sent out a report.</span>
|
|
687
|
+
55: <span class="ruby-ivar">@timeStamp</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>
|
|
688
|
+
56: <span class="ruby-keyword kw">end</span></pre>
|
|
683
689
|
</div>
|
|
684
690
|
|
|
685
691
|
</div>
|
|
@@ -721,15 +727,15 @@ and can be further limited with a list of resource IDs passed by
|
|
|
721
727
|
<div class="method-source-code"
|
|
722
728
|
id="send-emplates-source">
|
|
723
729
|
<pre>
|
|
724
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
730
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 61</span>
|
|
731
|
+
61: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendTemplates</span>(<span class="ruby-identifier">resourceList</span>)
|
|
732
|
+
62: <span class="ruby-identifier">setWorkingDir</span>
|
|
733
|
+
63: <span class="ruby-identifier">createDirectories</span>
|
|
734
|
+
64:
|
|
735
|
+
65: <span class="ruby-identifier">resources</span> = <span class="ruby-identifier">genResourceList</span>(<span class="ruby-identifier">resourceList</span>)
|
|
736
|
+
66: <span class="ruby-identifier">genTemplates</span>(<span class="ruby-identifier">resources</span>)
|
|
737
|
+
67: <span class="ruby-identifier">sendReportTemplates</span>(<span class="ruby-identifier">resources</span>)
|
|
738
|
+
68: <span class="ruby-keyword kw">end</span></pre>
|
|
733
739
|
</div>
|
|
734
740
|
|
|
735
741
|
</div>
|
|
@@ -766,17 +772,17 @@ and can be further limited with a list of resource IDs passed by
|
|
|
766
772
|
<div class="method-source-code"
|
|
767
773
|
id="create-irectories-source">
|
|
768
774
|
<pre>
|
|
769
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
775
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 72</span>
|
|
776
|
+
72: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">createDirectories</span>
|
|
777
|
+
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>)
|
|
778
|
+
74: <span class="ruby-identifier">warning</span>(<span class="ruby-node">"Creating directory #{@templateDir}"</span>)
|
|
779
|
+
75: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mkdir</span>(<span class="ruby-ivar">@templateDir</span>)
|
|
780
|
+
76: <span class="ruby-keyword kw">end</span>
|
|
781
|
+
77: <span class="ruby-ivar">@templateDir</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"/#{@date}"</span>
|
|
782
|
+
78: <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>)
|
|
783
|
+
79: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mkdir</span>(<span class="ruby-ivar">@templateDir</span>)
|
|
784
|
+
80: <span class="ruby-keyword kw">end</span>
|
|
785
|
+
81: <span class="ruby-keyword kw">end</span></pre>
|
|
780
786
|
</div>
|
|
781
787
|
|
|
782
788
|
</div>
|
|
@@ -807,56 +813,56 @@ and can be further limited with a list of resource IDs passed by
|
|
|
807
813
|
<div class="method-source-code"
|
|
808
814
|
id="enable-ignature-or-eporting-source">
|
|
809
815
|
<pre>
|
|
810
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
816
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 194</span>
|
|
817
|
+
194: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">enableSignatureForReporting</span>(<span class="ruby-identifier">templateFile</span>)
|
|
818
|
+
195: <span class="ruby-identifier">signature</span> = <span class="ruby-keyword kw">nil</span>
|
|
819
|
+
196: <span class="ruby-comment cmt"># That's a pretty bad hack to make reasonably certain that the tj3 server</span>
|
|
820
|
+
197: <span class="ruby-comment cmt"># process has put the complete file into the file system.</span>
|
|
821
|
+
198: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
|
|
822
|
+
199: <span class="ruby-keyword kw">begin</span>
|
|
823
|
+
200: <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>)
|
|
824
|
+
201: <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>
|
|
825
|
+
202: <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>)
|
|
826
|
+
203: <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>)
|
|
827
|
+
204: <span class="ruby-identifier">signature</span> = <span class="ruby-identifier">matches</span>[<span class="ruby-value">1</span>]
|
|
828
|
+
205: <span class="ruby-keyword kw">end</span>
|
|
829
|
+
206: <span class="ruby-keyword kw">end</span>
|
|
830
|
+
207: <span class="ruby-keyword kw">end</span>
|
|
831
|
+
208: <span class="ruby-keyword kw">end</span>
|
|
832
|
+
209: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
833
|
+
210: <span class="ruby-comment cmt"># If the file doesn't exist yet or the cannot yet be read, wait for</span>
|
|
834
|
+
211: <span class="ruby-comment cmt"># 300ms. We try this 100 times.</span>
|
|
835
|
+
212: <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>
|
|
836
|
+
213: <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>
|
|
837
|
+
214: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">signature</span>
|
|
838
|
+
215: <span class="ruby-identifier">error</span>(<span class="ruby-value str">"enableSignatureForReporting: Cannot find signature in file "</span> <span class="ruby-operator">+</span>
|
|
839
|
+
216: <span class="ruby-node">"#{templateFile}"</span>)
|
|
840
|
+
217: <span class="ruby-keyword kw">end</span>
|
|
841
|
+
218:
|
|
842
|
+
219: <span class="ruby-identifier">acceptedSignatures</span> = []
|
|
843
|
+
220: <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>)
|
|
844
|
+
221: <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>
|
|
845
|
+
222: <span class="ruby-identifier">acceptedSignatures</span> = <span class="ruby-identifier">file</span>.<span class="ruby-identifier">readlines</span>
|
|
846
|
+
223: <span class="ruby-keyword kw">end</span>
|
|
847
|
+
224: <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> }
|
|
848
|
+
225: <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> }
|
|
849
|
+
226: <span class="ruby-keyword kw">else</span>
|
|
850
|
+
227: <span class="ruby-identifier">info</span>(<span class="ruby-node">"#{@signatureFile} does not exist yet."</span>)
|
|
851
|
+
228: <span class="ruby-keyword kw">end</span>
|
|
852
|
+
229: <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>)
|
|
853
|
+
230: <span class="ruby-comment cmt"># Add the new signature</span>
|
|
854
|
+
231: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Adding #{signature} to #{@signatureFile}"</span>)
|
|
855
|
+
232: <span class="ruby-identifier">acceptedSignatures</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">signature</span>
|
|
856
|
+
233: <span class="ruby-comment cmt"># And write back the adapted file.</span>
|
|
857
|
+
234: <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>
|
|
858
|
+
235: <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>
|
|
859
|
+
236: <span class="ruby-identifier">file</span>.<span class="ruby-identifier">write</span>(<span class="ruby-node">"#{iv}\n"</span>)
|
|
860
|
+
237: <span class="ruby-keyword kw">end</span>
|
|
861
|
+
238: <span class="ruby-keyword kw">end</span>
|
|
862
|
+
239: <span class="ruby-keyword kw">else</span>
|
|
863
|
+
240: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Signature #{signature} is already listed in #{@signatureFile}"</span>)
|
|
864
|
+
241: <span class="ruby-keyword kw">end</span>
|
|
865
|
+
242: <span class="ruby-keyword kw">end</span></pre>
|
|
860
866
|
</div>
|
|
861
867
|
|
|
862
868
|
</div>
|
|
@@ -887,59 +893,59 @@ and can be further limited with a list of resource IDs passed by
|
|
|
887
893
|
<div class="method-source-code"
|
|
888
894
|
id="gen-esource-ist-source">
|
|
889
895
|
<pre>
|
|
890
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
896
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 83</span>
|
|
897
|
+
83: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">genResourceList</span>(<span class="ruby-identifier">resourceList</span>)
|
|
898
|
+
84: <span class="ruby-identifier">list</span> = []
|
|
899
|
+
85: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Retrieving resource list...'</span>)
|
|
900
|
+
86: <span class="ruby-comment cmt"># Create a TJP report definition for a CSV report that contains the id,</span>
|
|
901
|
+
87: <span class="ruby-comment cmt"># name, email, effort and free work for each resource that is not hidden</span>
|
|
902
|
+
88: <span class="ruby-comment cmt"># by @hideResource.</span>
|
|
903
|
+
89: <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>
|
|
904
|
+
90: <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>)
|
|
905
|
+
91: <span class="ruby-comment cmt"># Parse the CSV report into an Array of Arrays</span>
|
|
906
|
+
92: <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>)
|
|
907
|
+
93:
|
|
908
|
+
94: <span class="ruby-comment cmt"># Get rid of the column title line</span>
|
|
909
|
+
95: <span class="ruby-identifier">csv</span>.<span class="ruby-identifier">delete_at</span>(<span class="ruby-value">0</span>)
|
|
910
|
+
96:
|
|
911
|
+
97: <span class="ruby-comment cmt"># Process the CSV report line by line</span>
|
|
912
|
+
98: <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>
|
|
913
|
+
99: <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>
|
|
914
|
+
100: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Resource '#{id}' must have a valid email address"</span>)
|
|
915
|
+
101: <span class="ruby-keyword kw">end</span>
|
|
916
|
+
102:
|
|
917
|
+
103: <span class="ruby-comment cmt"># Ignore resources that are on vacation for the whole period.</span>
|
|
918
|
+
104: <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>
|
|
919
|
+
105: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Resource '#{id}' was on vacation the whole period"</span>)
|
|
920
|
+
106: <span class="ruby-keyword kw">next</span>
|
|
921
|
+
107: <span class="ruby-keyword kw">end</span>
|
|
922
|
+
108:
|
|
923
|
+
109: <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> ]
|
|
924
|
+
110: <span class="ruby-keyword kw">end</span>
|
|
925
|
+
111:
|
|
926
|
+
112: <span class="ruby-comment cmt"># Save the resource list to a file. We'll need it in the receiver again.</span>
|
|
927
|
+
113: <span class="ruby-keyword kw">begin</span>
|
|
928
|
+
114: <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>
|
|
929
|
+
115: <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>
|
|
930
|
+
116: <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">dump</span>(<span class="ruby-identifier">list</span>, <span class="ruby-identifier">file</span>)
|
|
931
|
+
117: <span class="ruby-keyword kw">end</span>
|
|
932
|
+
118: <span class="ruby-keyword kw">rescue</span>
|
|
933
|
+
119: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Saving of #{fileName} failed: #{$!}"</span>)
|
|
934
|
+
120: <span class="ruby-keyword kw">end</span>
|
|
935
|
+
121:
|
|
936
|
+
122: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">empty?</span>
|
|
937
|
+
123: <span class="ruby-comment cmt"># When the user specified resource list is empty, we generate templates</span>
|
|
938
|
+
124: <span class="ruby-comment cmt"># for all users that don't match the @hideResource filter. Otherwise we</span>
|
|
939
|
+
125: <span class="ruby-comment cmt"># only generate templates for those in the list and that are not hidden</span>
|
|
940
|
+
126: <span class="ruby-comment cmt"># by the filter.</span>
|
|
941
|
+
127: <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>]) }
|
|
942
|
+
128: <span class="ruby-keyword kw">end</span>
|
|
943
|
+
129:
|
|
944
|
+
130: <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>
|
|
945
|
+
131:
|
|
946
|
+
132: <span class="ruby-identifier">info</span>(<span class="ruby-node">"#{list.length} resources found"</span>)
|
|
947
|
+
133: <span class="ruby-identifier">list</span>
|
|
948
|
+
134: <span class="ruby-keyword kw">end</span></pre>
|
|
943
949
|
</div>
|
|
944
950
|
|
|
945
951
|
</div>
|
|
@@ -970,29 +976,29 @@ and can be further limited with a list of resource IDs passed by
|
|
|
970
976
|
<div class="method-source-code"
|
|
971
977
|
id="gen-emplates-source">
|
|
972
978
|
<pre>
|
|
973
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
979
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 145</span>
|
|
980
|
+
145: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">genTemplates</span>(<span class="ruby-identifier">resources</span>)
|
|
981
|
+
146: <span class="ruby-identifier">firstTemplateFile</span> = <span class="ruby-keyword kw">nil</span>
|
|
982
|
+
147: <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>
|
|
983
|
+
148: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">resInfo</span>[<span class="ruby-value">0</span>]
|
|
984
|
+
149: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Generating template for #{res}..."</span>)
|
|
985
|
+
150: <span class="ruby-identifier">reportId</span> = <span class="ruby-node">"sheet_template_#{res}"</span>
|
|
986
|
+
151: <span class="ruby-identifier">templateFile</span> = <span class="ruby-node">"#{@templateDir}/#{res}_#{@date}"</span>
|
|
987
|
+
152: <span class="ruby-comment cmt"># We use the first template file to get the sheet interval.</span>
|
|
988
|
+
153: <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>
|
|
989
|
+
154:
|
|
990
|
+
155: <span class="ruby-comment cmt"># Don't re-generate already existing templates unless we are in force</span>
|
|
991
|
+
156: <span class="ruby-comment cmt"># mode. We probably have sent them out earlier with a manual trigger.</span>
|
|
992
|
+
157: <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>)
|
|
993
|
+
158: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Skipping already existing #{templateFile}.tji."</span>)
|
|
994
|
+
159: <span class="ruby-keyword kw">next</span>
|
|
995
|
+
160: <span class="ruby-keyword kw">end</span>
|
|
996
|
+
161:
|
|
997
|
+
162: <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>
|
|
998
|
+
163: <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">reportId</span>, <span class="ruby-identifier">reportDef</span>)
|
|
999
|
+
164: <span class="ruby-keyword kw">end</span>
|
|
1000
|
+
165: <span class="ruby-identifier">enableSignatureForReporting</span>(<span class="ruby-identifier">firstTemplateFile</span>)
|
|
1001
|
+
166: <span class="ruby-keyword kw">end</span></pre>
|
|
996
1002
|
</div>
|
|
997
1003
|
|
|
998
1004
|
</div>
|
|
@@ -1023,28 +1029,28 @@ and can be further limited with a list of resource IDs passed by
|
|
|
1023
1029
|
<div class="method-source-code"
|
|
1024
1030
|
id="generate-eport-source">
|
|
1025
1031
|
<pre>
|
|
1026
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1032
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 244</span>
|
|
1033
|
+
244: <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>)
|
|
1034
|
+
245: <span class="ruby-identifier">out</span> = <span class="ruby-value str">''</span>
|
|
1035
|
+
246: <span class="ruby-identifier">err</span> = <span class="ruby-value str">''</span>
|
|
1036
|
+
247: <span class="ruby-keyword kw">begin</span>
|
|
1037
|
+
248: <span class="ruby-identifier">command</span> = <span class="ruby-node">"tj3client --silent report #{@projectId} #{id} = ."</span>
|
|
1038
|
+
249: <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>
|
|
1039
|
+
250: <span class="ruby-comment cmt"># Send the report definition to the tj3client process via stdin.</span>
|
|
1040
|
+
251: <span class="ruby-identifier">stdin</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">reportDef</span>)
|
|
1041
|
+
252: <span class="ruby-identifier">stdin</span>.<span class="ruby-identifier">close</span>
|
|
1042
|
+
253: <span class="ruby-comment cmt"># Retrieve the output</span>
|
|
1043
|
+
254: <span class="ruby-identifier">out</span> = <span class="ruby-identifier">stdout</span>.<span class="ruby-identifier">read</span>
|
|
1044
|
+
255: <span class="ruby-identifier">err</span> = <span class="ruby-identifier">stderr</span>.<span class="ruby-identifier">read</span>
|
|
1045
|
+
256: <span class="ruby-keyword kw">end</span>
|
|
1046
|
+
257: <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>
|
|
1047
|
+
258: <span class="ruby-identifier">error</span>(<span class="ruby-node">"generateReport: #{err}"</span>)
|
|
1048
|
+
259: <span class="ruby-keyword kw">end</span>
|
|
1049
|
+
260: <span class="ruby-keyword kw">rescue</span>
|
|
1050
|
+
261: <span class="ruby-identifier">error</span>(<span class="ruby-node">"generateReport: Report generation failed: #{$!}"</span>)
|
|
1051
|
+
262: <span class="ruby-keyword kw">end</span>
|
|
1052
|
+
263: <span class="ruby-identifier">out</span>
|
|
1053
|
+
264: <span class="ruby-keyword kw">end</span></pre>
|
|
1048
1054
|
</div>
|
|
1049
1055
|
|
|
1050
1056
|
</div>
|
|
@@ -1075,26 +1081,26 @@ and can be further limited with a list of resource IDs passed by
|
|
|
1075
1081
|
<div class="method-source-code"
|
|
1076
1082
|
id="send-eport-emplates-source">
|
|
1077
1083
|
<pre>
|
|
1078
|
-
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1084
|
+
<span class="ruby-comment cmt"># File lib/SheetSender.rb, line 174</span>
|
|
1085
|
+
174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendReportTemplates</span>(<span class="ruby-identifier">resources</span>)
|
|
1086
|
+
175: <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>
|
|
1087
|
+
176: <span class="ruby-identifier">attachment</span> = <span class="ruby-node">"#{@templateDir}/#{id}_#{@date}.tji"</span>
|
|
1088
|
+
177: <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>)
|
|
1089
|
+
178: <span class="ruby-identifier">error</span>(<span class="ruby-value str">"sendReportTemplates: "</span> <span class="ruby-operator">+</span>
|
|
1090
|
+
179: <span class="ruby-node">"#{@sheetType} sheet #{attachment} for #{name} not found"</span>)
|
|
1091
|
+
180: <span class="ruby-keyword kw">end</span>
|
|
1092
|
+
181: <span class="ruby-comment cmt"># Don't send out old templates again. @timeStamp has a higher</span>
|
|
1093
|
+
182: <span class="ruby-comment cmt"># resolution. We add 1s to avoid truncation errors.</span>
|
|
1094
|
+
183: <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>
|
|
1095
|
+
184: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Old template #{attachment} found. Not sending it out."</span>)
|
|
1096
|
+
185: <span class="ruby-keyword kw">next</span>
|
|
1097
|
+
186: <span class="ruby-keyword kw">end</span>
|
|
1098
|
+
187:
|
|
1099
|
+
188: <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>)
|
|
1100
|
+
189:
|
|
1101
|
+
190: <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>)
|
|
1102
|
+
191: <span class="ruby-keyword kw">end</span>
|
|
1103
|
+
192: <span class="ruby-keyword kw">end</span></pre>
|
|
1098
1104
|
</div>
|
|
1099
1105
|
|
|
1100
1106
|
</div>
|