taskjuggler 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (613) hide show
  1. data/CHANGELOG +1144 -2047
  2. data/README +1 -1
  3. data/Rakefile +6 -6
  4. data/data/css/tjmanual.css +20 -0
  5. data/data/css/tjreport.css +7 -6
  6. data/doc/AppConfig.html +136 -130
  7. data/doc/Arguments.html +46 -40
  8. data/doc/CHANGELOG.html +1162 -2057
  9. data/doc/COPYING.html +8 -2
  10. data/doc/Object.html +205 -199
  11. data/doc/README.html +9 -3
  12. data/doc/RuntimeConfig.html +75 -69
  13. data/doc/String.html +69 -63
  14. data/doc/TaskJuggler.html +350 -291
  15. data/doc/TaskJuggler/Account.html +26 -20
  16. data/doc/TaskJuggler/AccountAttribute.html +24 -18
  17. data/doc/TaskJuggler/AccountScenario.html +24 -18
  18. data/doc/TaskJuggler/Allocation.html +74 -68
  19. data/doc/TaskJuggler/AllocationAttribute.html +54 -48
  20. data/doc/TaskJuggler/AttributeBase.html +172 -93
  21. data/doc/TaskJuggler/AttributeDefinition.html +22 -16
  22. data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
  23. data/doc/TaskJuggler/BatchProcessor.html +263 -257
  24. data/doc/TaskJuggler/Booking.html +44 -38
  25. data/doc/TaskJuggler/BookingListAttribute.html +25 -21
  26. data/doc/TaskJuggler/BooleanAttribute.html +24 -18
  27. data/doc/TaskJuggler/CSVFile.html +193 -187
  28. data/doc/TaskJuggler/CellSettingPattern.html +13 -7
  29. data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
  30. data/doc/TaskJuggler/Charge.html +49 -43
  31. data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
  32. data/doc/TaskJuggler/ChargeSet.html +94 -88
  33. data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
  34. data/doc/TaskJuggler/CollisionDetector.html +142 -136
  35. data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
  36. data/doc/TaskJuggler/ColumnTable.html +50 -44
  37. data/doc/TaskJuggler/Daemon.html +71 -50
  38. data/doc/TaskJuggler/DataCache.html +110 -58
  39. data/doc/TaskJuggler/DataCacheEntry.html +22 -16
  40. data/doc/TaskJuggler/DateAttribute.html +24 -18
  41. data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
  42. data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
  43. data/doc/TaskJuggler/DurationAttribute.html +25 -19
  44. data/doc/TaskJuggler/FileList.html +25 -19
  45. data/doc/TaskJuggler/FileRecord.html +17 -11
  46. data/doc/TaskJuggler/FixnumAttribute.html +16 -10
  47. data/doc/TaskJuggler/FlagListAttribute.html +25 -21
  48. data/doc/TaskJuggler/FloatAttribute.html +20 -14
  49. data/doc/TaskJuggler/FormatListAttribute.html +17 -11
  50. data/doc/TaskJuggler/GanttChart.html +242 -236
  51. data/doc/TaskJuggler/GanttContainer.html +71 -67
  52. data/doc/TaskJuggler/GanttHeader.html +113 -107
  53. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
  54. data/doc/TaskJuggler/GanttLine.html +217 -210
  55. data/doc/TaskJuggler/GanttLoadStack.html +89 -83
  56. data/doc/TaskJuggler/GanttMilestone.html +11 -6
  57. data/doc/TaskJuggler/GanttRouter.html +194 -186
  58. data/doc/TaskJuggler/GanttTaskBar.html +41 -34
  59. data/doc/TaskJuggler/HTMLDocument.html +52 -46
  60. data/doc/TaskJuggler/HTMLGraphics.html +58 -52
  61. data/doc/TaskJuggler/Interval.html +90 -84
  62. data/doc/TaskJuggler/IntervalList.html +777 -0
  63. data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
  64. data/doc/TaskJuggler/JobInfo.html +36 -30
  65. data/doc/TaskJuggler/Journal.html +188 -177
  66. data/doc/TaskJuggler/JournalEntry.html +36 -30
  67. data/doc/TaskJuggler/JournalEntryList.html +88 -82
  68. data/doc/TaskJuggler/KeywordArray.html +12 -6
  69. data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
  70. data/doc/TaskJuggler/Limits.html +111 -105
  71. data/doc/TaskJuggler/Limits/Limit.html +71 -65
  72. data/doc/TaskJuggler/LimitsAttribute.html +21 -15
  73. data/doc/TaskJuggler/ListAttributeBase.html +16 -10
  74. data/doc/TaskJuggler/Log.html +111 -105
  75. data/doc/TaskJuggler/LogFile.html +54 -48
  76. data/doc/TaskJuggler/LogicalAttribute.html +35 -29
  77. data/doc/TaskJuggler/LogicalExpression.html +32 -26
  78. data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
  79. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
  80. data/doc/TaskJuggler/LogicalFlag.html +24 -18
  81. data/doc/TaskJuggler/LogicalFunction.html +164 -158
  82. data/doc/TaskJuggler/LogicalOperation.html +138 -132
  83. data/doc/TaskJuggler/Macro.html +14 -8
  84. data/doc/TaskJuggler/MacroTable.html +42 -36
  85. data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
  86. data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
  87. data/doc/TaskJuggler/Message.html +56 -50
  88. data/doc/TaskJuggler/MessageHandler.html +73 -67
  89. data/doc/TaskJuggler/Navigator.html +92 -86
  90. data/doc/TaskJuggler/NavigatorElement.html +88 -82
  91. data/doc/TaskJuggler/NikuProject.html +15 -9
  92. data/doc/TaskJuggler/NikuReport.html +405 -370
  93. data/doc/TaskJuggler/NikuResource.html +13 -7
  94. data/doc/TaskJuggler/NodeListAttribute.html +13 -9
  95. data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
  96. data/doc/TaskJuggler/ProcessIntercom.html +116 -110
  97. data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
  98. data/doc/TaskJuggler/Project.html +1064 -895
  99. data/doc/TaskJuggler/ProjectBroker.html +439 -366
  100. data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
  101. data/doc/TaskJuggler/ProjectFileParser.html +329 -319
  102. data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
  103. data/doc/TaskJuggler/ProjectRecord.html +66 -60
  104. data/doc/TaskJuggler/ProjectServer.html +287 -280
  105. data/doc/TaskJuggler/ProjectServerIface.html +43 -37
  106. data/doc/TaskJuggler/PropertyAttribute.html +16 -10
  107. data/doc/TaskJuggler/PropertyList.html +205 -199
  108. data/doc/TaskJuggler/PropertySet.html +264 -296
  109. data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
  110. data/doc/TaskJuggler/Query.html +309 -524
  111. data/doc/TaskJuggler/RTFHandlers.html +17 -11
  112. data/doc/TaskJuggler/RTFNavigator.html +33 -27
  113. data/doc/TaskJuggler/RTFQuery.html +135 -129
  114. data/doc/TaskJuggler/RTFReport.html +63 -57
  115. data/doc/TaskJuggler/RTFReportLink.html +55 -49
  116. data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
  117. data/doc/TaskJuggler/RealFormat.html +64 -58
  118. data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
  119. data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
  120. data/doc/TaskJuggler/Report.html +294 -249
  121. data/doc/TaskJuggler/ReportBase.html +229 -223
  122. data/doc/TaskJuggler/ReportContext.html +52 -46
  123. data/doc/TaskJuggler/ReportServer.html +143 -137
  124. data/doc/TaskJuggler/ReportServerIface.html +51 -43
  125. data/doc/TaskJuggler/ReportServerRecord.html +36 -30
  126. data/doc/TaskJuggler/ReportServlet.html +167 -140
  127. data/doc/TaskJuggler/ReportTable.html +137 -131
  128. data/doc/TaskJuggler/ReportTableCell.html +332 -292
  129. data/doc/TaskJuggler/ReportTableColumn.html +46 -40
  130. data/doc/TaskJuggler/ReportTableLegend.html +43 -38
  131. data/doc/TaskJuggler/ReportTableLine.html +66 -60
  132. data/doc/TaskJuggler/Resource.html +166 -160
  133. data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
  134. data/doc/TaskJuggler/ResourceListRE.html +47 -41
  135. data/doc/TaskJuggler/ResourceScenario.html +671 -644
  136. data/doc/TaskJuggler/RichText.html +51 -45
  137. data/doc/TaskJuggler/RichTextAttribute.html +28 -22
  138. data/doc/TaskJuggler/RichTextDocument.html +96 -90
  139. data/doc/TaskJuggler/RichTextElement.html +503 -497
  140. data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
  141. data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
  142. data/doc/TaskJuggler/RichTextImage.html +14 -8
  143. data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
  144. data/doc/TaskJuggler/RichTextParser.html +59 -53
  145. data/doc/TaskJuggler/RichTextScanner.html +184 -178
  146. data/doc/TaskJuggler/RichTextSnip.html +69 -63
  147. data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
  148. data/doc/TaskJuggler/Scenario.html +13 -7
  149. data/doc/TaskJuggler/ScenarioData.html +40 -34
  150. data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
  151. data/doc/TaskJuggler/Scoreboard.html +129 -107
  152. data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
  153. data/doc/TaskJuggler/SheetReceiver.html +333 -327
  154. data/doc/TaskJuggler/SheetSender.html +227 -221
  155. data/doc/TaskJuggler/Shift.html +26 -20
  156. data/doc/TaskJuggler/ShiftAssignment.html +45 -39
  157. data/doc/TaskJuggler/ShiftAssignments.html +178 -172
  158. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
  159. data/doc/TaskJuggler/ShiftScenario.html +29 -23
  160. data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
  161. data/doc/TaskJuggler/SortListAttribute.html +17 -13
  162. data/doc/TaskJuggler/SourceFileInfo.html +19 -13
  163. data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
  164. data/doc/TaskJuggler/StatusSheetReport.html +166 -159
  165. data/doc/TaskJuggler/StatusSheetSender.html +80 -74
  166. data/doc/TaskJuggler/StringAttribute.html +20 -14
  167. data/doc/TaskJuggler/SymbolAttribute.html +16 -10
  168. data/doc/TaskJuggler/SyntaxReference.html +231 -225
  169. data/doc/TaskJuggler/TOCEntry.html +46 -40
  170. data/doc/TaskJuggler/TSResourceRecord.html +15 -9
  171. data/doc/TaskJuggler/TSTaskRecord.html +16 -10
  172. data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
  173. data/doc/TaskJuggler/TableOfContents.html +28 -22
  174. data/doc/TaskJuggler/TableReport.html +906 -866
  175. data/doc/TaskJuggler/Task.html +99 -93
  176. data/doc/TaskJuggler/TaskDependency.html +24 -18
  177. data/doc/TaskJuggler/TaskListAttribute.html +29 -25
  178. data/doc/TaskJuggler/TaskListRE.html +46 -39
  179. data/doc/TaskJuggler/TaskScenario.html +2218 -1965
  180. data/doc/TaskJuggler/TextFormatter.html +154 -148
  181. data/doc/TaskJuggler/TextParser.html +362 -348
  182. data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
  183. data/doc/TaskJuggler/TextParser/Rule.html +147 -141
  184. data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
  185. data/doc/TaskJuggler/TextParser/State.html +88 -82
  186. data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
  187. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
  188. data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
  189. data/doc/TaskJuggler/TextReport.html +80 -74
  190. data/doc/TaskJuggler/TextScanner.html +284 -272
  191. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
  192. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
  193. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
  194. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  195. data/doc/TaskJuggler/TimeSheet.html +123 -117
  196. data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
  197. data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
  198. data/doc/TaskJuggler/TimeSheetReport.html +206 -199
  199. data/doc/TaskJuggler/TimeSheetSender.html +27 -21
  200. data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
  201. data/doc/TaskJuggler/TimeSheets.html +20 -14
  202. data/doc/TaskJuggler/Tj3AppBase.html +100 -94
  203. data/doc/TaskJuggler/Tj3Client.html +407 -483
  204. data/doc/TaskJuggler/Tj3Daemon.html +116 -107
  205. data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
  206. data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
  207. data/doc/TaskJuggler/Tj3SsSender.html +64 -58
  208. data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
  209. data/doc/TaskJuggler/Tj3TsSender.html +51 -45
  210. data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
  211. data/doc/TaskJuggler/TjException.html +13 -7
  212. data/doc/TaskJuggler/TjTime.html +444 -438
  213. data/doc/TaskJuggler/TjpExample.html +84 -78
  214. data/doc/TaskJuggler/TjpExportRE.html +356 -349
  215. data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
  216. data/doc/TaskJuggler/URLParameter.html +16 -10
  217. data/doc/TaskJuggler/UserManual.html +185 -179
  218. data/doc/TaskJuggler/VimSyntax.html +144 -138
  219. data/doc/TaskJuggler/WebServer.html +46 -39
  220. data/doc/TaskJuggler/WelcomePage.html +769 -0
  221. data/doc/TaskJuggler/WorkingHours.html +185 -179
  222. data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
  223. data/doc/TaskJuggler/XMLBlob.html +21 -15
  224. data/doc/TaskJuggler/XMLComment.html +17 -11
  225. data/doc/TaskJuggler/XMLDocument.html +33 -27
  226. data/doc/TaskJuggler/XMLElement.html +97 -91
  227. data/doc/TaskJuggler/XMLNamedText.html +13 -7
  228. data/doc/TaskJuggler/XMLText.html +32 -26
  229. data/doc/index.html +601 -563
  230. data/doc/lib/AccountScenario_rb.html +5 -3
  231. data/doc/lib/Account_rb.html +5 -3
  232. data/doc/lib/Allocation_rb.html +5 -3
  233. data/doc/lib/AppConfig_rb.html +5 -3
  234. data/doc/lib/AttributeBase_rb.html +5 -3
  235. data/doc/lib/AttributeDefinition_rb.html +5 -3
  236. data/doc/lib/Attributes_rb.html +5 -3
  237. data/doc/lib/BatchProcessor_rb.html +5 -3
  238. data/doc/lib/Booking_rb.html +5 -3
  239. data/doc/lib/ChargeSet_rb.html +5 -3
  240. data/doc/lib/Charge_rb.html +5 -3
  241. data/doc/lib/DataCache_rb.html +5 -3
  242. data/doc/lib/FileList_rb.html +5 -3
  243. data/doc/lib/HTMLDocument_rb.html +5 -3
  244. data/doc/lib/IntervalList_rb.html +69 -0
  245. data/doc/lib/Interval_rb.html +5 -3
  246. data/doc/lib/Journal_rb.html +5 -3
  247. data/doc/lib/KeywordArray_rb.html +5 -3
  248. data/doc/lib/KeywordDocumentation_rb.html +5 -3
  249. data/doc/lib/Limits_rb.html +5 -3
  250. data/doc/lib/LogFile_rb.html +5 -3
  251. data/doc/lib/Log_rb.html +5 -3
  252. data/doc/lib/LogicalExpression_rb.html +5 -3
  253. data/doc/lib/LogicalFunction_rb.html +5 -3
  254. data/doc/lib/LogicalOperation_rb.html +5 -3
  255. data/doc/lib/MacroTable_rb.html +5 -3
  256. data/doc/lib/MessageHandler_rb.html +5 -3
  257. data/doc/lib/ProjectFileParser_rb.html +5 -3
  258. data/doc/lib/ProjectFileScanner_rb.html +5 -3
  259. data/doc/lib/Project_rb.html +5 -3
  260. data/doc/lib/PropertyList_rb.html +5 -3
  261. data/doc/lib/PropertySet_rb.html +5 -3
  262. data/doc/lib/PropertyTreeNode_rb.html +5 -3
  263. data/doc/lib/Query_rb.html +5 -3
  264. data/doc/lib/RTFHandlers_rb.html +5 -3
  265. data/doc/lib/RTFNavigator_rb.html +5 -3
  266. data/doc/lib/RTFQuery_rb.html +5 -3
  267. data/doc/lib/RTFReportLink_rb.html +5 -3
  268. data/doc/lib/RTFReport_rb.html +5 -3
  269. data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
  270. data/doc/lib/RealFormat_rb.html +5 -3
  271. data/doc/lib/ResourceScenario_rb.html +5 -3
  272. data/doc/lib/Resource_rb.html +5 -3
  273. data/doc/lib/RichTextDocument_rb.html +5 -3
  274. data/doc/lib/RichTextElement_rb.html +5 -3
  275. data/doc/lib/RichTextFunctionExample_rb.html +5 -3
  276. data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
  277. data/doc/lib/RichTextParser_rb.html +5 -3
  278. data/doc/lib/RichTextScanner_rb.html +5 -3
  279. data/doc/lib/RichTextSnip_rb.html +5 -3
  280. data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
  281. data/doc/lib/RichText_rb.html +5 -3
  282. data/doc/lib/RuntimeConfig_rb.html +5 -3
  283. data/doc/lib/ScenarioData_rb.html +5 -3
  284. data/doc/lib/Scenario_rb.html +5 -3
  285. data/doc/lib/Scoreboard_rb.html +7 -3
  286. data/doc/lib/SheetHandlerBase_rb.html +5 -3
  287. data/doc/lib/SheetReceiver_rb.html +5 -3
  288. data/doc/lib/SheetSender_rb.html +5 -3
  289. data/doc/lib/ShiftAssignments_rb.html +5 -3
  290. data/doc/lib/ShiftScenario_rb.html +5 -3
  291. data/doc/lib/Shift_rb.html +5 -3
  292. data/doc/lib/SimpleQueryExpander_rb.html +5 -3
  293. data/doc/lib/SourceFileInfo_rb.html +5 -3
  294. data/doc/lib/StatusSheetReceiver_rb.html +5 -3
  295. data/doc/lib/StatusSheetSender_rb.html +5 -3
  296. data/doc/lib/SyntaxReference_rb.html +5 -3
  297. data/doc/lib/TOCEntry_rb.html +5 -3
  298. data/doc/lib/TableColumnDefinition_rb.html +5 -3
  299. data/doc/lib/TableOfContents_rb.html +5 -3
  300. data/doc/lib/TaskDependency_rb.html +5 -3
  301. data/doc/lib/TaskJuggler_rb.html +5 -3
  302. data/doc/lib/TaskScenario_rb.html +5 -3
  303. data/doc/lib/Task_rb.html +5 -3
  304. data/doc/lib/TextFormatter_rb.html +6 -4
  305. data/doc/lib/TextParser/Pattern_rb.html +5 -3
  306. data/doc/lib/TextParser/Rule_rb.html +5 -3
  307. data/doc/lib/TextParser/StackElement_rb.html +5 -3
  308. data/doc/lib/TextParser/State_rb.html +6 -4
  309. data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
  310. data/doc/lib/TextParser_rb.html +5 -3
  311. data/doc/lib/TextScanner_rb.html +5 -3
  312. data/doc/lib/TimeSheetReceiver_rb.html +5 -3
  313. data/doc/lib/TimeSheetSender_rb.html +5 -3
  314. data/doc/lib/TimeSheetSummary_rb.html +6 -4
  315. data/doc/lib/TimeSheets_rb.html +5 -3
  316. data/doc/lib/Tj3AppBase_rb.html +5 -3
  317. data/doc/lib/Tj3Config_rb.html +5 -3
  318. data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
  319. data/doc/lib/TjException_rb.html +5 -3
  320. data/doc/lib/TjTime_rb.html +5 -3
  321. data/doc/lib/TjpExample_rb.html +5 -3
  322. data/doc/lib/TjpSyntaxRules_rb.html +5 -3
  323. data/doc/lib/URLParameter_rb.html +5 -3
  324. data/doc/lib/UTF8String_rb.html +5 -3
  325. data/doc/lib/UserManual_rb.html +5 -3
  326. data/doc/lib/VimSyntax_rb.html +6 -4
  327. data/doc/lib/WorkingHours_rb.html +5 -3
  328. data/doc/lib/XMLDocument_rb.html +5 -3
  329. data/doc/lib/XMLElement_rb.html +5 -3
  330. data/doc/lib/daemon/Daemon_rb.html +5 -3
  331. data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
  332. data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
  333. data/doc/lib/daemon/ProjectServer_rb.html +5 -3
  334. data/doc/lib/daemon/ReportServer_rb.html +5 -3
  335. data/doc/lib/daemon/ReportServlet_rb.html +69 -0
  336. data/doc/lib/daemon/WebServer_rb.html +9 -3
  337. data/doc/lib/daemon/WelcomePage_rb.html +71 -0
  338. data/doc/lib/deep_copy_rb.html +5 -3
  339. data/doc/lib/reports/CSVFile_rb.html +5 -3
  340. data/doc/lib/reports/CollisionDetector_rb.html +5 -3
  341. data/doc/lib/reports/ColumnTable_rb.html +5 -3
  342. data/doc/lib/reports/GanttChart_rb.html +5 -3
  343. data/doc/lib/reports/GanttContainer_rb.html +5 -3
  344. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
  345. data/doc/lib/reports/GanttHeader_rb.html +5 -3
  346. data/doc/lib/reports/GanttLine_rb.html +5 -3
  347. data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
  348. data/doc/lib/reports/GanttMilestone_rb.html +5 -3
  349. data/doc/lib/reports/GanttRouter_rb.html +5 -3
  350. data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
  351. data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
  352. data/doc/lib/reports/Navigator_rb.html +5 -3
  353. data/doc/lib/reports/NikuReport_rb.html +5 -3
  354. data/doc/lib/reports/ReportBase_rb.html +5 -3
  355. data/doc/lib/reports/ReportContext_rb.html +5 -3
  356. data/doc/lib/reports/ReportTableCell_rb.html +5 -3
  357. data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
  358. data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
  359. data/doc/lib/reports/ReportTableLine_rb.html +5 -3
  360. data/doc/lib/reports/ReportTable_rb.html +5 -3
  361. data/doc/lib/reports/Report_rb.html +5 -3
  362. data/doc/lib/reports/ResourceListRE_rb.html +5 -3
  363. data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
  364. data/doc/lib/reports/TableReport_rb.html +5 -3
  365. data/doc/lib/reports/TaskListRE_rb.html +5 -3
  366. data/doc/lib/reports/TextReport_rb.html +5 -3
  367. data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
  368. data/doc/lib/reports/TjpExportRE_rb.html +5 -3
  369. data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
  370. data/doc/lib/tj3client_rb.html +5 -3
  371. data/doc/lib/tj3d_rb.html +6 -4
  372. data/doc/lib/tj3man_rb.html +5 -3
  373. data/doc/lib/tj3ss_receiver_rb.html +5 -3
  374. data/doc/lib/tj3ss_sender_rb.html +5 -3
  375. data/doc/lib/tj3ts_receiver_rb.html +5 -3
  376. data/doc/lib/tj3ts_sender_rb.html +5 -3
  377. data/doc/lib/tj3ts_summary_rb.html +5 -3
  378. data/examples/tutorial.tjp +13 -5
  379. data/gem_spec.rb +3 -0
  380. data/lib/Account.rb +2 -1
  381. data/lib/AccountScenario.rb +2 -1
  382. data/lib/Allocation.rb +2 -1
  383. data/lib/AppConfig.rb +2 -1
  384. data/lib/AttributeBase.rb +19 -5
  385. data/lib/AttributeDefinition.rb +2 -1
  386. data/lib/Attributes.rb +49 -38
  387. data/lib/BatchProcessor.rb +2 -1
  388. data/lib/Booking.rb +2 -1
  389. data/lib/Charge.rb +2 -1
  390. data/lib/ChargeSet.rb +2 -1
  391. data/lib/DataCache.rb +15 -1
  392. data/lib/FileList.rb +2 -1
  393. data/lib/HTMLDocument.rb +2 -1
  394. data/lib/Interval.rb +2 -1
  395. data/lib/IntervalList.rb +100 -0
  396. data/lib/Journal.rb +8 -2
  397. data/lib/KeywordArray.rb +2 -1
  398. data/lib/KeywordDocumentation.rb +10 -6
  399. data/lib/Limits.rb +2 -1
  400. data/lib/Log.rb +3 -2
  401. data/lib/LogFile.rb +2 -1
  402. data/lib/LogicalExpression.rb +2 -1
  403. data/lib/LogicalFunction.rb +2 -1
  404. data/lib/LogicalOperation.rb +2 -1
  405. data/lib/MacroTable.rb +2 -1
  406. data/lib/MessageHandler.rb +2 -1
  407. data/lib/Project.rb +92 -25
  408. data/lib/ProjectFileParser.rb +7 -2
  409. data/lib/ProjectFileScanner.rb +2 -1
  410. data/lib/PropertyList.rb +2 -1
  411. data/lib/PropertySet.rb +2 -6
  412. data/lib/PropertyTreeNode.rb +22 -44
  413. data/lib/Query.rb +32 -13
  414. data/lib/RTFHandlers.rb +2 -1
  415. data/lib/RTFNavigator.rb +2 -1
  416. data/lib/RTFQuery.rb +3 -2
  417. data/lib/RTFReport.rb +2 -1
  418. data/lib/RTFReportLink.rb +2 -1
  419. data/lib/RTFWithQuerySupport.rb +2 -1
  420. data/lib/RealFormat.rb +2 -1
  421. data/lib/Resource.rb +2 -1
  422. data/lib/ResourceScenario.rb +35 -14
  423. data/lib/RichText.rb +2 -1
  424. data/lib/RichTextDocument.rb +2 -1
  425. data/lib/RichTextElement.rb +2 -1
  426. data/lib/RichTextFunctionExample.rb +2 -1
  427. data/lib/RichTextFunctionHandler.rb +2 -1
  428. data/lib/RichTextParser.rb +2 -1
  429. data/lib/RichTextScanner.rb +2 -1
  430. data/lib/RichTextSnip.rb +2 -1
  431. data/lib/RichTextSyntaxRules.rb +2 -1
  432. data/lib/RuntimeConfig.rb +2 -1
  433. data/lib/Scenario.rb +2 -1
  434. data/lib/ScenarioData.rb +2 -1
  435. data/lib/Scoreboard.rb +27 -8
  436. data/lib/SheetHandlerBase.rb +2 -1
  437. data/lib/SheetReceiver.rb +2 -1
  438. data/lib/SheetSender.rb +2 -1
  439. data/lib/Shift.rb +2 -1
  440. data/lib/ShiftAssignments.rb +2 -1
  441. data/lib/ShiftScenario.rb +2 -1
  442. data/lib/SimpleQueryExpander.rb +2 -1
  443. data/lib/SourceFileInfo.rb +2 -1
  444. data/lib/StatusSheetReceiver.rb +2 -1
  445. data/lib/StatusSheetSender.rb +2 -1
  446. data/lib/SyntaxReference.rb +2 -1
  447. data/lib/TOCEntry.rb +2 -1
  448. data/lib/TableColumnDefinition.rb +9 -2
  449. data/lib/TableOfContents.rb +2 -1
  450. data/lib/Task.rb +2 -1
  451. data/lib/TaskDependency.rb +2 -1
  452. data/lib/TaskJuggler.rb +8 -6
  453. data/lib/TaskScenario.rb +337 -153
  454. data/lib/TextFormatter.rb +3 -2
  455. data/lib/TextParser.rb +7 -2
  456. data/lib/TextParser/Pattern.rb +2 -1
  457. data/lib/TextParser/Rule.rb +2 -1
  458. data/lib/TextParser/StackElement.rb +2 -1
  459. data/lib/TextParser/State.rb +3 -2
  460. data/lib/TextParser/TokenDoc.rb +2 -1
  461. data/lib/TextScanner.rb +12 -5
  462. data/lib/TimeSheetReceiver.rb +2 -1
  463. data/lib/TimeSheetSender.rb +2 -1
  464. data/lib/TimeSheetSummary.rb +3 -2
  465. data/lib/TimeSheets.rb +2 -1
  466. data/lib/Tj3AppBase.rb +6 -5
  467. data/lib/Tj3Config.rb +5 -4
  468. data/lib/Tj3SheetAppBase.rb +2 -1
  469. data/lib/TjException.rb +2 -1
  470. data/lib/TjTime.rb +2 -1
  471. data/lib/TjpExample.rb +2 -1
  472. data/lib/TjpSyntaxRules.rb +264 -65
  473. data/lib/URLParameter.rb +2 -1
  474. data/lib/UTF8String.rb +2 -1
  475. data/lib/UserManual.rb +2 -1
  476. data/lib/VimSyntax.rb +3 -2
  477. data/lib/WorkingHours.rb +2 -1
  478. data/lib/XMLDocument.rb +2 -1
  479. data/lib/XMLElement.rb +2 -1
  480. data/lib/daemon/Daemon.rb +3 -1
  481. data/lib/daemon/ProcessIntercom.rb +3 -1
  482. data/lib/daemon/ProjectBroker.rb +84 -32
  483. data/lib/daemon/ProjectServer.rb +5 -3
  484. data/lib/daemon/ReportServer.rb +8 -5
  485. data/lib/daemon/ReportServlet.rb +166 -0
  486. data/lib/daemon/WebServer.rb +6 -150
  487. data/lib/daemon/WelcomePage.rb +80 -0
  488. data/lib/deep_copy.rb +2 -1
  489. data/lib/reports/CSVFile.rb +2 -1
  490. data/lib/reports/CollisionDetector.rb +2 -1
  491. data/lib/reports/ColumnTable.rb +2 -1
  492. data/lib/reports/GanttChart.rb +2 -1
  493. data/lib/reports/GanttContainer.rb +3 -4
  494. data/lib/reports/GanttHeader.rb +2 -1
  495. data/lib/reports/GanttHeaderScaleItem.rb +2 -1
  496. data/lib/reports/GanttLine.rb +12 -10
  497. data/lib/reports/GanttLoadStack.rb +2 -1
  498. data/lib/reports/GanttMilestone.rb +3 -3
  499. data/lib/reports/GanttRouter.rb +4 -1
  500. data/lib/reports/GanttTaskBar.rb +9 -7
  501. data/lib/reports/HTMLGraphics.rb +2 -1
  502. data/lib/reports/Navigator.rb +2 -1
  503. data/lib/reports/NikuReport.rb +79 -49
  504. data/lib/reports/Report.rb +42 -10
  505. data/lib/reports/ReportBase.rb +2 -1
  506. data/lib/reports/ReportContext.rb +2 -1
  507. data/lib/reports/ReportTable.rb +2 -1
  508. data/lib/reports/ReportTableCell.rb +63 -28
  509. data/lib/reports/ReportTableColumn.rb +2 -1
  510. data/lib/reports/ReportTableLegend.rb +5 -5
  511. data/lib/reports/ReportTableLine.rb +2 -1
  512. data/lib/reports/ResourceListRE.rb +2 -1
  513. data/lib/reports/StatusSheetReport.rb +4 -2
  514. data/lib/reports/TableReport.rb +42 -38
  515. data/lib/reports/TaskListRE.rb +4 -2
  516. data/lib/reports/TextReport.rb +2 -1
  517. data/lib/reports/TimeSheetReport.rb +4 -2
  518. data/lib/reports/TjpExportRE.rb +4 -2
  519. data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
  520. data/lib/tj3client.rb +19 -36
  521. data/lib/tj3d.rb +6 -2
  522. data/lib/tj3man.rb +4 -3
  523. data/lib/tj3ss_receiver.rb +2 -1
  524. data/lib/tj3ss_sender.rb +2 -1
  525. data/lib/tj3ts_receiver.rb +2 -1
  526. data/lib/tj3ts_sender.rb +2 -1
  527. data/lib/tj3ts_summary.rb +2 -1
  528. data/manual/Day_To_Day_Juggling +36 -0
  529. data/manual/How_To_Contribute +9 -4
  530. data/manual/Installation +10 -3
  531. data/manual/TaskJuggler_Internals +0 -2
  532. data/manual/Tutorial +25 -3
  533. data/prj_cfg.rb +4 -2
  534. data/spec/IntervalList_spec.rb +138 -0
  535. data/spec/ProjectBroker_spec.rb +133 -0
  536. data/tasks/changelog.rake +41 -24
  537. data/tasks/csts.rake +1 -0
  538. data/tasks/gem.rake +1 -0
  539. data/tasks/rcov.rake +1 -1
  540. data/tasks/spec.rake +7 -0
  541. data/tasks/test.rake +1 -0
  542. data/test/MessageChecker.rb +2 -1
  543. data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
  544. data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
  545. data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
  546. data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
  547. data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
  548. data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
  549. data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
  550. data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
  551. data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
  552. data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
  553. data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
  554. data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
  555. data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
  556. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
  557. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
  558. data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
  559. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
  560. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
  561. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
  562. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
  563. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
  564. data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
  565. data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
  566. data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
  567. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
  568. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
  569. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
  570. data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
  571. data/test/TestSuite/StatusSheets/sender.log +256 -0
  572. data/test/TestSuite/StatusSheets/statussheets.log +9 -0
  573. data/test/TestSuite/StatusSheets/tj3d.log +395 -0
  574. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
  575. data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
  576. data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
  577. data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
  578. data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
  579. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
  580. data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
  581. data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
  582. data/test/all.rb +2 -4
  583. data/test/test_BatchProcessor.rb +2 -1
  584. data/test/test_CSV-Reports.rb +34 -23
  585. data/test/test_CSVFile.rb +2 -1
  586. data/test/test_CollisionDetector.rb +3 -2
  587. data/test/test_Journal.rb +2 -1
  588. data/test/test_Limits.rb +2 -1
  589. data/test/test_LogicalExpression.rb +2 -1
  590. data/test/test_MacroTable.rb +2 -1
  591. data/test/test_Project.rb +3 -2
  592. data/test/test_ProjectFileScanner.rb +2 -1
  593. data/test/test_PropertySet.rb +2 -1
  594. data/test/test_Query.rb +2 -1
  595. data/test/test_RealFormat.rb +2 -1
  596. data/test/test_ReportGenerator.rb +2 -1
  597. data/test/test_RichText.rb +2 -1
  598. data/test/test_Scheduler.rb +2 -1
  599. data/test/test_ShiftAssignments.rb +2 -1
  600. data/test/test_SimpleQueryExpander.rb +2 -1
  601. data/test/test_Syntax.rb +2 -1
  602. data/test/test_TextFormatter.rb +3 -2
  603. data/test/test_TjTime.rb +2 -1
  604. data/test/test_TjpExample.rb +2 -1
  605. data/test/test_URLParameter.rb +2 -1
  606. data/test/test_UTF8String.rb +2 -1
  607. data/test/test_WorkingHours.rb +2 -1
  608. data/test/test_deep_copy.rb +2 -1
  609. metadata +74 -20
  610. data/doc/StringIO.html +0 -595
  611. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
  612. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
  613. data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
@@ -127,6 +127,8 @@
127
127
 
128
128
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
129
129
 
130
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
131
+
130
132
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
131
133
 
132
134
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -205,6 +207,8 @@
205
207
 
206
208
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
207
209
 
210
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
211
+
208
212
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
209
213
 
210
214
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -237,6 +241,8 @@
237
241
 
238
242
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
239
243
 
244
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
245
+
240
246
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
241
247
 
242
248
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -517,6 +523,8 @@
517
523
 
518
524
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
519
525
 
526
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
527
+
520
528
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
521
529
 
522
530
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -543,8 +551,6 @@
543
551
 
544
552
  <li><a href="../String.html">String</a></li>
545
553
 
546
- <li><a href="../StringIO.html">StringIO</a></li>
547
-
548
554
  </ul>
549
555
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
550
556
  </div>
@@ -622,25 +628,25 @@ project data is accessed via tj3client on a tj3 server process.
622
628
  <div class="method-source-code"
623
629
  id="new-source">
624
630
  <pre>
625
- <span class="ruby-comment cmt"># File lib/TimeSheetSender.rb, line 26</span>
626
- 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">appName</span>)
627
- 27: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">appName</span>, <span class="ruby-value str">'time'</span>)
628
- 28:
629
- 29: <span class="ruby-comment cmt"># This is a LogicalExpression string that controls what resources should</span>
630
- 30: <span class="ruby-comment cmt"># not be getting a time sheet.</span>
631
- 31: <span class="ruby-ivar">@hideResource</span> = <span class="ruby-value str">'0'</span>
632
- 32: <span class="ruby-comment cmt"># The base directory of the time sheet templates.</span>
633
- 33: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-value str">'TimeSheetTemplates'</span>
634
- 34: <span class="ruby-comment cmt"># This file contains the time intervals that the TimeSheetReceiver will</span>
635
- 35: <span class="ruby-comment cmt"># accept as a valid interval.</span>
636
- 36: <span class="ruby-ivar">@signatureFile</span> = <span class="ruby-node">&quot;#{@templateDir}/acceptable_intervals&quot;</span>
637
- 37: <span class="ruby-comment cmt"># The log file</span>
638
- 38: <span class="ruby-ivar">@logFile</span> = <span class="ruby-value str">'timesheets.log'</span>
639
- 39:
640
- 40: <span class="ruby-ivar">@signatureFilter</span> = <span class="ruby-regexp re">/^[ ]*timesheet\s[a-z][a-z0-9_]*\s([0-9:\-+]*\s-\s[0-9:\-+]*)/</span>
641
- 41: <span class="ruby-ivar">@introText</span> = <span class="ruby-value str">Please find enclosed your weekly report template. Please fill outthe form and send it back to the sender of this email. You can eitheruse the attached file or the body of the email. In case you send itin the body of the email, make sure it only contains the 'timesheet'syntax. No quote marks are allowed. It must be plain text, UTF-8encoded and the time sheet header from 'timesheet' to the period enddate must be in a single line that starts at the beginning of the line.</span>
642
- 42: <span class="ruby-ivar">@mailSubject</span> = <span class="ruby-value str">'Your weekly time sheet template for %s'</span>
643
- 43: <span class="ruby-keyword kw">end</span></pre>
631
+ <span class="ruby-comment cmt"># File lib/TimeSheetSender.rb, line 27</span>
632
+ 27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">appName</span>)
633
+ 28: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">appName</span>, <span class="ruby-value str">'time'</span>)
634
+ 29:
635
+ 30: <span class="ruby-comment cmt"># This is a LogicalExpression string that controls what resources should</span>
636
+ 31: <span class="ruby-comment cmt"># not be getting a time sheet.</span>
637
+ 32: <span class="ruby-ivar">@hideResource</span> = <span class="ruby-value str">'0'</span>
638
+ 33: <span class="ruby-comment cmt"># The base directory of the time sheet templates.</span>
639
+ 34: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-value str">'TimeSheetTemplates'</span>
640
+ 35: <span class="ruby-comment cmt"># This file contains the time intervals that the TimeSheetReceiver will</span>
641
+ 36: <span class="ruby-comment cmt"># accept as a valid interval.</span>
642
+ 37: <span class="ruby-ivar">@signatureFile</span> = <span class="ruby-node">&quot;#{@templateDir}/acceptable_intervals&quot;</span>
643
+ 38: <span class="ruby-comment cmt"># The log file</span>
644
+ 39: <span class="ruby-ivar">@logFile</span> = <span class="ruby-value str">'timesheets.log'</span>
645
+ 40:
646
+ 41: <span class="ruby-ivar">@signatureFilter</span> = <span class="ruby-regexp re">/^[ ]*timesheet\s[a-z][a-z0-9_]*\s([0-9:\-+]*\s-\s[0-9:\-+]*)/</span>
647
+ 42: <span class="ruby-ivar">@introText</span> = <span class="ruby-value str">Please find enclosed your weekly report template. Please fill outthe form and send it back to the sender of this email. You can eitheruse the attached file or the body of the email. In case you send itin the body of the email, make sure it only contains the 'timesheet'syntax. No quote marks are allowed. It must be plain text, UTF-8encoded and the time sheet header from 'timesheet' to the period enddate must be in a single line that starts at the beginning of the line.</span>
648
+ 43: <span class="ruby-ivar">@mailSubject</span> = <span class="ruby-value str">'Your weekly time sheet template for %s'</span>
649
+ 44: <span class="ruby-keyword kw">end</span></pre>
644
650
  </div>
645
651
 
646
652
  </div>
@@ -133,6 +133,8 @@
133
133
 
134
134
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
135
135
 
136
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
137
+
136
138
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
137
139
 
138
140
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -211,6 +213,8 @@
211
213
 
212
214
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
213
215
 
216
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
217
+
214
218
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
215
219
 
216
220
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -243,6 +247,8 @@
243
247
 
244
248
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
245
249
 
250
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
251
+
246
252
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
247
253
 
248
254
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -523,6 +529,8 @@
523
529
 
524
530
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
525
531
 
532
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
533
+
526
534
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
527
535
 
528
536
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -549,8 +557,6 @@
549
557
 
550
558
  <li><a href="../String.html">String</a></li>
551
559
 
552
- <li><a href="../StringIO.html">StringIO</a></li>
553
-
554
560
  </ul>
555
561
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
556
562
  </div>
@@ -662,33 +668,33 @@ project data is accessed via tj3client on a tj3 server process.
662
668
  <div class="method-source-code"
663
669
  id="new-source">
664
670
  <pre>
665
- <span class="ruby-comment cmt"># File lib/TimeSheetSummary.rb, line 26</span>
666
- 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
667
- 27: <span class="ruby-keyword kw">super</span>(<span class="ruby-value str">'tj3ts_summary'</span>, <span class="ruby-value str">'summary'</span>)
668
- 28:
669
- 29: <span class="ruby-comment cmt"># This is a LogicalExpression string that controls what resources should</span>
670
- 30: <span class="ruby-comment cmt"># not be considered in the summary.</span>
671
- 31: <span class="ruby-ivar">@hideResource</span> = <span class="ruby-value str">'0'</span>
672
- 32: <span class="ruby-comment cmt"># The base directory of the time sheet templates.</span>
673
- 33: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-value str">'TimeSheetTemplates'</span>
674
- 34: <span class="ruby-comment cmt"># The base directory of the submitted time sheets</span>
675
- 35: <span class="ruby-ivar">@sheetDir</span> = <span class="ruby-value str">'TimeSheets'</span>
676
- 36: <span class="ruby-comment cmt"># The log file</span>
677
- 37: <span class="ruby-ivar">@logFile</span> = <span class="ruby-value str">'timesheets.log'</span>
678
- 38: <span class="ruby-comment cmt"># A list of email addresses to send the individual sheets. The sender</span>
679
- 39: <span class="ruby-comment cmt"># will be the sheet submitter.</span>
680
- 40: <span class="ruby-ivar">@sheetRecipients</span> = []
681
- 41: <span class="ruby-comment cmt"># A list of email addresses to send the summary to</span>
682
- 42: <span class="ruby-ivar">@digestRecipients</span> = []
683
- 43:
684
- 44: <span class="ruby-ivar">@resourceIntro</span> = <span class="ruby-value str">&quot;== Weekly Report from &lt;nowiki&gt;%s&lt;/nowiki&gt; ==\n&quot;</span>
685
- 45: <span class="ruby-ivar">@resourceSheetSubject</span> = <span class="ruby-value str">&quot;Weekly report %s&quot;</span>
686
- 46: <span class="ruby-ivar">@summarySubject</span> = <span class="ruby-value str">&quot;Weekly staff reports %s&quot;</span>
687
- 47: <span class="ruby-ivar">@reminderSubject</span> = <span class="ruby-value str">&quot;Your time sheet for the period ending %s is overdue!&quot;</span>
688
- 48: <span class="ruby-ivar">@reminderText</span> = <span class="ruby-value str">The deadline for your time sheet submission has passed but we haven't receivedit yet. Please submit your time sheet immediately so the content can still beincluded in the management reports. Please send a copy of your submissionnotification email to your manager. If possible, your manager will still tryto include your report data in his/her report.Please be aware that post deadline submissions must be processed manually andcreate an additional load for your manager and/or project manager. Please tryto submit in time in the future.Thanks for your cooperation!</span>
689
- 49: <span class="ruby-ivar">@defaulterHeader</span> = <span class="ruby-value str">&quot;The following %d person(s) have not yet submitted &quot;</span> <span class="ruby-operator">+</span>
690
- 50: <span class="ruby-value str">&quot;their time sheets:\n\n&quot;</span>
691
- 51: <span class="ruby-keyword kw">end</span></pre>
671
+ <span class="ruby-comment cmt"># File lib/TimeSheetSummary.rb, line 27</span>
672
+ 27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
673
+ 28: <span class="ruby-keyword kw">super</span>(<span class="ruby-value str">'tj3ts_summary'</span>, <span class="ruby-value str">'summary'</span>)
674
+ 29:
675
+ 30: <span class="ruby-comment cmt"># This is a LogicalExpression string that controls what resources should</span>
676
+ 31: <span class="ruby-comment cmt"># not be considered in the summary.</span>
677
+ 32: <span class="ruby-ivar">@hideResource</span> = <span class="ruby-value str">'0'</span>
678
+ 33: <span class="ruby-comment cmt"># The base directory of the time sheet templates.</span>
679
+ 34: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-value str">'TimeSheetTemplates'</span>
680
+ 35: <span class="ruby-comment cmt"># The base directory of the submitted time sheets</span>
681
+ 36: <span class="ruby-ivar">@sheetDir</span> = <span class="ruby-value str">'TimeSheets'</span>
682
+ 37: <span class="ruby-comment cmt"># The log file</span>
683
+ 38: <span class="ruby-ivar">@logFile</span> = <span class="ruby-value str">'timesheets.log'</span>
684
+ 39: <span class="ruby-comment cmt"># A list of email addresses to send the individual sheets. The sender</span>
685
+ 40: <span class="ruby-comment cmt"># will be the sheet submitter.</span>
686
+ 41: <span class="ruby-ivar">@sheetRecipients</span> = []
687
+ 42: <span class="ruby-comment cmt"># A list of email addresses to send the summary to</span>
688
+ 43: <span class="ruby-ivar">@digestRecipients</span> = []
689
+ 44:
690
+ 45: <span class="ruby-ivar">@resourceIntro</span> = <span class="ruby-value str">&quot;== Weekly Report from &lt;nowiki&gt;%s&lt;/nowiki&gt; ==\n&quot;</span>
691
+ 46: <span class="ruby-ivar">@resourceSheetSubject</span> = <span class="ruby-value str">&quot;Weekly report %s&quot;</span>
692
+ 47: <span class="ruby-ivar">@summarySubject</span> = <span class="ruby-value str">&quot;Weekly staff reports %s&quot;</span>
693
+ 48: <span class="ruby-ivar">@reminderSubject</span> = <span class="ruby-value str">&quot;Your time sheet for the period ending %s is overdue!&quot;</span>
694
+ 49: <span class="ruby-ivar">@reminderText</span> = <span class="ruby-value str">The deadline for your time sheet submission has passed but we haven't receivedit yet. Please submit your time sheet immediately so the content can still beincluded in the management reports. Please send a copy of your submissionnotification email to your manager. If possible, your manager will still tryto include your report data in his/her report.Please be aware that post deadline submissions must be processed manually andcreate an additional load for your manager and/or project manager. Please tryto submit in time in the future.Thanks for your cooperation!</span>
695
+ 50: <span class="ruby-ivar">@defaulterHeader</span> = <span class="ruby-value str">&quot;The following %d person(s) have not yet submitted &quot;</span> <span class="ruby-operator">+</span>
696
+ 51: <span class="ruby-value str">&quot;their time sheets:\n\n&quot;</span>
697
+ 52: <span class="ruby-keyword kw">end</span></pre>
692
698
  </div>
693
699
 
694
700
  </div>
@@ -725,79 +731,79 @@ project data is accessed via tj3client on a tj3 server process.
725
731
  <div class="method-source-code"
726
732
  id="send-ummary-source">
727
733
  <pre>
728
- <span class="ruby-comment cmt"># File lib/TimeSheetSummary.rb, line 66</span>
729
- 66: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendSummary</span>(<span class="ruby-identifier">resourceIds</span>)
730
- 67: <span class="ruby-identifier">setWorkingDir</span>
731
- 68:
732
- 69: <span class="ruby-identifier">summary</span> = <span class="ruby-value str">''</span>
733
- 70: <span class="ruby-identifier">defaulterList</span> = []
734
- 71: <span class="ruby-identifier">getResourceList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
735
- 72: <span class="ruby-identifier">resourceId</span> = <span class="ruby-identifier">resource</span>[<span class="ruby-value">0</span>]
736
- 73: <span class="ruby-identifier">resourceName</span> = <span class="ruby-identifier">resource</span>[<span class="ruby-value">1</span>]
737
- 74: <span class="ruby-identifier">resourceEmail</span> = <span class="ruby-identifier">resource</span>[<span class="ruby-value">2</span>]
738
- 75: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">resourceIds</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">resourceIds</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resourceId</span>)
739
- 76:
740
- 77: <span class="ruby-identifier">templateFile</span> = <span class="ruby-node">&quot;#{@templateDir}/#{@date}/#{resourceId}_#{@date}.tji&quot;</span>
741
- 78: <span class="ruby-identifier">sheetFile</span> = <span class="ruby-node">&quot;#{@sheetDir}/#{@date}/#{resourceId}_#{@date}.tji&quot;</span>
742
- 79: <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>)
743
- 80: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">sheetFile</span>)
744
- 81: <span class="ruby-comment cmt"># If there are no recipients specified, we don't need to compile</span>
745
- 82: <span class="ruby-comment cmt"># the summary.</span>
746
- 83: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@digestRecipients</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@sheetRecipients</span>.<span class="ruby-identifier">empty?</span>
747
- 84: <span class="ruby-comment cmt"># Resource has submitted a time sheet</span>
748
- 85: <span class="ruby-identifier">sheet</span> = <span class="ruby-identifier">getResourceJournal</span>(<span class="ruby-identifier">sheetFile</span>)
749
- 86: <span class="ruby-identifier">summary</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@resourceIntro</span>, <span class="ruby-identifier">resourceName</span>)
750
- 87: <span class="ruby-identifier">summary</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sheet</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n----\n&quot;</span>
751
- 88: <span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Adding report from #{resourceName} to summary&quot;</span>)
752
- 89:
753
- 90: <span class="ruby-ivar">@sheetRecipients</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">to</span><span class="ruby-operator">|</span>
754
- 91: <span class="ruby-identifier">sendRichTextEmail</span>(<span class="ruby-identifier">to</span>, <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@resourceSheetSubject</span>, <span class="ruby-ivar">@date</span>),
755
- 92: <span class="ruby-identifier">sheet</span>, <span class="ruby-keyword kw">nil</span>,
756
- 93: <span class="ruby-node">&quot;#{resourceName} &lt;#{resourceEmail}&gt;&quot;</span>)
757
- 94: <span class="ruby-keyword kw">end</span>
758
- 95: <span class="ruby-keyword kw">end</span>
759
- 96: <span class="ruby-keyword kw">else</span>
760
- 97: <span class="ruby-identifier">defaulterList</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">resource</span>
761
- 98: <span class="ruby-comment cmt"># Resource did not submit a time sheet</span>
762
- 99: <span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Report from #{resourceId} is missing&quot;</span>)
763
- 100: <span class="ruby-keyword kw">end</span>
764
- 101: <span class="ruby-keyword kw">end</span>
765
- 102: <span class="ruby-keyword kw">end</span>
766
- 103:
767
- 104: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">empty?</span>
768
- 105: <span class="ruby-comment cmt"># Prepend the defaulter list to the summary.</span>
769
- 106: <span class="ruby-identifier">text</span> = <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@defaulterHeader</span>, <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">length</span>)
770
- 107: <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
771
- 108: <span class="ruby-identifier">text</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;* &lt;nowiki&gt;#{resource[1]}&lt;/nowiki&gt;\n&quot;</span>
772
- 109: <span class="ruby-keyword kw">end</span>
773
- 110: <span class="ruby-identifier">text</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n----\n&quot;</span>
774
- 111: <span class="ruby-identifier">summary</span> = <span class="ruby-identifier">text</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">summary</span>
775
- 112:
776
- 113: <span class="ruby-comment cmt"># Create a file with the IDs of the resources who's reports are</span>
777
- 114: <span class="ruby-comment cmt"># missing.</span>
778
- 115: <span class="ruby-identifier">missingFile</span> = <span class="ruby-node">&quot;#{@sheetDir}/#{@date}/missing-reports&quot;</span>
779
- 116: <span class="ruby-keyword kw">begin</span>
780
- 117: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">missingFile</span>, <span class="ruby-value str">'w'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
781
- 118: <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">resource</span>[<span class="ruby-value">0</span>] }
782
- 119: <span class="ruby-keyword kw">end</span>
783
- 120: <span class="ruby-keyword kw">rescue</span>
784
- 121: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Cannot write file with missing reports (#missingFile): #{$!}&quot;</span>)
785
- 122: <span class="ruby-keyword kw">end</span>
786
- 123: <span class="ruby-keyword kw">end</span>
787
- 124:
788
- 125: <span class="ruby-comment cmt"># Send out the summary text to the list of digest recipients.</span>
789
- 126: <span class="ruby-ivar">@digestRecipients</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">to</span><span class="ruby-operator">|</span>
790
- 127: <span class="ruby-identifier">sendRichTextEmail</span>(<span class="ruby-identifier">to</span>, <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@summarySubject</span>, <span class="ruby-ivar">@date</span>), <span class="ruby-identifier">summary</span>)
791
- 128: <span class="ruby-keyword kw">end</span>
792
- 129:
793
- 130: <span class="ruby-comment cmt"># If there is a reminder text defined, resend the template to those</span>
794
- 131: <span class="ruby-comment cmt"># individuals that have not yet submitted their report yet.</span>
795
- 132: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@reminderText</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@reminderText</span>.<span class="ruby-identifier">empty?</span>
796
- 133: <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
797
- 134: <span class="ruby-identifier">sendReminder</span>(<span class="ruby-identifier">resource</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">resource</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">resource</span>[<span class="ruby-value">2</span>])
798
- 135: <span class="ruby-keyword kw">end</span>
799
- 136: <span class="ruby-keyword kw">end</span>
800
- 137: <span class="ruby-keyword kw">end</span></pre>
734
+ <span class="ruby-comment cmt"># File lib/TimeSheetSummary.rb, line 67</span>
735
+ 67: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendSummary</span>(<span class="ruby-identifier">resourceIds</span>)
736
+ 68: <span class="ruby-identifier">setWorkingDir</span>
737
+ 69:
738
+ 70: <span class="ruby-identifier">summary</span> = <span class="ruby-value str">''</span>
739
+ 71: <span class="ruby-identifier">defaulterList</span> = []
740
+ 72: <span class="ruby-identifier">getResourceList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
741
+ 73: <span class="ruby-identifier">resourceId</span> = <span class="ruby-identifier">resource</span>[<span class="ruby-value">0</span>]
742
+ 74: <span class="ruby-identifier">resourceName</span> = <span class="ruby-identifier">resource</span>[<span class="ruby-value">1</span>]
743
+ 75: <span class="ruby-identifier">resourceEmail</span> = <span class="ruby-identifier">resource</span>[<span class="ruby-value">2</span>]
744
+ 76: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">resourceIds</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">resourceIds</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resourceId</span>)
745
+ 77:
746
+ 78: <span class="ruby-identifier">templateFile</span> = <span class="ruby-node">&quot;#{@templateDir}/#{@date}/#{resourceId}_#{@date}.tji&quot;</span>
747
+ 79: <span class="ruby-identifier">sheetFile</span> = <span class="ruby-node">&quot;#{@sheetDir}/#{@date}/#{resourceId}_#{@date}.tji&quot;</span>
748
+ 80: <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>)
749
+ 81: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">sheetFile</span>)
750
+ 82: <span class="ruby-comment cmt"># If there are no recipients specified, we don't need to compile</span>
751
+ 83: <span class="ruby-comment cmt"># the summary.</span>
752
+ 84: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@digestRecipients</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@sheetRecipients</span>.<span class="ruby-identifier">empty?</span>
753
+ 85: <span class="ruby-comment cmt"># Resource has submitted a time sheet</span>
754
+ 86: <span class="ruby-identifier">sheet</span> = <span class="ruby-identifier">getResourceJournal</span>(<span class="ruby-identifier">sheetFile</span>)
755
+ 87: <span class="ruby-identifier">summary</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@resourceIntro</span>, <span class="ruby-identifier">resourceName</span>)
756
+ 88: <span class="ruby-identifier">summary</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sheet</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n----\n&quot;</span>
757
+ 89: <span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Adding report from #{resourceName} to summary&quot;</span>)
758
+ 90:
759
+ 91: <span class="ruby-ivar">@sheetRecipients</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">to</span><span class="ruby-operator">|</span>
760
+ 92: <span class="ruby-identifier">sendRichTextEmail</span>(<span class="ruby-identifier">to</span>, <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@resourceSheetSubject</span>, <span class="ruby-ivar">@date</span>),
761
+ 93: <span class="ruby-identifier">sheet</span>, <span class="ruby-keyword kw">nil</span>,
762
+ 94: <span class="ruby-node">&quot;#{resourceName} &lt;#{resourceEmail}&gt;&quot;</span>)
763
+ 95: <span class="ruby-keyword kw">end</span>
764
+ 96: <span class="ruby-keyword kw">end</span>
765
+ 97: <span class="ruby-keyword kw">else</span>
766
+ 98: <span class="ruby-identifier">defaulterList</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">resource</span>
767
+ 99: <span class="ruby-comment cmt"># Resource did not submit a time sheet</span>
768
+ 100: <span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Report from #{resourceId} is missing&quot;</span>)
769
+ 101: <span class="ruby-keyword kw">end</span>
770
+ 102: <span class="ruby-keyword kw">end</span>
771
+ 103: <span class="ruby-keyword kw">end</span>
772
+ 104:
773
+ 105: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">empty?</span>
774
+ 106: <span class="ruby-comment cmt"># Prepend the defaulter list to the summary.</span>
775
+ 107: <span class="ruby-identifier">text</span> = <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@defaulterHeader</span>, <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">length</span>)
776
+ 108: <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
777
+ 109: <span class="ruby-identifier">text</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;* &lt;nowiki&gt;#{resource[1]}&lt;/nowiki&gt;\n&quot;</span>
778
+ 110: <span class="ruby-keyword kw">end</span>
779
+ 111: <span class="ruby-identifier">text</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n----\n&quot;</span>
780
+ 112: <span class="ruby-identifier">summary</span> = <span class="ruby-identifier">text</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">summary</span>
781
+ 113:
782
+ 114: <span class="ruby-comment cmt"># Create a file with the IDs of the resources who's reports are</span>
783
+ 115: <span class="ruby-comment cmt"># missing.</span>
784
+ 116: <span class="ruby-identifier">missingFile</span> = <span class="ruby-node">&quot;#{@sheetDir}/#{@date}/missing-reports&quot;</span>
785
+ 117: <span class="ruby-keyword kw">begin</span>
786
+ 118: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">missingFile</span>, <span class="ruby-value str">'w'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
787
+ 119: <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">resource</span>[<span class="ruby-value">0</span>] }
788
+ 120: <span class="ruby-keyword kw">end</span>
789
+ 121: <span class="ruby-keyword kw">rescue</span>
790
+ 122: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Cannot write file with missing reports (#missingFile): #{$!}&quot;</span>)
791
+ 123: <span class="ruby-keyword kw">end</span>
792
+ 124: <span class="ruby-keyword kw">end</span>
793
+ 125:
794
+ 126: <span class="ruby-comment cmt"># Send out the summary text to the list of digest recipients.</span>
795
+ 127: <span class="ruby-ivar">@digestRecipients</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">to</span><span class="ruby-operator">|</span>
796
+ 128: <span class="ruby-identifier">sendRichTextEmail</span>(<span class="ruby-identifier">to</span>, <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@summarySubject</span>, <span class="ruby-ivar">@date</span>), <span class="ruby-identifier">summary</span>)
797
+ 129: <span class="ruby-keyword kw">end</span>
798
+ 130:
799
+ 131: <span class="ruby-comment cmt"># If there is a reminder text defined, resend the template to those</span>
800
+ 132: <span class="ruby-comment cmt"># individuals that have not yet submitted their report yet.</span>
801
+ 133: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@reminderText</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@reminderText</span>.<span class="ruby-identifier">empty?</span>
802
+ 134: <span class="ruby-identifier">defaulterList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
803
+ 135: <span class="ruby-identifier">sendReminder</span>(<span class="ruby-identifier">resource</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">resource</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">resource</span>[<span class="ruby-value">2</span>])
804
+ 136: <span class="ruby-keyword kw">end</span>
805
+ 137: <span class="ruby-keyword kw">end</span>
806
+ 138: <span class="ruby-keyword kw">end</span></pre>
801
807
  </div>
802
808
 
803
809
  </div>
@@ -834,26 +840,26 @@ project data is accessed via tj3client on a tj3 server process.
834
840
  <div class="method-source-code"
835
841
  id="get-esource-ournal-source">
836
842
  <pre>
837
- <span class="ruby-comment cmt"># File lib/TimeSheetSummary.rb, line 153</span>
838
- 153: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getResourceJournal</span>(<span class="ruby-identifier">sheetFile</span>)
839
- 154: <span class="ruby-identifier">err</span> = <span class="ruby-value str">''</span>
840
- 155: <span class="ruby-identifier">status</span> = <span class="ruby-keyword kw">nil</span>
841
- 156: <span class="ruby-identifier">report</span> = <span class="ruby-keyword kw">nil</span>
842
- 157: <span class="ruby-identifier">warnings</span> = <span class="ruby-keyword kw">nil</span>
843
- 158: <span class="ruby-keyword kw">begin</span>
844
- 159: <span class="ruby-comment cmt"># Save a copy of the sheet for debugging purposes.</span>
845
- 160: <span class="ruby-identifier">command</span> = <span class="ruby-node">&quot;tj3client --silent check-ts #{@projectId} #{sheetFile}&quot;</span>
846
- 161: <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>
847
- 162: <span class="ruby-comment cmt"># Send the report to the tj3client process via stdin.</span>
848
- 163: <span class="ruby-identifier">report</span> = <span class="ruby-identifier">stdout</span>.<span class="ruby-identifier">read</span>
849
- 164: <span class="ruby-identifier">warnings</span> = <span class="ruby-identifier">stderr</span>.<span class="ruby-identifier">read</span>
850
- 165: <span class="ruby-keyword kw">end</span>
851
- 166: <span class="ruby-keyword kw">rescue</span>
852
- 167: <span class="ruby-identifier">fatal</span>(<span class="ruby-node">&quot;Cannot summarize sheet: #{$!}&quot;</span>)
853
- 168: <span class="ruby-keyword kw">end</span>
854
- 169:
855
- 170: <span class="ruby-identifier">report</span>
856
- 171: <span class="ruby-keyword kw">end</span></pre>
843
+ <span class="ruby-comment cmt"># File lib/TimeSheetSummary.rb, line 154</span>
844
+ 154: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getResourceJournal</span>(<span class="ruby-identifier">sheetFile</span>)
845
+ 155: <span class="ruby-identifier">err</span> = <span class="ruby-value str">''</span>
846
+ 156: <span class="ruby-identifier">status</span> = <span class="ruby-keyword kw">nil</span>
847
+ 157: <span class="ruby-identifier">report</span> = <span class="ruby-keyword kw">nil</span>
848
+ 158: <span class="ruby-identifier">warnings</span> = <span class="ruby-keyword kw">nil</span>
849
+ 159: <span class="ruby-keyword kw">begin</span>
850
+ 160: <span class="ruby-comment cmt"># Save a copy of the sheet for debugging purposes.</span>
851
+ 161: <span class="ruby-identifier">command</span> = <span class="ruby-node">&quot;tj3client --silent check-ts #{@projectId} #{sheetFile}&quot;</span>
852
+ 162: <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>
853
+ 163: <span class="ruby-comment cmt"># Send the report to the tj3client process via stdin.</span>
854
+ 164: <span class="ruby-identifier">report</span> = <span class="ruby-identifier">stdout</span>.<span class="ruby-identifier">read</span>
855
+ 165: <span class="ruby-identifier">warnings</span> = <span class="ruby-identifier">stderr</span>.<span class="ruby-identifier">read</span>
856
+ 166: <span class="ruby-keyword kw">end</span>
857
+ 167: <span class="ruby-keyword kw">rescue</span>
858
+ 168: <span class="ruby-identifier">fatal</span>(<span class="ruby-node">&quot;Cannot summarize sheet: #{$!}&quot;</span>)
859
+ 169: <span class="ruby-keyword kw">end</span>
860
+ 170:
861
+ 171: <span class="ruby-identifier">report</span>
862
+ 172: <span class="ruby-keyword kw">end</span></pre>
857
863
  </div>
858
864
 
859
865
  </div>
@@ -884,18 +890,18 @@ project data is accessed via tj3client on a tj3 server process.
884
890
  <div class="method-source-code"
885
891
  id="send-eminder-source">
886
892
  <pre>
887
- <span class="ruby-comment cmt"># File lib/TimeSheetSummary.rb, line 141</span>
888
- 141: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendReminder</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">email</span>)
889
- 142: <span class="ruby-identifier">attachment</span> = <span class="ruby-node">&quot;#{@templateDir}/#{@date}/#{id}_#{@date}.tji&quot;</span>
890
- 143: <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>)
891
- 144: <span class="ruby-identifier">error</span>(<span class="ruby-value str">&quot;sendReportTemplates: &quot;</span> <span class="ruby-operator">+</span>
892
- 145: <span class="ruby-node">&quot;#{@sheetType} sheet #{attachment} for #{name} not found&quot;</span>)
893
- 146: <span class="ruby-keyword kw">end</span>
894
- 147:
895
- 148: <span class="ruby-identifier">message</span> = <span class="ruby-node">&quot;Hello #{name}!\n\n#{@reminderText}&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">attachment</span>)
896
- 149:
897
- 150: <span class="ruby-identifier">sendEmail</span>(<span class="ruby-identifier">email</span>, <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@reminderSubject</span>, <span class="ruby-ivar">@date</span>), <span class="ruby-identifier">message</span>, <span class="ruby-identifier">attachment</span>)
898
- 151: <span class="ruby-keyword kw">end</span></pre>
893
+ <span class="ruby-comment cmt"># File lib/TimeSheetSummary.rb, line 142</span>
894
+ 142: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sendReminder</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">email</span>)
895
+ 143: <span class="ruby-identifier">attachment</span> = <span class="ruby-node">&quot;#{@templateDir}/#{@date}/#{id}_#{@date}.tji&quot;</span>
896
+ 144: <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>)
897
+ 145: <span class="ruby-identifier">error</span>(<span class="ruby-value str">&quot;sendReportTemplates: &quot;</span> <span class="ruby-operator">+</span>
898
+ 146: <span class="ruby-node">&quot;#{@sheetType} sheet #{attachment} for #{name} not found&quot;</span>)
899
+ 147: <span class="ruby-keyword kw">end</span>
900
+ 148:
901
+ 149: <span class="ruby-identifier">message</span> = <span class="ruby-node">&quot;Hello #{name}!\n\n#{@reminderText}&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">attachment</span>)
902
+ 150:
903
+ 151: <span class="ruby-identifier">sendEmail</span>(<span class="ruby-identifier">email</span>, <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@reminderSubject</span>, <span class="ruby-ivar">@date</span>), <span class="ruby-identifier">message</span>, <span class="ruby-identifier">attachment</span>)
904
+ 152: <span class="ruby-keyword kw">end</span></pre>
899
905
  </div>
900
906
 
901
907
  </div>
@@ -131,6 +131,8 @@
131
131
 
132
132
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
133
133
 
134
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
135
+
134
136
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
135
137
 
136
138
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -209,6 +211,8 @@
209
211
 
210
212
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
211
213
 
214
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
215
+
212
216
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
213
217
 
214
218
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -241,6 +245,8 @@
241
245
 
242
246
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
243
247
 
248
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
249
+
244
250
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
245
251
 
246
252
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -521,6 +527,8 @@
521
527
 
522
528
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
523
529
 
530
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
531
+
524
532
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
525
533
 
526
534
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -547,8 +555,6 @@
547
555
 
548
556
  <li><a href="../String.html">String</a></li>
549
557
 
550
- <li><a href="../StringIO.html">StringIO</a></li>
551
-
552
558
  </ul>
553
559
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
554
560
  </div>
@@ -599,10 +605,10 @@ A class to hold all time sheets of a project.
599
605
  <div class="method-source-code"
600
606
  id="new-source">
601
607
  <pre>
602
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 383</span>
603
- 383: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
604
- 384: <span class="ruby-keyword kw">super</span>
605
- 385: <span class="ruby-keyword kw">end</span></pre>
608
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 384</span>
609
+ 384: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
610
+ 385: <span class="ruby-keyword kw">super</span>
611
+ 386: <span class="ruby-keyword kw">end</span></pre>
606
612
  </div>
607
613
 
608
614
  </div>
@@ -639,10 +645,10 @@ A class to hold all time sheets of a project.
639
645
  <div class="method-source-code"
640
646
  id="check-source">
641
647
  <pre>
642
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 387</span>
643
- 387: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">check</span>
644
- 388: <span class="ruby-identifier">each</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">check</span> }
645
- 389: <span class="ruby-keyword kw">end</span></pre>
648
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 388</span>
649
+ 388: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">check</span>
650
+ 389: <span class="ruby-identifier">each</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">check</span> }
651
+ 390: <span class="ruby-keyword kw">end</span></pre>
646
652
  </div>
647
653
 
648
654
  </div>
@@ -673,10 +679,10 @@ A class to hold all time sheets of a project.
673
679
  <div class="method-source-code"
674
680
  id="warn-n-elta-source">
675
681
  <pre>
676
- <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 391</span>
677
- 391: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warnOnDelta</span>
678
- 392: <span class="ruby-identifier">each</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">warnOnDelta</span> }
679
- 393: <span class="ruby-keyword kw">end</span></pre>
682
+ <span class="ruby-comment cmt"># File lib/TimeSheets.rb, line 392</span>
683
+ 392: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warnOnDelta</span>
684
+ 393: <span class="ruby-identifier">each</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">warnOnDelta</span> }
685
+ 394: <span class="ruby-keyword kw">end</span></pre>
680
686
  </div>
681
687
 
682
688
  </div>