taskjuggler 0.0.11 → 0.1.0

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.
Files changed (697) hide show
  1. data/CHANGELOG +6 -1550
  2. data/benchmarks/UTF-8-Strings.rb +58 -0
  3. data/benchmarks/profile.clt +36082 -0
  4. data/benchmarks/profile.html +58182 -0
  5. data/benchmarks/runbench.rb +2 -2
  6. data/data/css/tjmanual.css +0 -1
  7. data/doc/AppConfig.html +1491 -0
  8. data/doc/CHANGELOG.html +557 -0
  9. data/doc/COPYING.html +899 -0
  10. data/doc/Diff.html +1193 -0
  11. data/doc/Diff/Hunk.html +1026 -0
  12. data/doc/Diffable.html +684 -0
  13. data/doc/DiffableString.html +684 -0
  14. data/doc/Object.html +720 -0
  15. data/doc/README_rdoc.html +742 -0
  16. data/doc/RuntimeConfig.html +856 -0
  17. data/doc/String.html +1005 -0
  18. data/doc/TaskJuggler.html +2639 -0
  19. data/doc/TaskJuggler/Account.html +753 -0
  20. data/doc/TaskJuggler/AccountAttribute.html +769 -0
  21. data/doc/TaskJuggler/AccountScenario.html +712 -0
  22. data/doc/TaskJuggler/Allocation.html +963 -0
  23. data/doc/TaskJuggler/AllocationAttribute.html +799 -0
  24. data/doc/TaskJuggler/AttributeBase.html +1328 -0
  25. data/doc/TaskJuggler/AttributeDefinition.html +815 -0
  26. data/doc/TaskJuggler/AttributeOverwrite.html +606 -0
  27. data/doc/TaskJuggler/BatchProcessor.html +1178 -0
  28. data/doc/TaskJuggler/Booking.html +859 -0
  29. data/doc/TaskJuggler/BookingListAttribute.html +769 -0
  30. data/doc/TaskJuggler/BooleanAttribute.html +769 -0
  31. data/doc/TaskJuggler/CSVFile.html +1128 -0
  32. data/doc/TaskJuggler/CellSettingPattern.html +700 -0
  33. data/doc/TaskJuggler/CellSettingPatternList.html +749 -0
  34. data/doc/TaskJuggler/Charge.html +777 -0
  35. data/doc/TaskJuggler/ChargeListAttribute.html +733 -0
  36. data/doc/TaskJuggler/ChargeSet.html +949 -0
  37. data/doc/TaskJuggler/ChargeSetListAttribute.html +778 -0
  38. data/doc/TaskJuggler/CollisionDetector.html +1089 -0
  39. data/doc/TaskJuggler/ColumnListAttribute.html +733 -0
  40. data/doc/TaskJuggler/ColumnTable.html +763 -0
  41. data/doc/TaskJuggler/Daemon.html +819 -0
  42. data/doc/TaskJuggler/DataCache.html +1025 -0
  43. data/doc/TaskJuggler/DataCacheEntry.html +737 -0
  44. data/doc/TaskJuggler/DateAttribute.html +737 -0
  45. data/doc/TaskJuggler/DefinitionListAttribute.html +655 -0
  46. data/doc/TaskJuggler/DependencyListAttribute.html +773 -0
  47. data/doc/TaskJuggler/DurationAttribute.html +770 -0
  48. data/doc/TaskJuggler/FileList.html +793 -0
  49. data/doc/TaskJuggler/FileRecord.html +702 -0
  50. data/doc/TaskJuggler/FixnumAttribute.html +691 -0
  51. data/doc/TaskJuggler/FlagListAttribute.html +769 -0
  52. data/doc/TaskJuggler/FloatAttribute.html +733 -0
  53. data/doc/TaskJuggler/FormatListAttribute.html +697 -0
  54. data/doc/TaskJuggler/GanttChart.html +1487 -0
  55. data/doc/TaskJuggler/GanttContainer.html +945 -0
  56. data/doc/TaskJuggler/GanttHeader.html +948 -0
  57. data/doc/TaskJuggler/GanttHeaderScaleItem.html +762 -0
  58. data/doc/TaskJuggler/GanttLine.html +1325 -0
  59. data/doc/TaskJuggler/GanttLoadStack.html +828 -0
  60. data/doc/TaskJuggler/GanttMilestone.html +926 -0
  61. data/doc/TaskJuggler/GanttRouter.html +1136 -0
  62. data/doc/TaskJuggler/GanttTaskBar.html +948 -0
  63. data/doc/TaskJuggler/HTMLDocument.html +754 -0
  64. data/doc/TaskJuggler/HTMLElements.html +599 -0
  65. data/doc/TaskJuggler/HTMLGraphics.html +837 -0
  66. data/doc/TaskJuggler/Interval.html +1076 -0
  67. data/doc/TaskJuggler/IntervalList.html +797 -0
  68. data/doc/TaskJuggler/IntervalListAttribute.html +773 -0
  69. data/doc/TaskJuggler/JobInfo.html +943 -0
  70. data/doc/TaskJuggler/Journal.html +1248 -0
  71. data/doc/TaskJuggler/JournalEntry.html +860 -0
  72. data/doc/TaskJuggler/JournalEntryList.html +1229 -0
  73. data/doc/TaskJuggler/KeywordArray.html +696 -0
  74. data/doc/TaskJuggler/KeywordDocumentation.html +2250 -0
  75. data/doc/TaskJuggler/Limits.html +1036 -0
  76. data/doc/TaskJuggler/Limits/Limit.html +947 -0
  77. data/doc/TaskJuggler/LimitsAttribute.html +734 -0
  78. data/doc/TaskJuggler/ListAttributeBase.html +703 -0
  79. data/doc/TaskJuggler/Log.html +1163 -0
  80. data/doc/TaskJuggler/LogFile.html +980 -0
  81. data/doc/TaskJuggler/LogicalAttribute.html +760 -0
  82. data/doc/TaskJuggler/LogicalExpression.html +801 -0
  83. data/doc/TaskJuggler/LogicalExpressionAttribute.html +691 -0
  84. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +691 -0
  85. data/doc/TaskJuggler/LogicalFlag.html +753 -0
  86. data/doc/TaskJuggler/LogicalFunction.html +1409 -0
  87. data/doc/TaskJuggler/LogicalOperation.html +1144 -0
  88. data/doc/TaskJuggler/ManagerResponsibilities.html +736 -0
  89. data/doc/TaskJuggler/ManagerStatusRecord.html +740 -0
  90. data/doc/TaskJuggler/Message.html +837 -0
  91. data/doc/TaskJuggler/MessageHandler.html +1056 -0
  92. data/doc/TaskJuggler/Navigator.html +943 -0
  93. data/doc/TaskJuggler/NavigatorElement.html +994 -0
  94. data/doc/TaskJuggler/NikuProject.html +724 -0
  95. data/doc/TaskJuggler/NikuReport.html +1470 -0
  96. data/doc/TaskJuggler/NikuResource.html +694 -0
  97. data/doc/TaskJuggler/NodeListAttribute.html +655 -0
  98. data/doc/TaskJuggler/PlaceHolderCell.html +748 -0
  99. data/doc/TaskJuggler/ProcessIntercom.html +1017 -0
  100. data/doc/TaskJuggler/ProcessIntercomIface.html +773 -0
  101. data/doc/TaskJuggler/Project.html +3478 -0
  102. data/doc/TaskJuggler/ProjectBroker.html +1676 -0
  103. data/doc/TaskJuggler/ProjectBrokerIface.html +851 -0
  104. data/doc/TaskJuggler/ProjectFileParser.html +2102 -0
  105. data/doc/TaskJuggler/ProjectFileScanner.html +1896 -0
  106. data/doc/TaskJuggler/ProjectRecord.html +978 -0
  107. data/doc/TaskJuggler/ProjectServer.html +1249 -0
  108. data/doc/TaskJuggler/ProjectServerIface.html +868 -0
  109. data/doc/TaskJuggler/PropertyAttribute.html +691 -0
  110. data/doc/TaskJuggler/PropertyList.html +1399 -0
  111. data/doc/TaskJuggler/PropertySet.html +1796 -0
  112. data/doc/TaskJuggler/PropertyTreeNode.html +2851 -0
  113. data/doc/TaskJuggler/Query.html +1756 -0
  114. data/doc/TaskJuggler/RTFHandlers.html +664 -0
  115. data/doc/TaskJuggler/RTFNavigator.html +792 -0
  116. data/doc/TaskJuggler/RTFQuery.html +1083 -0
  117. data/doc/TaskJuggler/RTFReport.html +820 -0
  118. data/doc/TaskJuggler/RTFReportLink.html +812 -0
  119. data/doc/TaskJuggler/RTFWithQuerySupport.html +702 -0
  120. data/doc/TaskJuggler/RealFormat.html +805 -0
  121. data/doc/TaskJuggler/RealFormatAttribute.html +655 -0
  122. data/doc/TaskJuggler/ReferenceAttribute.html +880 -0
  123. data/doc/TaskJuggler/Report.html +1501 -0
  124. data/doc/TaskJuggler/ReportBase.html +1266 -0
  125. data/doc/TaskJuggler/ReportContext.html +837 -0
  126. data/doc/TaskJuggler/ReportServer.html +1068 -0
  127. data/doc/TaskJuggler/ReportServerIface.html +902 -0
  128. data/doc/TaskJuggler/ReportServerRecord.html +781 -0
  129. data/doc/TaskJuggler/ReportServlet.html +1029 -0
  130. data/doc/TaskJuggler/ReportTable.html +1179 -0
  131. data/doc/TaskJuggler/ReportTableCell.html +1666 -0
  132. data/doc/TaskJuggler/ReportTableColumn.html +890 -0
  133. data/doc/TaskJuggler/ReportTableLegend.html +1060 -0
  134. data/doc/TaskJuggler/ReportTableLine.html +1067 -0
  135. data/doc/TaskJuggler/Resource.html +1004 -0
  136. data/doc/TaskJuggler/ResourceListAttribute.html +829 -0
  137. data/doc/TaskJuggler/ResourceListRE.html +737 -0
  138. data/doc/TaskJuggler/ResourceScenario.html +2549 -0
  139. data/doc/TaskJuggler/RichText.html +879 -0
  140. data/doc/TaskJuggler/RichTextAttribute.html +811 -0
  141. data/doc/TaskJuggler/RichTextDocument.html +1038 -0
  142. data/doc/TaskJuggler/RichTextElement.html +1780 -0
  143. data/doc/TaskJuggler/RichTextFunctionExample.html +799 -0
  144. data/doc/TaskJuggler/RichTextFunctionHandler.html +750 -0
  145. data/doc/TaskJuggler/RichTextImage.html +712 -0
  146. data/doc/TaskJuggler/RichTextIntermediate.html +1285 -0
  147. data/doc/TaskJuggler/RichTextParser.html +868 -0
  148. data/doc/TaskJuggler/RichTextScanner.html +1565 -0
  149. data/doc/TaskJuggler/RichTextSnip.html +1000 -0
  150. data/doc/TaskJuggler/RichTextSyntaxRules.html +2052 -0
  151. data/doc/TaskJuggler/Scenario.html +656 -0
  152. data/doc/TaskJuggler/ScenarioData.html +838 -0
  153. data/doc/TaskJuggler/ScenarioListAttribute.html +733 -0
  154. data/doc/TaskJuggler/Scoreboard.html +1201 -0
  155. data/doc/TaskJuggler/SheetHandlerBase.html +1297 -0
  156. data/doc/TaskJuggler/SheetReceiver.html +1398 -0
  157. data/doc/TaskJuggler/SheetSender.html +1168 -0
  158. data/doc/TaskJuggler/Shift.html +751 -0
  159. data/doc/TaskJuggler/ShiftAssignment.html +1008 -0
  160. data/doc/TaskJuggler/ShiftAssignments.html +1413 -0
  161. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +734 -0
  162. data/doc/TaskJuggler/ShiftScenario.html +782 -0
  163. data/doc/TaskJuggler/SimpleQueryExpander.html +732 -0
  164. data/doc/TaskJuggler/SortListAttribute.html +691 -0
  165. data/doc/TaskJuggler/StatusSheetReceiver.html +678 -0
  166. data/doc/TaskJuggler/StatusSheetReport.html +935 -0
  167. data/doc/TaskJuggler/StatusSheetSender.html +808 -0
  168. data/doc/TaskJuggler/StdIoWrapper.html +696 -0
  169. data/doc/TaskJuggler/StringAttribute.html +733 -0
  170. data/doc/TaskJuggler/SymbolAttribute.html +691 -0
  171. data/doc/TaskJuggler/SyntaxReference.html +1240 -0
  172. data/doc/TaskJuggler/TOCEntry.html +836 -0
  173. data/doc/TaskJuggler/TSResourceRecord.html +732 -0
  174. data/doc/TaskJuggler/TSTaskRecord.html +744 -0
  175. data/doc/TaskJuggler/TableColumnDefinition.html +949 -0
  176. data/doc/TaskJuggler/TableOfContents.html +790 -0
  177. data/doc/TaskJuggler/TableReport.html +2555 -0
  178. data/doc/TaskJuggler/Task.html +890 -0
  179. data/doc/TaskJuggler/TaskDepListAttribute.html +773 -0
  180. data/doc/TaskJuggler/TaskDependency.html +832 -0
  181. data/doc/TaskJuggler/TaskListAttribute.html +773 -0
  182. data/doc/TaskJuggler/TaskListRE.html +736 -0
  183. data/doc/TaskJuggler/TaskScenario.html +5180 -0
  184. data/doc/TaskJuggler/TernarySearchTree.html +1341 -0
  185. data/doc/TaskJuggler/TextFormatter.html +973 -0
  186. data/doc/TaskJuggler/TextParser.html +1862 -0
  187. data/doc/TaskJuggler/TextParser/Macro.html +708 -0
  188. data/doc/TaskJuggler/TextParser/MacroTable.html +832 -0
  189. data/doc/TaskJuggler/TextParser/Pattern.html +1743 -0
  190. data/doc/TaskJuggler/TextParser/Rule.html +1419 -0
  191. data/doc/TaskJuggler/TextParser/Scanner.html +1516 -0
  192. data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +661 -0
  193. data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +727 -0
  194. data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +724 -0
  195. data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +1095 -0
  196. data/doc/TaskJuggler/TextParser/SourceFileInfo.html +760 -0
  197. data/doc/TaskJuggler/TextParser/StackElement.html +940 -0
  198. data/doc/TaskJuggler/TextParser/State.html +1015 -0
  199. data/doc/TaskJuggler/TextParser/StateTransition.html +808 -0
  200. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +711 -0
  201. data/doc/TaskJuggler/TextParser/TokenDoc.html +742 -0
  202. data/doc/TaskJuggler/TextReport.html +921 -0
  203. data/doc/TaskJuggler/TimeSheet.html +1264 -0
  204. data/doc/TaskJuggler/TimeSheetReceiver.html +675 -0
  205. data/doc/TaskJuggler/TimeSheetRecord.html +1415 -0
  206. data/doc/TaskJuggler/TimeSheetReport.html +1013 -0
  207. data/doc/TaskJuggler/TimeSheetSender.html +700 -0
  208. data/doc/TaskJuggler/TimeSheetSummary.html +959 -0
  209. data/doc/TaskJuggler/TimeSheets.html +736 -0
  210. data/doc/TaskJuggler/Tj3.html +857 -0
  211. data/doc/TaskJuggler/Tj3AppBase.html +942 -0
  212. data/doc/TaskJuggler/Tj3Client.html +1510 -0
  213. data/doc/TaskJuggler/Tj3Daemon.html +870 -0
  214. data/doc/TaskJuggler/Tj3Man.html +768 -0
  215. data/doc/TaskJuggler/Tj3SheetAppBase.html +758 -0
  216. data/doc/TaskJuggler/Tj3SsReceiver.html +747 -0
  217. data/doc/TaskJuggler/Tj3SsSender.html +780 -0
  218. data/doc/TaskJuggler/Tj3TsReceiver.html +747 -0
  219. data/doc/TaskJuggler/Tj3TsSender.html +767 -0
  220. data/doc/TaskJuggler/Tj3TsSummary.html +775 -0
  221. data/doc/TaskJuggler/TjException.html +692 -0
  222. data/doc/TaskJuggler/TjRuntimeError.html +606 -0
  223. data/doc/TaskJuggler/TjTime.html +3117 -0
  224. data/doc/TaskJuggler/TjpExample.html +897 -0
  225. data/doc/TaskJuggler/TjpExportRE.html +1772 -0
  226. data/doc/TaskJuggler/TjpSyntaxRules.html +14329 -0
  227. data/doc/TaskJuggler/URLParameter.html +691 -0
  228. data/doc/TaskJuggler/UserManual.html +1224 -0
  229. data/doc/TaskJuggler/VimSyntax.html +1064 -0
  230. data/doc/TaskJuggler/WebServer.html +757 -0
  231. data/doc/TaskJuggler/WelcomePage.html +789 -0
  232. data/doc/TaskJuggler/WorkingHours.html +1218 -0
  233. data/doc/TaskJuggler/WorkingHoursAttribute.html +756 -0
  234. data/doc/TaskJuggler/XMLBlob.html +707 -0
  235. data/doc/TaskJuggler/XMLComment.html +702 -0
  236. data/doc/TaskJuggler/XMLDocument.html +803 -0
  237. data/doc/TaskJuggler/XMLElement.html +990 -0
  238. data/doc/TaskJuggler/XMLNamedText.html +663 -0
  239. data/doc/TaskJuggler/XMLText.html +717 -0
  240. data/doc/index.html +4518 -0
  241. data/doc/lib/taskjuggler/AccountScenario_rb.html +69 -0
  242. data/doc/lib/taskjuggler/Account_rb.html +71 -0
  243. data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +67 -0
  244. data/doc/lib/taskjuggler/Allocation_rb.html +71 -0
  245. data/doc/lib/taskjuggler/AppConfig_rb.html +69 -0
  246. data/doc/lib/taskjuggler/AttributeBase_rb.html +69 -0
  247. data/doc/lib/taskjuggler/AttributeDefinition_rb.html +67 -0
  248. data/doc/lib/taskjuggler/Attributes_rb.html +83 -0
  249. data/doc/lib/taskjuggler/BatchProcessor_rb.html +71 -0
  250. data/doc/lib/taskjuggler/Booking_rb.html +67 -0
  251. data/doc/lib/taskjuggler/ChargeSet_rb.html +69 -0
  252. data/doc/lib/taskjuggler/Charge_rb.html +69 -0
  253. data/doc/lib/taskjuggler/DataCache_rb.html +71 -0
  254. data/doc/lib/taskjuggler/FileList_rb.html +67 -0
  255. data/doc/lib/taskjuggler/HTMLDocument_rb.html +71 -0
  256. data/doc/lib/taskjuggler/HTMLElements_rb.html +69 -0
  257. data/doc/lib/taskjuggler/IntervalList_rb.html +69 -0
  258. data/doc/lib/taskjuggler/Interval_rb.html +69 -0
  259. data/doc/lib/taskjuggler/Journal_rb.html +67 -0
  260. data/doc/lib/taskjuggler/KeywordArray_rb.html +67 -0
  261. data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +77 -0
  262. data/doc/lib/taskjuggler/Limits_rb.html +69 -0
  263. data/doc/lib/taskjuggler/LogFile_rb.html +69 -0
  264. data/doc/lib/taskjuggler/Log_rb.html +71 -0
  265. data/doc/lib/taskjuggler/LogicalExpression_rb.html +73 -0
  266. data/doc/lib/taskjuggler/LogicalFunction_rb.html +69 -0
  267. data/doc/lib/taskjuggler/LogicalOperation_rb.html +69 -0
  268. data/doc/lib/taskjuggler/MessageHandler_rb.html +69 -0
  269. data/doc/lib/taskjuggler/ProjectFileParser_rb.html +77 -0
  270. data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +69 -0
  271. data/doc/lib/taskjuggler/Project_rb.html +113 -0
  272. data/doc/lib/taskjuggler/PropertyList_rb.html +67 -0
  273. data/doc/lib/taskjuggler/PropertySet_rb.html +71 -0
  274. data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +67 -0
  275. data/doc/lib/taskjuggler/Query_rb.html +69 -0
  276. data/doc/lib/taskjuggler/RealFormat_rb.html +67 -0
  277. data/doc/lib/taskjuggler/ResourceScenario_rb.html +69 -0
  278. data/doc/lib/taskjuggler/Resource_rb.html +71 -0
  279. data/doc/lib/taskjuggler/RichText/Document_rb.html +73 -0
  280. data/doc/lib/taskjuggler/RichText/Element_rb.html +75 -0
  281. data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +73 -0
  282. data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +67 -0
  283. data/doc/lib/taskjuggler/RichText/Parser_rb.html +75 -0
  284. data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +75 -0
  285. data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +73 -0
  286. data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +73 -0
  287. data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +75 -0
  288. data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +71 -0
  289. data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +69 -0
  290. data/doc/lib/taskjuggler/RichText/Scanner_rb.html +71 -0
  291. data/doc/lib/taskjuggler/RichText/Snip_rb.html +71 -0
  292. data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +67 -0
  293. data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +71 -0
  294. data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +71 -0
  295. data/doc/lib/taskjuggler/RichText_rb.html +73 -0
  296. data/doc/lib/taskjuggler/RuntimeConfig_rb.html +69 -0
  297. data/doc/lib/taskjuggler/ScenarioData_rb.html +71 -0
  298. data/doc/lib/taskjuggler/Scenario_rb.html +69 -0
  299. data/doc/lib/taskjuggler/Scoreboard_rb.html +69 -0
  300. data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +75 -0
  301. data/doc/lib/taskjuggler/SheetReceiver_rb.html +81 -0
  302. data/doc/lib/taskjuggler/SheetSender_rb.html +79 -0
  303. data/doc/lib/taskjuggler/ShiftAssignments_rb.html +71 -0
  304. data/doc/lib/taskjuggler/ShiftScenario_rb.html +69 -0
  305. data/doc/lib/taskjuggler/Shift_rb.html +71 -0
  306. data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +69 -0
  307. data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +69 -0
  308. data/doc/lib/taskjuggler/StatusSheetSender_rb.html +69 -0
  309. data/doc/lib/taskjuggler/StdIoWrapper_rb.html +67 -0
  310. data/doc/lib/taskjuggler/SyntaxReference_rb.html +75 -0
  311. data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +67 -0
  312. data/doc/lib/taskjuggler/TaskDependency_rb.html +67 -0
  313. data/doc/lib/taskjuggler/TaskJuggler_rb.html +75 -0
  314. data/doc/lib/taskjuggler/TaskScenario_rb.html +71 -0
  315. data/doc/lib/taskjuggler/Task_rb.html +71 -0
  316. data/doc/lib/taskjuggler/TernarySearchTree_rb.html +69 -0
  317. data/doc/lib/taskjuggler/TextFormatter_rb.html +69 -0
  318. data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +67 -0
  319. data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +71 -0
  320. data/doc/lib/taskjuggler/TextParser/Rule_rb.html +69 -0
  321. data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +77 -0
  322. data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +67 -0
  323. data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +67 -0
  324. data/doc/lib/taskjuggler/TextParser/State_rb.html +67 -0
  325. data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +67 -0
  326. data/doc/lib/taskjuggler/TextParser_rb.html +79 -0
  327. data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +69 -0
  328. data/doc/lib/taskjuggler/TimeSheetSender_rb.html +69 -0
  329. data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +69 -0
  330. data/doc/lib/taskjuggler/TimeSheets_rb.html +67 -0
  331. data/doc/lib/taskjuggler/Tj3AppBase_rb.html +79 -0
  332. data/doc/lib/taskjuggler/Tj3Config_rb.html +71 -0
  333. data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +69 -0
  334. data/doc/lib/taskjuggler/TjException_rb.html +67 -0
  335. data/doc/lib/taskjuggler/TjTime_rb.html +71 -0
  336. data/doc/lib/taskjuggler/TjpExample_rb.html +69 -0
  337. data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +67 -0
  338. data/doc/lib/taskjuggler/URLParameter_rb.html +69 -0
  339. data/doc/lib/taskjuggler/UTF8String_rb.html +69 -0
  340. data/doc/lib/taskjuggler/UserManual_rb.html +81 -0
  341. data/doc/lib/taskjuggler/VimSyntax_rb.html +69 -0
  342. data/doc/lib/taskjuggler/WorkingHours_rb.html +71 -0
  343. data/doc/lib/taskjuggler/XMLDocument_rb.html +69 -0
  344. data/doc/lib/taskjuggler/XMLElement_rb.html +69 -0
  345. data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +75 -0
  346. data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +75 -0
  347. data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +75 -0
  348. data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +71 -0
  349. data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +71 -0
  350. data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +71 -0
  351. data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +71 -0
  352. data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +71 -0
  353. data/doc/lib/taskjuggler/apps/Tj3_rb.html +71 -0
  354. data/doc/lib/taskjuggler/daemon/Daemon_rb.html +69 -0
  355. data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +71 -0
  356. data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +83 -0
  357. data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +85 -0
  358. data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +73 -0
  359. data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +69 -0
  360. data/doc/lib/taskjuggler/daemon/WebServer_rb.html +81 -0
  361. data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +71 -0
  362. data/doc/lib/taskjuggler/deep_copy_rb.html +67 -0
  363. data/doc/lib/taskjuggler/reports/CSVFile_rb.html +69 -0
  364. data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +69 -0
  365. data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +69 -0
  366. data/doc/lib/taskjuggler/reports/GanttChart_rb.html +75 -0
  367. data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +69 -0
  368. data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +67 -0
  369. data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +69 -0
  370. data/doc/lib/taskjuggler/reports/GanttLine_rb.html +79 -0
  371. data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +69 -0
  372. data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +69 -0
  373. data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +69 -0
  374. data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +69 -0
  375. data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +67 -0
  376. data/doc/lib/taskjuggler/reports/Navigator_rb.html +69 -0
  377. data/doc/lib/taskjuggler/reports/NikuReport_rb.html +71 -0
  378. data/doc/lib/taskjuggler/reports/ReportBase_rb.html +67 -0
  379. data/doc/lib/taskjuggler/reports/ReportContext_rb.html +67 -0
  380. data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +67 -0
  381. data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +67 -0
  382. data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +67 -0
  383. data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +69 -0
  384. data/doc/lib/taskjuggler/reports/ReportTable_rb.html +71 -0
  385. data/doc/lib/taskjuggler/reports/Report_rb.html +93 -0
  386. data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +75 -0
  387. data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +69 -0
  388. data/doc/lib/taskjuggler/reports/TableReport_rb.html +77 -0
  389. data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +75 -0
  390. data/doc/lib/taskjuggler/reports/TextReport_rb.html +69 -0
  391. data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +69 -0
  392. data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +69 -0
  393. data/doc/lib/tj3_rb.html +69 -0
  394. data/doc/lib/tj3client_rb.html +69 -0
  395. data/doc/lib/tj3d_rb.html +69 -0
  396. data/doc/lib/tj3man_rb.html +69 -0
  397. data/doc/lib/tj3ss_receiver_rb.html +69 -0
  398. data/doc/lib/tj3ss_sender_rb.html +69 -0
  399. data/doc/lib/tj3ts_receiver_rb.html +69 -0
  400. data/doc/lib/tj3ts_sender_rb.html +69 -0
  401. data/doc/lib/tj3ts_summary_rb.html +69 -0
  402. data/doc/rdoc.css +706 -0
  403. data/examples/tutorial.tjp +2 -1
  404. data/lib/taskjuggler/Attributes.rb +33 -12
  405. data/lib/taskjuggler/DataCache.rb +17 -0
  406. data/lib/taskjuggler/FileList.rb +9 -0
  407. data/lib/taskjuggler/HTMLDocument.rb +19 -21
  408. data/lib/taskjuggler/HTMLElements.rb +46 -0
  409. data/lib/taskjuggler/Journal.rb +95 -46
  410. data/lib/taskjuggler/KeywordDocumentation.rb +248 -185
  411. data/lib/taskjuggler/LogicalExpression.rb +2 -2
  412. data/lib/taskjuggler/LogicalFunction.rb +22 -1
  413. data/lib/taskjuggler/LogicalOperation.rb +15 -5
  414. data/lib/taskjuggler/Project.rb +73 -16
  415. data/lib/taskjuggler/ProjectFileParser.rb +1 -1
  416. data/lib/taskjuggler/ProjectFileScanner.rb +27 -0
  417. data/lib/taskjuggler/PropertySet.rb +22 -45
  418. data/lib/taskjuggler/PropertyTreeNode.rb +99 -128
  419. data/lib/taskjuggler/Query.rb +39 -8
  420. data/lib/taskjuggler/Resource.rb +15 -6
  421. data/lib/taskjuggler/RichText/Document.rb +3 -3
  422. data/lib/taskjuggler/RichText/RTFQuery.rb +4 -4
  423. data/lib/taskjuggler/SheetHandlerBase.rb +14 -12
  424. data/lib/taskjuggler/SheetReceiver.rb +17 -15
  425. data/lib/taskjuggler/SheetSender.rb +16 -10
  426. data/{spec/support → lib/taskjuggler}/StdIoWrapper.rb +17 -0
  427. data/lib/taskjuggler/SyntaxReference.rb +2 -2
  428. data/lib/taskjuggler/TableColumnDefinition.rb +4 -3
  429. data/lib/taskjuggler/Task.rb +7 -2
  430. data/lib/taskjuggler/TaskJuggler.rb +74 -0
  431. data/lib/taskjuggler/TaskScenario.rb +62 -83
  432. data/lib/taskjuggler/TextParser.rb +20 -13
  433. data/lib/taskjuggler/TextParser/Scanner.rb +17 -1
  434. data/lib/taskjuggler/TimeSheetSummary.rb +9 -5
  435. data/lib/taskjuggler/TimeSheets.rb +6 -1
  436. data/lib/taskjuggler/Tj3AppBase.rb +41 -18
  437. data/lib/taskjuggler/Tj3Config.rb +1 -1
  438. data/lib/taskjuggler/TjTime.rb +6 -1
  439. data/lib/taskjuggler/TjpSyntaxRules.rb +408 -227
  440. data/lib/taskjuggler/UTF8String.rb +10 -0
  441. data/lib/taskjuggler/UserManual.rb +89 -81
  442. data/lib/taskjuggler/WorkingHours.rb +2 -3
  443. data/lib/taskjuggler/XMLDocument.rb +13 -4
  444. data/lib/taskjuggler/XMLElement.rb +31 -3
  445. data/lib/taskjuggler/apps/Tj3.rb +53 -21
  446. data/lib/taskjuggler/apps/Tj3Client.rb +19 -17
  447. data/lib/taskjuggler/apps/Tj3Daemon.rb +24 -21
  448. data/lib/taskjuggler/{Tj3Man.rb → apps/Tj3Man.rb} +2 -2
  449. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +14 -11
  450. data/lib/taskjuggler/apps/Tj3SsSender.rb +17 -14
  451. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +14 -11
  452. data/lib/taskjuggler/apps/Tj3TsSender.rb +16 -13
  453. data/lib/taskjuggler/apps/Tj3TsSummary.rb +16 -13
  454. data/lib/taskjuggler/reports/GanttChart.rb +1 -1
  455. data/lib/taskjuggler/reports/GanttRouter.rb +0 -2
  456. data/lib/taskjuggler/reports/GanttTaskBar.rb +2 -1
  457. data/lib/taskjuggler/reports/Navigator.rb +2 -1
  458. data/lib/taskjuggler/reports/NikuReport.rb +11 -7
  459. data/lib/taskjuggler/reports/ReportContext.rb +1 -0
  460. data/lib/taskjuggler/reports/StatusSheetReport.rb +7 -2
  461. data/lib/taskjuggler/reports/TableReport.rb +6 -4
  462. data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -0
  463. data/lib/taskjuggler/reports/TjpExportRE.rb +4 -4
  464. data/lib/tj3man.rb +1 -1
  465. data/manual/Day_To_Day_Juggling +134 -137
  466. data/manual/TaskJuggler_2x_Migration +39 -32
  467. data/manual/The_TaskJuggler_Syntax +6 -0
  468. data/prj_cfg.rb +2 -3
  469. data/spec/StatusSheets_spec.rb +314 -0
  470. data/spec/TimeSheets_spec.rb +237 -16
  471. data/spec/Tj3_spec.rb +1 -1
  472. data/spec/support/DaemonControl.rb +1 -1
  473. data/tasks/changelog.rake +13 -3
  474. data/tasks/manual.rake +1 -1
  475. data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -1
  476. data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +1 -1
  477. data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +1 -1
  478. data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -1
  479. data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -1
  480. data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +1 -1
  481. data/test/TestSuite/CSV-Reports/refs/taskreport.csv +1 -1
  482. data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +1 -1
  483. data/test/TestSuite/CSV-Reports/sortByTree.tjp +3 -1
  484. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +4 -1
  485. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -1
  486. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +4 -1
  487. data/test/TestSuite/CSV-Reports/taskreport.tjp +3 -1
  488. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +3 -1
  489. data/test/TestSuite/CSV-Reports/weekly.tjp +1 -0
  490. data/test/TestSuite/Export-Reports/refs/Account.tjp +25 -30
  491. data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +1 -0
  492. data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +43 -72
  493. data/test/TestSuite/Export-Reports/refs/Alternative.tjp +17 -22
  494. data/test/TestSuite/Export-Reports/refs/AutoID.tjp +11 -10
  495. data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +1 -0
  496. data/test/TestSuite/Export-Reports/refs/Booking.tjp +16 -23
  497. data/test/TestSuite/Export-Reports/refs/Caption.tjp +13 -16
  498. data/test/TestSuite/Export-Reports/refs/Celltext.tjp +12 -16
  499. data/test/TestSuite/Export-Reports/refs/Comments.tjp +15 -19
  500. data/test/TestSuite/Export-Reports/refs/Complete.tjp +17 -26
  501. data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
  502. data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +1 -0
  503. data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +1 -0
  504. data/test/TestSuite/Export-Reports/refs/Depends1.tjp +5 -4
  505. data/test/TestSuite/Export-Reports/refs/Durations.tjp +18 -27
  506. data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +21 -20
  507. data/test/TestSuite/Export-Reports/refs/EnvVar.tjp +21 -0
  508. data/test/TestSuite/Export-Reports/refs/Flags.tjp +6 -5
  509. data/test/TestSuite/Export-Reports/refs/Gap.tjp +2 -1
  510. data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +15 -19
  511. data/test/TestSuite/Export-Reports/refs/Include.tjp +21 -20
  512. data/test/TestSuite/Export-Reports/refs/Journal.tjp +6 -5
  513. data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +92 -140
  514. data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +293 -566
  515. data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +1 -0
  516. data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +17 -22
  517. data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +32 -53
  518. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +1 -0
  519. data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +1 -0
  520. data/test/TestSuite/Export-Reports/refs/Manager.tjp +51 -50
  521. data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +22 -31
  522. data/test/TestSuite/Export-Reports/refs/Milestone.tjp +1 -0
  523. data/test/TestSuite/Export-Reports/refs/MinMax.tjp +2 -1
  524. data/test/TestSuite/Export-Reports/refs/Niku.tjp +80 -139
  525. data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +1 -0
  526. data/test/TestSuite/Export-Reports/refs/Period.tjp +1 -0
  527. data/test/TestSuite/Export-Reports/refs/Persistent.tjp +17 -21
  528. data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +1 -0
  529. data/test/TestSuite/Export-Reports/refs/Priority.tjp +121 -107
  530. data/test/TestSuite/Export-Reports/refs/Project.tjp +1 -0
  531. data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +1 -0
  532. data/test/TestSuite/Export-Reports/refs/Query.tjp +17 -26
  533. data/test/TestSuite/Export-Reports/refs/Reports.tjp +42 -61
  534. data/test/TestSuite/Export-Reports/refs/Resource.tjp +21 -20
  535. data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +16 -20
  536. data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +36 -35
  537. data/test/TestSuite/Export-Reports/refs/Responsible.tjp +17 -21
  538. data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +36 -35
  539. data/test/TestSuite/Export-Reports/refs/Scenario.tjp +3 -1
  540. data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +1 -0
  541. data/test/TestSuite/Export-Reports/refs/Select.tjp +29 -43
  542. data/test/TestSuite/Export-Reports/refs/Shift.tjp +12 -11
  543. data/test/TestSuite/Export-Reports/refs/Simple.tjp +15 -19
  544. data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +33 -47
  545. data/test/TestSuite/Export-Reports/refs/String.tjp +9 -10
  546. data/test/TestSuite/Export-Reports/refs/Supplement.tjp +7 -8
  547. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +10 -11
  548. data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +10 -9
  549. data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +9 -9
  550. data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +25 -37
  551. data/test/TestSuite/Export-Reports/refs/Timezone.tjp +1 -0
  552. data/test/TestSuite/Export-Reports/refs/Vacation.tjp +26 -25
  553. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +453 -821
  554. data/test/TestSuite/HTML-Reports/Alerts.html +160 -412
  555. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  556. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  557. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  558. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  559. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  560. data/test/TestSuite/HTML-Reports/css/tjmanual.css +0 -20
  561. data/test/TestSuite/HTML-Reports/css/tjreport.css +6 -7
  562. data/test/TestSuite/HTML-Reports/depArrows.html +851 -0
  563. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  564. data/test/TestSuite/{ReportGenerator/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
  565. data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +27 -3
  566. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions3.tjp +20 -0
  567. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions4.tjp +16 -0
  568. data/test/TestSuite/ReportGenerator/Correct/refs/DependencyList-1.csv +4 -0
  569. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +2 -0
  570. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-2.csv +8 -0
  571. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions3-1.csv +4 -0
  572. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions4-1.csv +2 -0
  573. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +3 -1
  574. data/test/TestSuite/Scheduler/Correct/Booking.tjp +8 -7
  575. data/test/TestSuite/Scheduler/Correct/Booking2.tjp +16 -9
  576. data/test/TestSuite/Scheduler/Correct/Booking3.tjp +28 -0
  577. data/test/TestSuite/Scheduler/Correct/Container.tjp +2 -2
  578. data/test/TestSuite/Scheduler/Correct/Depends.tjp +3 -3
  579. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +4 -4
  580. data/test/TestSuite/Scheduler/Correct/Limits.tjp +3 -1
  581. data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +2 -2
  582. data/test/TestSuite/Scheduler/Correct/MultipleMandatories.tjp +2 -2
  583. data/test/TestSuite/Scheduler/Correct/Optimize-1.tjp +2 -2
  584. data/test/TestSuite/Scheduler/Correct/Optimize-2.tjp +3 -3
  585. data/test/TestSuite/Scheduler/Correct/Optimize-3.tjp +3 -3
  586. data/test/TestSuite/Scheduler/Correct/Optimize-4.tjp +3 -3
  587. data/test/TestSuite/Scheduler/Correct/Optimize-5.tjp +7 -7
  588. data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +2 -2
  589. data/test/TestSuite/Scheduler/Correct/Shift.tjp +7 -5
  590. data/test/TestSuite/Scheduler/Correct/Shift2.tjp +1 -1
  591. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +5 -2
  592. data/test/TestSuite/Scheduler/Errors/booking_no_duty.tjp +1 -1
  593. data/test/TestSuite/Scheduler/Errors/ts_alert1_more_details.tjp +4 -2
  594. data/test/TestSuite/Scheduler/Errors/ts_alert2_more_details.tjp +4 -2
  595. data/test/TestSuite/Scheduler/Errors/ts_no_expected_end.tjp +4 -2
  596. data/test/TestSuite/Scheduler/Errors/ts_no_headline1.tjp +4 -2
  597. data/test/TestSuite/Scheduler/Errors/ts_no_rem_or_end.tjp +4 -2
  598. data/test/TestSuite/Scheduler/Errors/ts_no_remaining.tjp +4 -2
  599. data/test/TestSuite/Scheduler/Errors/ts_no_status_work.tjp +4 -2
  600. data/test/TestSuite/Scheduler/Errors/ts_no_work.tjp +4 -2
  601. data/test/TestSuite/Scheduler/Errors/ts_res_new_task.tjp +5 -2
  602. data/test/TestSuite/Scheduler/Errors/ts_work_too_high.tjp +4 -2
  603. data/test/TestSuite/Scheduler/Errors/ts_work_too_low.tjp +4 -2
  604. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  605. data/test/TestSuite/StatusSheets/run +1 -1
  606. data/test/TestSuite/Syntax/Correct/Booking.tjp +0 -5
  607. data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
  608. data/test/TestSuite/Syntax/Correct/EnvVar.tjp +12 -0
  609. data/test/TestSuite/Syntax/Correct/Freeze.tjp +1 -3
  610. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +9 -5
  611. data/test/TestSuite/Syntax/Correct/Priority.tjp +22 -11
  612. data/test/TestSuite/Syntax/Correct/Scenario.tjp +1 -1
  613. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +2 -0
  614. data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -4
  615. data/test/TestSuite/Syntax/Correct/css/tjmanual.css +20 -0
  616. data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -6
  617. data/test/TestSuite/Syntax/Correct/tutorial.tjp +2 -1
  618. data/test/TestSuite/Syntax/Errors/no_own_resource_booking.tjp +16 -0
  619. data/test/TestSuite/Syntax/Errors/no_own_task_booking.tjp +16 -0
  620. data/test/TestSuite/Syntax/Errors/resourceroot_leaf.tjp +10 -0
  621. data/test/TestSuite/Syntax/Errors/runaway_token.tjp +8 -0
  622. data/test/TestSuite/Syntax/Errors/sorting_bsi.tjp +11 -0
  623. data/test/TestSuite/Syntax/Errors/ss_no_tracking_scenario.tjp +14 -0
  624. data/test/TestSuite/Syntax/Errors/taskroot_leaf.tjp +8 -0
  625. data/test/TestSuite/Syntax/Errors/ts_bad_priority.tjp +4 -2
  626. data/test/TestSuite/Syntax/Errors/ts_default_details.tjp +4 -2
  627. data/test/TestSuite/Syntax/Errors/ts_default_summary.tjp +4 -2
  628. data/test/TestSuite/Syntax/Errors/ts_duplicate_task.tjp +4 -2
  629. data/test/TestSuite/Syntax/Errors/ts_end_too_early.tjp +4 -2
  630. data/test/TestSuite/Syntax/Errors/ts_headline_too_long.tjp +4 -2
  631. data/test/TestSuite/Syntax/Errors/ts_no_headline2.tjp +4 -2
  632. data/test/TestSuite/Syntax/Errors/ts_no_tracking_scenario.tjp +14 -0
  633. data/test/TestSuite/Syntax/Errors/ts_summary_too_long.tjp +4 -2
  634. data/test/TestSuite/Syntax/Errors/unknown_env_var.tjp +7 -0
  635. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  636. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  637. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  638. data/test/test_Export-Reports.rb +3 -0
  639. data/test/test_Journal.rb +4 -4
  640. data/test/test_PropertySet.rb +5 -5
  641. data/test/test_Syntax.rb +3 -0
  642. data/test/test_WorkingHours.rb +11 -18
  643. metadata +1012 -649
  644. data/lib/exchangebug.rb +0 -42
  645. data/lib/ruby-signal-bug.rb +0 -55
  646. data/spec/tj3client.log +0 -23
  647. data/test/TestSuite/CSV-Reports/alert.tjp +0 -9
  648. data/test/TestSuite/CSV-Reports/refs/alert.csv +0 -15
  649. data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +0 -41
  650. data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -89
  651. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -79
  652. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  653. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  654. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.csv +0 -1
  655. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -78
  656. data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -6
  657. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  658. data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +0 -66
  659. data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +0 -413
  660. data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
  661. data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
  662. data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
  663. data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
  664. data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
  665. data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
  666. data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
  667. data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
  668. data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
  669. data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
  670. data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
  671. data/test/TestSuite/ReportGenerator/Correct/opennodes-1.csv +0 -2
  672. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  673. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  674. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  675. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -86
  676. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +0 -413
  677. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  678. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  679. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  680. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  681. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  682. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  683. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  684. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  685. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  686. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  687. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  688. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
  689. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  690. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  691. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
  692. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +0 -33
  693. data/test/TestSuite/Syntax/Correct/DST.tjp +0 -11
  694. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
  695. data/test/TestSuite/Syntax/Correct/niku.xml +0 -30
  696. data/test/TestSuite/Syntax/Errors/sorting_wbs.tjp +0 -11
  697. data/test/TestSuite/TimeSheets/uu.txt +0 -29
@@ -0,0 +1,1756 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
7
+
8
+ <title>Class: TaskJuggler::Query</title>
9
+
10
+ <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="../js/jquery.js" type="text/javascript"
13
+ charset="utf-8"></script>
14
+ <script src="../js/thickbox-compressed.js" type="text/javascript"
15
+ charset="utf-8"></script>
16
+ <script src="../js/quicksearch.js" type="text/javascript"
17
+ charset="utf-8"></script>
18
+ <script src="../js/darkfish.js" type="text/javascript"
19
+ charset="utf-8"></script>
20
+
21
+ </head>
22
+ <body class="class">
23
+
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="../index.html">Home</a>
29
+ <a href="../index.html#classes">Classes</a>
30
+ <a href="../index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="file-metadata">
36
+ <div id="file-list-section" class="section">
37
+ <h3 class="section-header">In Files</h3>
38
+ <div class="section-body">
39
+ <ul>
40
+
41
+ <li><a href="../lib/taskjuggler/Query_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="lib/taskjuggler/Query.rb">lib/taskjuggler/Query.rb</a></li>
43
+
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+
49
+ </div>
50
+
51
+ <div id="class-metadata">
52
+
53
+ <!-- Parent Class -->
54
+
55
+ <div id="parent-class-section" class="section">
56
+ <h3 class="section-header">Parent</h3>
57
+
58
+ <p class="link"><a href="../Object.html">Object</a></p>
59
+
60
+ </div>
61
+
62
+
63
+ <!-- Namespace Contents -->
64
+
65
+
66
+ <!-- Method Quickref -->
67
+
68
+ <div id="method-list-section" class="section">
69
+ <h3 class="section-header">Methods</h3>
70
+ <ul class="link-list">
71
+
72
+ <li><a href="#method-c-new">::new</a></li>
73
+
74
+ <li><a href="#method-i-assignList">#assignList</a></li>
75
+
76
+ <li><a href="#method-i-end">#end</a></li>
77
+
78
+ <li><a href="#method-i-endIdx%3D">#endIdx=</a></li>
79
+
80
+ <li><a href="#method-i-process">#process</a></li>
81
+
82
+ <li><a href="#method-i-reset">#reset</a></li>
83
+
84
+ <li><a href="#method-i-resolvePropertyId">#resolvePropertyId</a></li>
85
+
86
+ <li><a href="#method-i-result">#result</a></li>
87
+
88
+ <li><a href="#method-i-scaleDuration">#scaleDuration</a></li>
89
+
90
+ <li><a href="#method-i-scaleLoad">#scaleLoad</a></li>
91
+
92
+ <li><a href="#method-i-scaleValue">#scaleValue</a></li>
93
+
94
+ <li><a href="#method-i-setCustomData">#setCustomData</a></li>
95
+
96
+ <li><a href="#method-i-start%3D">#start=</a></li>
97
+
98
+ <li><a href="#method-i-startIdx%3D">#startIdx=</a></li>
99
+
100
+ <li><a href="#method-i-to_num">#to_num</a></li>
101
+
102
+ <li><a href="#method-i-to_rti">#to_rti</a></li>
103
+
104
+ <li><a href="#method-i-to_s">#to_s</a></li>
105
+
106
+ <li><a href="#method-i-to_sort">#to_sort</a></li>
107
+
108
+ </ul>
109
+ </div>
110
+
111
+
112
+ <!-- Included Modules -->
113
+
114
+ </div>
115
+
116
+ <div id="project-metadata">
117
+
118
+
119
+ <div id="fileindex-section" class="section project-section">
120
+ <h3 class="section-header">Files</h3>
121
+ <ul>
122
+
123
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
124
+
125
+ <li class="file"><a href="../COPYING.html">COPYING</a></li>
126
+
127
+ <li class="file"><a href="../README_rdoc.html">README.rdoc</a></li>
128
+
129
+ </ul>
130
+ </div>
131
+
132
+
133
+ <div id="classindex-section" class="section project-section">
134
+ <h3 class="section-header">Class Index
135
+ <span class="search-toggle"><img src="../images/find.png"
136
+ height="16" width="16" alt="[+]"
137
+ title="show/hide quicksearch" /></span></h3>
138
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
139
+ <fieldset>
140
+ <legend>Quicksearch</legend>
141
+ <input type="text" name="quicksearch" value=""
142
+ class="quicksearch-field" />
143
+ </fieldset>
144
+ </form>
145
+
146
+ <ul class="link-list">
147
+
148
+ <li><a href="../TaskJuggler.html">TaskJuggler</a></li>
149
+
150
+ <li><a href="../TaskJuggler/Account.html">TaskJuggler::Account</a></li>
151
+
152
+ <li><a href="../TaskJuggler/AccountAttribute.html">TaskJuggler::AccountAttribute</a></li>
153
+
154
+ <li><a href="../TaskJuggler/AccountScenario.html">TaskJuggler::AccountScenario</a></li>
155
+
156
+ <li><a href="../TaskJuggler/Allocation.html">TaskJuggler::Allocation</a></li>
157
+
158
+ <li><a href="../TaskJuggler/AllocationAttribute.html">TaskJuggler::AllocationAttribute</a></li>
159
+
160
+ <li><a href="../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li>
161
+
162
+ <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
163
+
164
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
165
+
166
+ <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
167
+
168
+ <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
169
+
170
+ <li><a href="../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li>
171
+
172
+ <li><a href="../TaskJuggler/BooleanAttribute.html">TaskJuggler::BooleanAttribute</a></li>
173
+
174
+ <li><a href="../TaskJuggler/CSVFile.html">TaskJuggler::CSVFile</a></li>
175
+
176
+ <li><a href="../TaskJuggler/CellSettingPattern.html">TaskJuggler::CellSettingPattern</a></li>
177
+
178
+ <li><a href="../TaskJuggler/CellSettingPatternList.html">TaskJuggler::CellSettingPatternList</a></li>
179
+
180
+ <li><a href="../TaskJuggler/Charge.html">TaskJuggler::Charge</a></li>
181
+
182
+ <li><a href="../TaskJuggler/ChargeListAttribute.html">TaskJuggler::ChargeListAttribute</a></li>
183
+
184
+ <li><a href="../TaskJuggler/ChargeSet.html">TaskJuggler::ChargeSet</a></li>
185
+
186
+ <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
187
+
188
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
189
+
190
+ <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
191
+
192
+ <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
193
+
194
+ <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
195
+
196
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
197
+
198
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
199
+
200
+ <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
201
+
202
+ <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
203
+
204
+ <li><a href="../TaskJuggler/DependencyListAttribute.html">TaskJuggler::DependencyListAttribute</a></li>
205
+
206
+ <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
207
+
208
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
209
+
210
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
211
+
212
+ <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
213
+
214
+ <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
215
+
216
+ <li><a href="../TaskJuggler/FloatAttribute.html">TaskJuggler::FloatAttribute</a></li>
217
+
218
+ <li><a href="../TaskJuggler/FormatListAttribute.html">TaskJuggler::FormatListAttribute</a></li>
219
+
220
+ <li><a href="../TaskJuggler/GanttChart.html">TaskJuggler::GanttChart</a></li>
221
+
222
+ <li><a href="../TaskJuggler/GanttContainer.html">TaskJuggler::GanttContainer</a></li>
223
+
224
+ <li><a href="../TaskJuggler/GanttHeader.html">TaskJuggler::GanttHeader</a></li>
225
+
226
+ <li><a href="../TaskJuggler/GanttHeaderScaleItem.html">TaskJuggler::GanttHeaderScaleItem</a></li>
227
+
228
+ <li><a href="../TaskJuggler/GanttLine.html">TaskJuggler::GanttLine</a></li>
229
+
230
+ <li><a href="../TaskJuggler/GanttLoadStack.html">TaskJuggler::GanttLoadStack</a></li>
231
+
232
+ <li><a href="../TaskJuggler/GanttMilestone.html">TaskJuggler::GanttMilestone</a></li>
233
+
234
+ <li><a href="../TaskJuggler/GanttRouter.html">TaskJuggler::GanttRouter</a></li>
235
+
236
+ <li><a href="../TaskJuggler/GanttTaskBar.html">TaskJuggler::GanttTaskBar</a></li>
237
+
238
+ <li><a href="../TaskJuggler/HTMLDocument.html">TaskJuggler::HTMLDocument</a></li>
239
+
240
+ <li><a href="../TaskJuggler/HTMLElements.html">TaskJuggler::HTMLElements</a></li>
241
+
242
+ <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
243
+
244
+ <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
245
+
246
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
247
+
248
+ <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
249
+
250
+ <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
251
+
252
+ <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
253
+
254
+ <li><a href="../TaskJuggler/JournalEntry.html">TaskJuggler::JournalEntry</a></li>
255
+
256
+ <li><a href="../TaskJuggler/JournalEntryList.html">TaskJuggler::JournalEntryList</a></li>
257
+
258
+ <li><a href="../TaskJuggler/KeywordArray.html">TaskJuggler::KeywordArray</a></li>
259
+
260
+ <li><a href="../TaskJuggler/KeywordDocumentation.html">TaskJuggler::KeywordDocumentation</a></li>
261
+
262
+ <li><a href="../TaskJuggler/Limits.html">TaskJuggler::Limits</a></li>
263
+
264
+ <li><a href="../TaskJuggler/Limits/Limit.html">TaskJuggler::Limits::Limit</a></li>
265
+
266
+ <li><a href="../TaskJuggler/LimitsAttribute.html">TaskJuggler::LimitsAttribute</a></li>
267
+
268
+ <li><a href="../TaskJuggler/ListAttributeBase.html">TaskJuggler::ListAttributeBase</a></li>
269
+
270
+ <li><a href="../TaskJuggler/Log.html">TaskJuggler::Log</a></li>
271
+
272
+ <li><a href="../TaskJuggler/LogFile.html">TaskJuggler::LogFile</a></li>
273
+
274
+ <li><a href="../TaskJuggler/LogicalAttribute.html">TaskJuggler::LogicalAttribute</a></li>
275
+
276
+ <li><a href="../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li>
277
+
278
+ <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
279
+
280
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
281
+
282
+ <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
283
+
284
+ <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
285
+
286
+ <li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
287
+
288
+ <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
289
+
290
+ <li><a href="../TaskJuggler/ManagerStatusRecord.html">TaskJuggler::ManagerStatusRecord</a></li>
291
+
292
+ <li><a href="../TaskJuggler/Message.html">TaskJuggler::Message</a></li>
293
+
294
+ <li><a href="../TaskJuggler/MessageHandler.html">TaskJuggler::MessageHandler</a></li>
295
+
296
+ <li><a href="../TaskJuggler/Navigator.html">TaskJuggler::Navigator</a></li>
297
+
298
+ <li><a href="../TaskJuggler/NavigatorElement.html">TaskJuggler::NavigatorElement</a></li>
299
+
300
+ <li><a href="../TaskJuggler/NikuProject.html">TaskJuggler::NikuProject</a></li>
301
+
302
+ <li><a href="../TaskJuggler/NikuReport.html">TaskJuggler::NikuReport</a></li>
303
+
304
+ <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
305
+
306
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
307
+
308
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
309
+
310
+ <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
311
+
312
+ <li><a href="../TaskJuggler/ProcessIntercomIface.html">TaskJuggler::ProcessIntercomIface</a></li>
313
+
314
+ <li><a href="../TaskJuggler/Project.html">TaskJuggler::Project</a></li>
315
+
316
+ <li><a href="../TaskJuggler/ProjectBroker.html">TaskJuggler::ProjectBroker</a></li>
317
+
318
+ <li><a href="../TaskJuggler/ProjectBrokerIface.html">TaskJuggler::ProjectBrokerIface</a></li>
319
+
320
+ <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
321
+
322
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
323
+
324
+ <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
325
+
326
+ <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
327
+
328
+ <li><a href="../TaskJuggler/ProjectServerIface.html">TaskJuggler::ProjectServerIface</a></li>
329
+
330
+ <li><a href="../TaskJuggler/PropertyAttribute.html">TaskJuggler::PropertyAttribute</a></li>
331
+
332
+ <li><a href="../TaskJuggler/PropertyList.html">TaskJuggler::PropertyList</a></li>
333
+
334
+ <li><a href="../TaskJuggler/PropertySet.html">TaskJuggler::PropertySet</a></li>
335
+
336
+ <li><a href="../TaskJuggler/PropertyTreeNode.html">TaskJuggler::PropertyTreeNode</a></li>
337
+
338
+ <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
339
+
340
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
341
+
342
+ <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
343
+
344
+ <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
345
+
346
+ <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
347
+
348
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
349
+
350
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
351
+
352
+ <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
353
+
354
+ <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
355
+
356
+ <li><a href="../TaskJuggler/ReferenceAttribute.html">TaskJuggler::ReferenceAttribute</a></li>
357
+
358
+ <li><a href="../TaskJuggler/Report.html">TaskJuggler::Report</a></li>
359
+
360
+ <li><a href="../TaskJuggler/ReportBase.html">TaskJuggler::ReportBase</a></li>
361
+
362
+ <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
363
+
364
+ <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
365
+
366
+ <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
367
+
368
+ <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
369
+
370
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
371
+
372
+ <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
373
+
374
+ <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
375
+
376
+ <li><a href="../TaskJuggler/ReportTableColumn.html">TaskJuggler::ReportTableColumn</a></li>
377
+
378
+ <li><a href="../TaskJuggler/ReportTableLegend.html">TaskJuggler::ReportTableLegend</a></li>
379
+
380
+ <li><a href="../TaskJuggler/ReportTableLine.html">TaskJuggler::ReportTableLine</a></li>
381
+
382
+ <li><a href="../TaskJuggler/Resource.html">TaskJuggler::Resource</a></li>
383
+
384
+ <li><a href="../TaskJuggler/ResourceListAttribute.html">TaskJuggler::ResourceListAttribute</a></li>
385
+
386
+ <li><a href="../TaskJuggler/ResourceListRE.html">TaskJuggler::ResourceListRE</a></li>
387
+
388
+ <li><a href="../TaskJuggler/ResourceScenario.html">TaskJuggler::ResourceScenario</a></li>
389
+
390
+ <li><a href="../TaskJuggler/RichText.html">TaskJuggler::RichText</a></li>
391
+
392
+ <li><a href="../TaskJuggler/RichTextAttribute.html">TaskJuggler::RichTextAttribute</a></li>
393
+
394
+ <li><a href="../TaskJuggler/RichTextDocument.html">TaskJuggler::RichTextDocument</a></li>
395
+
396
+ <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
397
+
398
+ <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
399
+
400
+ <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
401
+
402
+ <li><a href="../TaskJuggler/RichTextImage.html">TaskJuggler::RichTextImage</a></li>
403
+
404
+ <li><a href="../TaskJuggler/RichTextIntermediate.html">TaskJuggler::RichTextIntermediate</a></li>
405
+
406
+ <li><a href="../TaskJuggler/RichTextParser.html">TaskJuggler::RichTextParser</a></li>
407
+
408
+ <li><a href="../TaskJuggler/RichTextScanner.html">TaskJuggler::RichTextScanner</a></li>
409
+
410
+ <li><a href="../TaskJuggler/RichTextSnip.html">TaskJuggler::RichTextSnip</a></li>
411
+
412
+ <li><a href="../TaskJuggler/RichTextSyntaxRules.html">TaskJuggler::RichTextSyntaxRules</a></li>
413
+
414
+ <li><a href="../TaskJuggler/Scenario.html">TaskJuggler::Scenario</a></li>
415
+
416
+ <li><a href="../TaskJuggler/ScenarioData.html">TaskJuggler::ScenarioData</a></li>
417
+
418
+ <li><a href="../TaskJuggler/ScenarioListAttribute.html">TaskJuggler::ScenarioListAttribute</a></li>
419
+
420
+ <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
421
+
422
+ <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
423
+
424
+ <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
425
+
426
+ <li><a href="../TaskJuggler/SheetSender.html">TaskJuggler::SheetSender</a></li>
427
+
428
+ <li><a href="../TaskJuggler/Shift.html">TaskJuggler::Shift</a></li>
429
+
430
+ <li><a href="../TaskJuggler/ShiftAssignment.html">TaskJuggler::ShiftAssignment</a></li>
431
+
432
+ <li><a href="../TaskJuggler/ShiftAssignments.html">TaskJuggler::ShiftAssignments</a></li>
433
+
434
+ <li><a href="../TaskJuggler/ShiftAssignmentsAttribute.html">TaskJuggler::ShiftAssignmentsAttribute</a></li>
435
+
436
+ <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
437
+
438
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
439
+
440
+ <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
441
+
442
+ <li><a href="../TaskJuggler/StatusSheetReceiver.html">TaskJuggler::StatusSheetReceiver</a></li>
443
+
444
+ <li><a href="../TaskJuggler/StatusSheetReport.html">TaskJuggler::StatusSheetReport</a></li>
445
+
446
+ <li><a href="../TaskJuggler/StatusSheetSender.html">TaskJuggler::StatusSheetSender</a></li>
447
+
448
+ <li><a href="../TaskJuggler/StdIoWrapper.html">TaskJuggler::StdIoWrapper</a></li>
449
+
450
+ <li><a href="../TaskJuggler/StringAttribute.html">TaskJuggler::StringAttribute</a></li>
451
+
452
+ <li><a href="../TaskJuggler/SymbolAttribute.html">TaskJuggler::SymbolAttribute</a></li>
453
+
454
+ <li><a href="../TaskJuggler/SyntaxReference.html">TaskJuggler::SyntaxReference</a></li>
455
+
456
+ <li><a href="../TaskJuggler/TOCEntry.html">TaskJuggler::TOCEntry</a></li>
457
+
458
+ <li><a href="../TaskJuggler/TSResourceRecord.html">TaskJuggler::TSResourceRecord</a></li>
459
+
460
+ <li><a href="../TaskJuggler/TSTaskRecord.html">TaskJuggler::TSTaskRecord</a></li>
461
+
462
+ <li><a href="../TaskJuggler/TableColumnDefinition.html">TaskJuggler::TableColumnDefinition</a></li>
463
+
464
+ <li><a href="../TaskJuggler/TableOfContents.html">TaskJuggler::TableOfContents</a></li>
465
+
466
+ <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
467
+
468
+ <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
469
+
470
+ <li><a href="../TaskJuggler/TaskDepListAttribute.html">TaskJuggler::TaskDepListAttribute</a></li>
471
+
472
+ <li><a href="../TaskJuggler/TaskDependency.html">TaskJuggler::TaskDependency</a></li>
473
+
474
+ <li><a href="../TaskJuggler/TaskListAttribute.html">TaskJuggler::TaskListAttribute</a></li>
475
+
476
+ <li><a href="../TaskJuggler/TaskListRE.html">TaskJuggler::TaskListRE</a></li>
477
+
478
+ <li><a href="../TaskJuggler/TaskScenario.html">TaskJuggler::TaskScenario</a></li>
479
+
480
+ <li><a href="../TaskJuggler/TernarySearchTree.html">TaskJuggler::TernarySearchTree</a></li>
481
+
482
+ <li><a href="../TaskJuggler/TextFormatter.html">TaskJuggler::TextFormatter</a></li>
483
+
484
+ <li><a href="../TaskJuggler/TextParser.html">TaskJuggler::TextParser</a></li>
485
+
486
+ <li><a href="../TaskJuggler/TextParser/Macro.html">TaskJuggler::TextParser::Macro</a></li>
487
+
488
+ <li><a href="../TaskJuggler/TextParser/MacroTable.html">TaskJuggler::TextParser::MacroTable</a></li>
489
+
490
+ <li><a href="../TaskJuggler/TextParser/Pattern.html">TaskJuggler::TextParser::Pattern</a></li>
491
+
492
+ <li><a href="../TaskJuggler/TextParser/Rule.html">TaskJuggler::TextParser::Rule</a></li>
493
+
494
+ <li><a href="../TaskJuggler/TextParser/Scanner.html">TaskJuggler::TextParser::Scanner</a></li>
495
+
496
+ <li><a href="../TaskJuggler/TextParser/Scanner/BufferStreamHandle.html">TaskJuggler::TextParser::Scanner::BufferStreamHandle</a></li>
497
+
498
+ <li><a href="../TaskJuggler/TextParser/Scanner/FileStreamHandle.html">TaskJuggler::TextParser::Scanner::FileStreamHandle</a></li>
499
+
500
+ <li><a href="../TaskJuggler/TextParser/Scanner/MacroStackEntry.html">TaskJuggler::TextParser::Scanner::MacroStackEntry</a></li>
501
+
502
+ <li><a href="../TaskJuggler/TextParser/Scanner/StreamHandle.html">TaskJuggler::TextParser::Scanner::StreamHandle</a></li>
503
+
504
+ <li><a href="../TaskJuggler/TextParser/SourceFileInfo.html">TaskJuggler::TextParser::SourceFileInfo</a></li>
505
+
506
+ <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
507
+
508
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
509
+
510
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
511
+
512
+ <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
513
+
514
+ <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
515
+
516
+ <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
517
+
518
+ <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
519
+
520
+ <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
521
+
522
+ <li><a href="../TaskJuggler/TimeSheetRecord.html">TaskJuggler::TimeSheetRecord</a></li>
523
+
524
+ <li><a href="../TaskJuggler/TimeSheetReport.html">TaskJuggler::TimeSheetReport</a></li>
525
+
526
+ <li><a href="../TaskJuggler/TimeSheetSender.html">TaskJuggler::TimeSheetSender</a></li>
527
+
528
+ <li><a href="../TaskJuggler/TimeSheetSummary.html">TaskJuggler::TimeSheetSummary</a></li>
529
+
530
+ <li><a href="../TaskJuggler/TimeSheets.html">TaskJuggler::TimeSheets</a></li>
531
+
532
+ <li><a href="../TaskJuggler/Tj3.html">TaskJuggler::Tj3</a></li>
533
+
534
+ <li><a href="../TaskJuggler/Tj3AppBase.html">TaskJuggler::Tj3AppBase</a></li>
535
+
536
+ <li><a href="../TaskJuggler/Tj3Client.html">TaskJuggler::Tj3Client</a></li>
537
+
538
+ <li><a href="../TaskJuggler/Tj3Daemon.html">TaskJuggler::Tj3Daemon</a></li>
539
+
540
+ <li><a href="../TaskJuggler/Tj3Man.html">TaskJuggler::Tj3Man</a></li>
541
+
542
+ <li><a href="../TaskJuggler/Tj3SheetAppBase.html">TaskJuggler::Tj3SheetAppBase</a></li>
543
+
544
+ <li><a href="../TaskJuggler/Tj3SsReceiver.html">TaskJuggler::Tj3SsReceiver</a></li>
545
+
546
+ <li><a href="../TaskJuggler/Tj3SsSender.html">TaskJuggler::Tj3SsSender</a></li>
547
+
548
+ <li><a href="../TaskJuggler/Tj3TsReceiver.html">TaskJuggler::Tj3TsReceiver</a></li>
549
+
550
+ <li><a href="../TaskJuggler/Tj3TsSender.html">TaskJuggler::Tj3TsSender</a></li>
551
+
552
+ <li><a href="../TaskJuggler/Tj3TsSummary.html">TaskJuggler::Tj3TsSummary</a></li>
553
+
554
+ <li><a href="../TaskJuggler/TjException.html">TaskJuggler::TjException</a></li>
555
+
556
+ <li><a href="../TaskJuggler/TjRuntimeError.html">TaskJuggler::TjRuntimeError</a></li>
557
+
558
+ <li><a href="../TaskJuggler/TjTime.html">TaskJuggler::TjTime</a></li>
559
+
560
+ <li><a href="../TaskJuggler/TjpExample.html">TaskJuggler::TjpExample</a></li>
561
+
562
+ <li><a href="../TaskJuggler/TjpExportRE.html">TaskJuggler::TjpExportRE</a></li>
563
+
564
+ <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
565
+
566
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
567
+
568
+ <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
569
+
570
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
571
+
572
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
573
+
574
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
575
+
576
+ <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
577
+
578
+ <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
579
+
580
+ <li><a href="../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li>
581
+
582
+ <li><a href="../TaskJuggler/XMLComment.html">TaskJuggler::XMLComment</a></li>
583
+
584
+ <li><a href="../TaskJuggler/XMLDocument.html">TaskJuggler::XMLDocument</a></li>
585
+
586
+ <li><a href="../TaskJuggler/XMLElement.html">TaskJuggler::XMLElement</a></li>
587
+
588
+ <li><a href="../TaskJuggler/XMLNamedText.html">TaskJuggler::XMLNamedText</a></li>
589
+
590
+ <li><a href="../TaskJuggler/XMLText.html">TaskJuggler::XMLText</a></li>
591
+
592
+ <li><a href="../Diff.html">Diff</a></li>
593
+
594
+ <li><a href="../Diff/Hunk.html">Diff::Hunk</a></li>
595
+
596
+ <li><a href="../AppConfig.html">AppConfig</a></li>
597
+
598
+ <li><a href="../Diffable.html">Diffable</a></li>
599
+
600
+ <li><a href="../DiffableString.html">DiffableString</a></li>
601
+
602
+ <li><a href="../Object.html">Object</a></li>
603
+
604
+ <li><a href="../RuntimeConfig.html">RuntimeConfig</a></li>
605
+
606
+ <li><a href="../String.html">String</a></li>
607
+
608
+ </ul>
609
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
610
+ </div>
611
+
612
+
613
+ </div>
614
+ </div>
615
+
616
+ <div id="documentation">
617
+ <h1 class="class">TaskJuggler::Query</h1>
618
+
619
+ <div id="description">
620
+ <p>
621
+ A query can be used to retrieve any property attribute after the scheduling
622
+ run has been completed. It is possible to make a <a
623
+ href="Query.html">Query</a> before the scheduling run has been completed,
624
+ but it only produces good results for static attributes. And for such
625
+ queries, the <a
626
+ href="PropertyTreeNode.html#method-i-get">PropertyTreeNode.get</a> and []
627
+ functions are a lot more efficient.
628
+ </p>
629
+ <p>
630
+ When constructing a <a href="Query.html">Query</a>, a set of variables need
631
+ to be set that is sufficient enough to identify a unique attribute. Some
632
+ attribute are computed dynamically and further variables such as a start
633
+ and end time will be incorporated into the result computation.
634
+ </p>
635
+ <p>
636
+ The result is returned as <a href="../String.html">String</a> (<a
637
+ href="Query.html#method-i-result">Query#result</a>), in numerical form
638
+ (Query#numericalResult) if available as number, and as an entity that can
639
+ be used for sorting (Query#sortableResult). To get the result, <a
640
+ href="Query.html#method-i-process">Query#process</a> needs to be called. In
641
+ case an error occured, Query#ok is set to false and Query#errorMessage
642
+ contains an error message.
643
+ </p>
644
+
645
+ </div>
646
+
647
+ <!-- Constants -->
648
+
649
+
650
+ <!-- Attributes -->
651
+
652
+ <div id="attribute-method-details" class="method-section section">
653
+ <h3 class="section-header">Attributes</h3>
654
+
655
+
656
+ <div id="ok-attribute-method" class="method-detail">
657
+ <a name="ok"></a>
658
+
659
+ <a name="ok="></a>
660
+
661
+ <div class="method-heading attribute-method-heading">
662
+ <span class="method-name">ok</span><span
663
+ class="attribute-access-type">[RW]</span>
664
+ </div>
665
+
666
+ <div class="method-description">
667
+
668
+
669
+
670
+ </div>
671
+ </div>
672
+
673
+ <div id="error-essage-attribute-method" class="method-detail">
674
+ <a name="errorMessage"></a>
675
+
676
+ <a name="errorMessage="></a>
677
+
678
+ <div class="method-heading attribute-method-heading">
679
+ <span class="method-name">errorMessage</span><span
680
+ class="attribute-access-type">[RW]</span>
681
+ </div>
682
+
683
+ <div class="method-description">
684
+
685
+
686
+
687
+ </div>
688
+ </div>
689
+
690
+ <div id="end-attribute-method" class="method-detail">
691
+ <a name="end"></a>
692
+
693
+ <div class="method-heading attribute-method-heading">
694
+ <span class="method-name">end</span><span
695
+ class="attribute-access-type">[R]</span>
696
+ </div>
697
+
698
+ <div class="method-description">
699
+
700
+
701
+
702
+ </div>
703
+ </div>
704
+
705
+ <div id="end-dx-attribute-method" class="method-detail">
706
+ <a name="endIdx"></a>
707
+
708
+ <div class="method-heading attribute-method-heading">
709
+ <span class="method-name">endIdx</span><span
710
+ class="attribute-access-type">[R]</span>
711
+ </div>
712
+
713
+ <div class="method-description">
714
+
715
+
716
+
717
+ </div>
718
+ </div>
719
+
720
+ <div id="start-attribute-method" class="method-detail">
721
+ <a name="start"></a>
722
+
723
+ <div class="method-heading attribute-method-heading">
724
+ <span class="method-name">start</span><span
725
+ class="attribute-access-type">[R]</span>
726
+ </div>
727
+
728
+ <div class="method-description">
729
+
730
+
731
+
732
+ </div>
733
+ </div>
734
+
735
+ <div id="start-dx-attribute-method" class="method-detail">
736
+ <a name="startIdx"></a>
737
+
738
+ <div class="method-heading attribute-method-heading">
739
+ <span class="method-name">startIdx</span><span
740
+ class="attribute-access-type">[R]</span>
741
+ </div>
742
+
743
+ <div class="method-description">
744
+
745
+
746
+
747
+ </div>
748
+ </div>
749
+
750
+ <div id="sortable-attribute-method" class="method-detail">
751
+ <a name="sortable"></a>
752
+
753
+ <a name="sortable="></a>
754
+
755
+ <div class="method-heading attribute-method-heading">
756
+ <span class="method-name">sortable</span><span
757
+ class="attribute-access-type">[W]</span>
758
+ </div>
759
+
760
+ <div class="method-description">
761
+
762
+
763
+
764
+ </div>
765
+ </div>
766
+
767
+ <div id="numerical-attribute-method" class="method-detail">
768
+ <a name="numerical"></a>
769
+
770
+ <a name="numerical="></a>
771
+
772
+ <div class="method-heading attribute-method-heading">
773
+ <span class="method-name">numerical</span><span
774
+ class="attribute-access-type">[W]</span>
775
+ </div>
776
+
777
+ <div class="method-description">
778
+
779
+
780
+
781
+ </div>
782
+ </div>
783
+
784
+ <div id="string-attribute-method" class="method-detail">
785
+ <a name="string"></a>
786
+
787
+ <a name="string="></a>
788
+
789
+ <div class="method-heading attribute-method-heading">
790
+ <span class="method-name">string</span><span
791
+ class="attribute-access-type">[W]</span>
792
+ </div>
793
+
794
+ <div class="method-description">
795
+
796
+
797
+
798
+ </div>
799
+ </div>
800
+
801
+ <div id="rti-attribute-method" class="method-detail">
802
+ <a name="rti"></a>
803
+
804
+ <a name="rti="></a>
805
+
806
+ <div class="method-heading attribute-method-heading">
807
+ <span class="method-name">rti</span><span
808
+ class="attribute-access-type">[W]</span>
809
+ </div>
810
+
811
+ <div class="method-description">
812
+
813
+
814
+
815
+ </div>
816
+ </div>
817
+
818
+ </div>
819
+
820
+
821
+ <!-- Methods -->
822
+
823
+ <div id="public-class-method-details" class="method-section section">
824
+ <h3 class="section-header">Public Class Methods</h3>
825
+
826
+
827
+ <div id="new-method" class="method-detail ">
828
+ <a name="method-c-new"></a>
829
+
830
+ <div class="method-heading">
831
+
832
+ <span class="method-name">new</span><span
833
+ class="method-args">(parameters = { })</span>
834
+ <span class="method-click-advice">click to toggle source</span>
835
+
836
+ </div>
837
+
838
+ <div class="method-description">
839
+
840
+ <p>
841
+ Create a new <a href="Query.html">Query</a> object. The <em>parameters</em>
842
+ need to be sufficent to uniquely identify an attribute.
843
+ </p>
844
+
845
+
846
+
847
+ <div class="method-source-code"
848
+ id="new-source">
849
+ <pre>
850
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 51</span>
851
+ 51: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">parameters</span> = { })
852
+ 52: <span class="ruby-ivar">@selfContained</span> = <span class="ruby-keyword kw">false</span>
853
+ 53: <span class="ruby-identifier">@@ps</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
854
+ 54: <span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">p</span>, <span class="ruby-identifier">parameters</span>[<span class="ruby-identifier">p</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">parameters</span>[<span class="ruby-identifier">p</span>] <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>)
855
+ 55: <span class="ruby-keyword kw">end</span>
856
+ 56:
857
+ 57: <span class="ruby-comment cmt"># instance_variable_set does not call writer functions. So we need to</span>
858
+ 58: <span class="ruby-comment cmt"># handle @start, @end, @startIdx and @endIdx separately.</span>
859
+ 59: <span class="ruby-node">%( end endIdx start startIdx )</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
860
+ 60: <span class="ruby-identifier">send</span>(<span class="ruby-identifier">p</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'='</span>, <span class="ruby-identifier">parameters</span>[<span class="ruby-identifier">p</span>]) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parameters</span>[<span class="ruby-identifier">p</span>]
861
+ 61: <span class="ruby-keyword kw">end</span>
862
+ 62: <span class="ruby-comment cmt"># The custom data hash can be filled with results to be returned for</span>
863
+ 63: <span class="ruby-comment cmt"># special attributes that are not directly property attributes or</span>
864
+ 64: <span class="ruby-comment cmt"># computed attributes.</span>
865
+ 65: <span class="ruby-ivar">@customData</span> = {}
866
+ 66:
867
+ 67: <span class="ruby-identifier">reset</span>
868
+ 68: <span class="ruby-keyword kw">end</span></pre>
869
+ </div>
870
+
871
+ </div>
872
+
873
+
874
+
875
+
876
+ </div>
877
+
878
+
879
+ </div>
880
+
881
+ <div id="public-instance-method-details" class="method-section section">
882
+ <h3 class="section-header">Public Instance Methods</h3>
883
+
884
+
885
+ <div id="assign-ist-method" class="method-detail ">
886
+ <a name="method-i-assignList"></a>
887
+
888
+ <div class="method-heading">
889
+
890
+ <span class="method-name">assignList</span><span
891
+ class="method-args">(listItems)</span>
892
+ <span class="method-click-advice">click to toggle source</span>
893
+
894
+ </div>
895
+
896
+ <div class="method-description">
897
+
898
+ <p>
899
+ Converts the <a href="../String.html">String</a> items in
900
+ <em>listItems</em> into a <a
901
+ href="RichTextIntermediate.html">RichTextIntermediate</a> objects and
902
+ assigns it as result of the query.
903
+ </p>
904
+
905
+
906
+
907
+ <div class="method-source-code"
908
+ id="assign-ist-source">
909
+ <pre>
910
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 213</span>
911
+ 213: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assignList</span>(<span class="ruby-identifier">listItems</span>)
912
+ 214: <span class="ruby-identifier">list</span> = <span class="ruby-value str">''</span>
913
+ 215: <span class="ruby-identifier">listItems</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
914
+ 216: <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@listType</span>
915
+ 217: <span class="ruby-keyword kw">when</span> <span class="ruby-keyword kw">nil</span>, <span class="ruby-value">:comma</span>
916
+ 218: <span class="ruby-identifier">list</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">list</span>.<span class="ruby-identifier">empty?</span>
917
+ 219: <span class="ruby-identifier">list</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">item</span>
918
+ 220: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:bullets</span>
919
+ 221: <span class="ruby-identifier">list</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;* #{item}\n&quot;</span>
920
+ 222: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:numbered</span>
921
+ 223: <span class="ruby-identifier">list</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;# #{item}\n&quot;</span>
922
+ 224: <span class="ruby-keyword kw">end</span>
923
+ 225: <span class="ruby-keyword kw">end</span>
924
+ 226: <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">list</span>
925
+ 227: <span class="ruby-identifier">rText</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">list</span>)
926
+ 228: <span class="ruby-ivar">@rti</span> = <span class="ruby-identifier">rText</span>.<span class="ruby-identifier">generateIntermediateFormat</span>
927
+ 229: <span class="ruby-keyword kw">end</span></pre>
928
+ </div>
929
+
930
+ </div>
931
+
932
+
933
+
934
+
935
+ </div>
936
+
937
+
938
+ <div id="end-method" class="method-detail ">
939
+ <a name="method-i-end"></a>
940
+
941
+ <div class="method-heading">
942
+
943
+ <span class="method-name">end</span><span
944
+ class="method-args">(=(date))</span>
945
+ <span class="method-click-advice">click to toggle source</span>
946
+
947
+ </div>
948
+
949
+ <div class="method-description">
950
+
951
+
952
+
953
+
954
+
955
+ <div class="method-source-code"
956
+ id="end-source">
957
+ <pre>
958
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 91</span>
959
+ 91: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">end</span>=(<span class="ruby-identifier">date</span>)
960
+ 92: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
961
+ 93: <span class="ruby-ivar">@end</span> = <span class="ruby-identifier">date</span>
962
+ 94: <span class="ruby-keyword kw">else</span>
963
+ 95: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{date.class}&quot;</span>
964
+ 96: <span class="ruby-keyword kw">end</span>
965
+ 97: <span class="ruby-ivar">@endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@end</span>)
966
+ 98: <span class="ruby-keyword kw">end</span></pre>
967
+ </div>
968
+
969
+ </div>
970
+
971
+
972
+
973
+
974
+ </div>
975
+
976
+
977
+ <div id="end-dx--method" class="method-detail ">
978
+ <a name="method-i-endIdx%3D"></a>
979
+
980
+ <div class="method-heading">
981
+
982
+ <span class="method-name">endIdx=</span><span
983
+ class="method-args">(idx)</span>
984
+ <span class="method-click-advice">click to toggle source</span>
985
+
986
+ </div>
987
+
988
+ <div class="method-description">
989
+
990
+
991
+
992
+
993
+
994
+ <div class="method-source-code"
995
+ id="end-dx--source">
996
+ <pre>
997
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 100</span>
998
+ 100: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endIdx=</span>(<span class="ruby-identifier">idx</span>)
999
+ 101: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">idx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
1000
+ 102: <span class="ruby-ivar">@endIdx</span> = <span class="ruby-identifier">idx</span>
1001
+ 103: <span class="ruby-ivar">@end</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1002
+ 104: <span class="ruby-keyword kw">else</span>
1003
+ 105: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{idx.class}&quot;</span>
1004
+ 106: <span class="ruby-keyword kw">end</span>
1005
+ 107: <span class="ruby-keyword kw">end</span></pre>
1006
+ </div>
1007
+
1008
+ </div>
1009
+
1010
+
1011
+
1012
+
1013
+ </div>
1014
+
1015
+
1016
+ <div id="process-method" class="method-detail ">
1017
+ <a name="method-i-process"></a>
1018
+
1019
+ <div class="method-heading">
1020
+
1021
+ <span class="method-name">process</span><span
1022
+ class="method-args">()</span>
1023
+ <span class="method-click-advice">click to toggle source</span>
1024
+
1025
+ </div>
1026
+
1027
+ <div class="method-description">
1028
+
1029
+ <p>
1030
+ This method tries to resolve the query and return a result. In case it
1031
+ finds an attribute that matches the query, it returns true; false
1032
+ otherwise. The actual result data is stored in the <a
1033
+ href="Query.html">Query</a> object. It can then be retrieved by the caller
1034
+ with the methods <a href="Query.html#method-i-to_s">to_s</a>(), <a
1035
+ href="Query.html#method-i-to_num">to_num</a>(), <a
1036
+ href="Query.html#method-i-to_sort">to_sort</a>() and result().
1037
+ </p>
1038
+
1039
+
1040
+
1041
+ <div class="method-source-code"
1042
+ id="process-source">
1043
+ <pre>
1044
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 121</span>
1045
+ 121: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>
1046
+ 122: <span class="ruby-identifier">reset</span>
1047
+ 123: <span class="ruby-keyword kw">begin</span>
1048
+ 124: <span class="ruby-comment cmt"># Resolve property reference from property ID.</span>
1049
+ 125: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@propertyId</span>.<span class="ruby-identifier">nil?</span>
1050
+ 126: <span class="ruby-ivar">@property</span> = <span class="ruby-identifier">resolvePropertyId</span>(<span class="ruby-ivar">@propertyType</span>, <span class="ruby-ivar">@propertyId</span>)
1051
+ 127: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@property</span>
1052
+ 128: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-node">&quot;Unknown property #{@propertyId} queried&quot;</span>
1053
+ 129: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">false</span>
1054
+ 130: <span class="ruby-keyword kw">end</span>
1055
+ 131: <span class="ruby-keyword kw">end</span>
1056
+ 132:
1057
+ 133: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@property</span>
1058
+ 134: <span class="ruby-comment cmt"># No property was provided. We are looking for a project attribute.</span>
1059
+ 135: <span class="ruby-identifier">supportedAttrs</span> = <span class="ruby-node">%( copyright currency end journal name now projectid
1060
+ 136: start version )</span>
1061
+ 137: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">supportedAttrs</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@attributeId</span>)
1062
+ 138: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-node">&quot;Unsupported project attribute '#{@attributeId}'&quot;</span>
1063
+ 139: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">false</span>
1064
+ 140: <span class="ruby-keyword kw">end</span>
1065
+ 141: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">attributeId</span>)
1066
+ 142: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">attributeId</span>, <span class="ruby-keyword kw">self</span>)
1067
+ 143: <span class="ruby-keyword kw">else</span>
1068
+ 144: <span class="ruby-identifier">attr</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-ivar">@attributeId</span>]
1069
+ 145: <span class="ruby-keyword kw">end</span>
1070
+ 146: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1071
+ 147: <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@numerical</span> = <span class="ruby-identifier">attr</span>
1072
+ 148: <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">attr</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-ivar">@timeFormat</span>)
1073
+ 149: <span class="ruby-keyword kw">else</span>
1074
+ 150: <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">attr</span>
1075
+ 151: <span class="ruby-keyword kw">end</span>
1076
+ 152: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">true</span>
1077
+ 153: <span class="ruby-keyword kw">end</span>
1078
+ 154:
1079
+ 155: <span class="ruby-comment cmt"># Same for the scope property.</span>
1080
+ 156: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@scopeProperty</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@scopePropertyId</span>.<span class="ruby-identifier">nil?</span>
1081
+ 157: <span class="ruby-ivar">@scopeProperty</span> = <span class="ruby-identifier">resolvePropertyId</span>(<span class="ruby-ivar">@scopePropertyType</span>,
1082
+ 158: <span class="ruby-ivar">@scopePropertyId</span>)
1083
+ 159: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scopeProperty</span>
1084
+ 160: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-node">&quot;Unknown scope property #{@scopePropertyId} queried&quot;</span>
1085
+ 161: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">false</span>
1086
+ 162: <span class="ruby-keyword kw">end</span>
1087
+ 163: <span class="ruby-keyword kw">end</span>
1088
+ 164: <span class="ruby-comment cmt"># Make sure the have a reference to the project.</span>
1089
+ 165: <span class="ruby-ivar">@project</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">project</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@project</span>
1090
+ 166:
1091
+ 167: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scenario</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@scenarioIdx</span>
1092
+ 168: <span class="ruby-ivar">@scenarioIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-ivar">@scenario</span>)
1093
+ 169: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scenarioIdx</span>
1094
+ 170: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Query cannot resolve scenario '#{@scenario}'&quot;</span>
1095
+ 171: <span class="ruby-keyword kw">end</span>
1096
+ 172: <span class="ruby-keyword kw">end</span>
1097
+ 173:
1098
+ 174: <span class="ruby-identifier">queryMethodName</span> = <span class="ruby-value str">'query_'</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@attributeId</span>
1099
+ 175: <span class="ruby-comment cmt"># First we check for non-scenario-specific query functions.</span>
1100
+ 176: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">data</span> = <span class="ruby-ivar">@customData</span>[<span class="ruby-ivar">@attributeId</span>])
1101
+ 177: <span class="ruby-ivar">@sortable</span> = <span class="ruby-identifier">data</span>[<span class="ruby-value">:sortable</span>]
1102
+ 178: <span class="ruby-ivar">@numerical</span> = <span class="ruby-identifier">data</span>[<span class="ruby-value">:numerical</span>]
1103
+ 179: <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">data</span>[<span class="ruby-value">:string</span>]
1104
+ 180: <span class="ruby-ivar">@rti</span> = <span class="ruby-identifier">data</span>[<span class="ruby-value">:rti</span>]
1105
+ 181: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">queryMethodName</span>)
1106
+ 182: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">queryMethodName</span>, <span class="ruby-keyword kw">self</span>)
1107
+ 183: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@scenarioIdx</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">data</span> <span class="ruby-operator">&amp;&amp;</span>
1108
+ 184: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">data</span>[<span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">queryMethodName</span>)
1109
+ 185: <span class="ruby-comment cmt"># Then we check for scenario-specific ones via the @data member.</span>
1110
+ 186: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">queryMethodName</span>, <span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-keyword kw">self</span>)
1111
+ 187: <span class="ruby-keyword kw">else</span>
1112
+ 188: <span class="ruby-comment cmt"># The result is a BaseAttribute</span>
1113
+ 189: <span class="ruby-keyword kw">begin</span>
1114
+ 190: <span class="ruby-comment cmt"># The user may also provide a scenario index for</span>
1115
+ 191: <span class="ruby-comment cmt"># non-scenario-specific values. We need to check if the attribute</span>
1116
+ 192: <span class="ruby-comment cmt"># is really scenario specific or not because</span>
1117
+ 193: <span class="ruby-comment cmt"># PropertyTreeNode::getAttribute can only handle an index for</span>
1118
+ 194: <span class="ruby-comment cmt"># scenario-specific attributs.</span>
1119
+ 195: <span class="ruby-identifier">aType</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">attributeDefinition</span>(<span class="ruby-ivar">@attributeId</span>)
1120
+ 196: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">aType</span>
1121
+ 197: <span class="ruby-identifier">scIdx</span> = <span class="ruby-identifier">aType</span>.<span class="ruby-identifier">scenarioSpecific</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@scenarioIdx</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
1122
+ 198: <span class="ruby-ivar">@attr</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">getAttribute</span>(<span class="ruby-ivar">@attributeId</span>, <span class="ruby-identifier">scIdx</span>)
1123
+ 199: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">ArgumentError</span>
1124
+ 200: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-node">&quot;Unknown attribute #{@attributeId} queried&quot;</span>
1125
+ 201: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">false</span>
1126
+ 202: <span class="ruby-keyword kw">end</span>
1127
+ 203: <span class="ruby-keyword kw">end</span>
1128
+ 204: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1129
+ 205: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">message</span>
1130
+ 206: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">false</span>
1131
+ 207: <span class="ruby-keyword kw">end</span>
1132
+ 208: <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">true</span>
1133
+ 209: <span class="ruby-keyword kw">end</span></pre>
1134
+ </div>
1135
+
1136
+ </div>
1137
+
1138
+
1139
+
1140
+
1141
+ </div>
1142
+
1143
+
1144
+ <div id="result-method" class="method-detail ">
1145
+ <a name="method-i-result"></a>
1146
+
1147
+ <div class="method-heading">
1148
+
1149
+ <span class="method-name">result</span><span
1150
+ class="method-args">()</span>
1151
+ <span class="method-click-advice">click to toggle source</span>
1152
+
1153
+ </div>
1154
+
1155
+ <div class="method-description">
1156
+
1157
+ <p>
1158
+ Return the result in the orginal form. It may be nil.
1159
+ </p>
1160
+
1161
+
1162
+
1163
+ <div class="method-source-code"
1164
+ id="result-source">
1165
+ <pre>
1166
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 256</span>
1167
+ 256: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result</span>
1168
+ 257: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attr</span>
1169
+ 258: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">ReferenceAttribute</span>)
1170
+ 259: <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span>[<span class="ruby-value">0</span>]
1171
+ 260: <span class="ruby-keyword kw">else</span>
1172
+ 261: <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span>
1173
+ 262: <span class="ruby-keyword kw">end</span>
1174
+ 263: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@numerical</span>
1175
+ 264: <span class="ruby-ivar">@numerical</span>
1176
+ 265: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@rti</span>
1177
+ 266: <span class="ruby-ivar">@rti</span>
1178
+ 267: <span class="ruby-keyword kw">else</span>
1179
+ 268: <span class="ruby-ivar">@string</span>
1180
+ 269: <span class="ruby-keyword kw">end</span>
1181
+ 270: <span class="ruby-keyword kw">end</span></pre>
1182
+ </div>
1183
+
1184
+ </div>
1185
+
1186
+
1187
+
1188
+
1189
+ </div>
1190
+
1191
+
1192
+ <div id="scale-uration-method" class="method-detail ">
1193
+ <a name="method-i-scaleDuration"></a>
1194
+
1195
+ <div class="method-heading">
1196
+
1197
+ <span class="method-name">scaleDuration</span><span
1198
+ class="method-args">(value)</span>
1199
+ <span class="method-click-advice">click to toggle source</span>
1200
+
1201
+ </div>
1202
+
1203
+ <div class="method-description">
1204
+
1205
+ <p>
1206
+ Convert a duration to the format specified by @loadUnit. <em>value</em> is
1207
+ the duration effort in days. The return value is the converted value with
1208
+ optional unit as a <a href="../String.html">String</a>.
1209
+ </p>
1210
+
1211
+
1212
+
1213
+ <div class="method-source-code"
1214
+ id="scale-uration-source">
1215
+ <pre>
1216
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 275</span>
1217
+ 275: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scaleDuration</span>(<span class="ruby-identifier">value</span>)
1218
+ 276: <span class="ruby-identifier">scaleValue</span>(<span class="ruby-identifier">value</span>, [ <span class="ruby-value">24</span> * <span class="ruby-value">60</span>, <span class="ruby-value">24</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-value">7</span>, <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-value">30.42</span>, <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-value">365</span> ])
1219
+ 277: <span class="ruby-keyword kw">end</span></pre>
1220
+ </div>
1221
+
1222
+ </div>
1223
+
1224
+
1225
+
1226
+
1227
+ </div>
1228
+
1229
+
1230
+ <div id="scale-oad-method" class="method-detail ">
1231
+ <a name="method-i-scaleLoad"></a>
1232
+
1233
+ <div class="method-heading">
1234
+
1235
+ <span class="method-name">scaleLoad</span><span
1236
+ class="method-args">(value)</span>
1237
+ <span class="method-click-advice">click to toggle source</span>
1238
+
1239
+ </div>
1240
+
1241
+ <div class="method-description">
1242
+
1243
+ <p>
1244
+ Convert a load or effort value to the format specified by @loadUnit.
1245
+ <em>work</em> is the effort in man days. The return value is the converted
1246
+ value with optional unit as a <a href="../String.html">String</a>.
1247
+ </p>
1248
+
1249
+
1250
+
1251
+ <div class="method-source-code"
1252
+ id="scale-oad-source">
1253
+ <pre>
1254
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 282</span>
1255
+ 282: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scaleLoad</span>(<span class="ruby-identifier">value</span>)
1256
+ 283: <span class="ruby-identifier">scaleValue</span>(<span class="ruby-identifier">value</span>, [ <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dailyWorkingHours</span> * <span class="ruby-value">60</span>,
1257
+ 284: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dailyWorkingHours</span>,
1258
+ 285: <span class="ruby-value">1.0</span>,
1259
+ 286: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">weeklyWorkingDays</span>,
1260
+ 287: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">monthlyWorkingDays</span>,
1261
+ 288: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">yearlyWorkingDays</span> ])
1262
+ 289: <span class="ruby-keyword kw">end</span></pre>
1263
+ </div>
1264
+
1265
+ </div>
1266
+
1267
+
1268
+
1269
+
1270
+ </div>
1271
+
1272
+
1273
+ <div id="set-ustom-ata-method" class="method-detail ">
1274
+ <a name="method-i-setCustomData"></a>
1275
+
1276
+ <div class="method-heading">
1277
+
1278
+ <span class="method-name">setCustomData</span><span
1279
+ class="method-args">(name, data)</span>
1280
+ <span class="method-click-advice">click to toggle source</span>
1281
+
1282
+ </div>
1283
+
1284
+ <div class="method-description">
1285
+
1286
+ <p>
1287
+ Set a custom data entry. <em>name</em> is the name of the pseudo attribute.
1288
+ <em>data</em> must be a Hash that contains the value for :numberical,
1289
+ :string, :sortable or :rti results.
1290
+ </p>
1291
+
1292
+
1293
+
1294
+ <div class="method-source-code"
1295
+ id="set-ustom-ata-source">
1296
+ <pre>
1297
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 112</span>
1298
+ 112: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setCustomData</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">data</span>)
1299
+ 113: <span class="ruby-ivar">@customData</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">data</span>
1300
+ 114: <span class="ruby-keyword kw">end</span></pre>
1301
+ </div>
1302
+
1303
+ </div>
1304
+
1305
+
1306
+
1307
+
1308
+ </div>
1309
+
1310
+
1311
+ <div id="start--method" class="method-detail ">
1312
+ <a name="method-i-start%3D"></a>
1313
+
1314
+ <div class="method-heading">
1315
+
1316
+ <span class="method-name">start=</span><span
1317
+ class="method-args">(date)</span>
1318
+ <span class="method-click-advice">click to toggle source</span>
1319
+
1320
+ </div>
1321
+
1322
+ <div class="method-description">
1323
+
1324
+ <p>
1325
+ We probably need the start and end dates as <a
1326
+ href="TjTime.html">TjTime</a> and <a href="Scoreboard.html">Scoreboard</a>
1327
+ index. We store both, but we need to assure they are always in sync.
1328
+ </p>
1329
+
1330
+
1331
+
1332
+ <div class="method-source-code"
1333
+ id="start--source">
1334
+ <pre>
1335
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 73</span>
1336
+ 73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start=</span>(<span class="ruby-identifier">date</span>)
1337
+ 74: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1338
+ 75: <span class="ruby-ivar">@start</span> = <span class="ruby-identifier">date</span>
1339
+ 76: <span class="ruby-keyword kw">else</span>
1340
+ 77: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{date.class}&quot;</span>
1341
+ 78: <span class="ruby-keyword kw">end</span>
1342
+ 79: <span class="ruby-ivar">@startIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-ivar">@start</span>)
1343
+ 80: <span class="ruby-keyword kw">end</span></pre>
1344
+ </div>
1345
+
1346
+ </div>
1347
+
1348
+
1349
+
1350
+
1351
+ </div>
1352
+
1353
+
1354
+ <div id="start-dx--method" class="method-detail ">
1355
+ <a name="method-i-startIdx%3D"></a>
1356
+
1357
+ <div class="method-heading">
1358
+
1359
+ <span class="method-name">startIdx=</span><span
1360
+ class="method-args">(idx)</span>
1361
+ <span class="method-click-advice">click to toggle source</span>
1362
+
1363
+ </div>
1364
+
1365
+ <div class="method-description">
1366
+
1367
+
1368
+
1369
+
1370
+
1371
+ <div class="method-source-code"
1372
+ id="start-dx--source">
1373
+ <pre>
1374
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 82</span>
1375
+ 82: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startIdx=</span>(<span class="ruby-identifier">idx</span>)
1376
+ 83: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">idx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
1377
+ 84: <span class="ruby-ivar">@startIdx</span> = <span class="ruby-identifier">idx</span>
1378
+ 85: <span class="ruby-ivar">@start</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1379
+ 86: <span class="ruby-keyword kw">else</span>
1380
+ 87: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{idx.class}&quot;</span>
1381
+ 88: <span class="ruby-keyword kw">end</span>
1382
+ 89: <span class="ruby-keyword kw">end</span></pre>
1383
+ </div>
1384
+
1385
+ </div>
1386
+
1387
+
1388
+
1389
+
1390
+ </div>
1391
+
1392
+
1393
+ <div id="to-num-method" class="method-detail ">
1394
+ <a name="method-i-to_num"></a>
1395
+
1396
+ <div class="method-heading">
1397
+
1398
+ <span class="method-name">to_num</span><span
1399
+ class="method-args">()</span>
1400
+ <span class="method-click-advice">click to toggle source</span>
1401
+
1402
+ </div>
1403
+
1404
+ <div class="method-description">
1405
+
1406
+ <p>
1407
+ Return the result of the <a href="Query.html">Query</a> as Fixnum or Float.
1408
+ The result may be nil.
1409
+ </p>
1410
+
1411
+
1412
+
1413
+ <div class="method-source-code"
1414
+ id="to-num-source">
1415
+ <pre>
1416
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 238</span>
1417
+ 238: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_num</span>
1418
+ 239: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_num</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@numerical</span>
1419
+ 240: <span class="ruby-keyword kw">end</span></pre>
1420
+ </div>
1421
+
1422
+ </div>
1423
+
1424
+
1425
+
1426
+
1427
+ </div>
1428
+
1429
+
1430
+ <div id="to-rti-method" class="method-detail ">
1431
+ <a name="method-i-to_rti"></a>
1432
+
1433
+ <div class="method-heading">
1434
+
1435
+ <span class="method-name">to_rti</span><span
1436
+ class="method-args">()</span>
1437
+ <span class="method-click-advice">click to toggle source</span>
1438
+
1439
+ </div>
1440
+
1441
+ <div class="method-description">
1442
+
1443
+ <p>
1444
+ Return the result as <a
1445
+ href="RichTextIntermediate.html">RichTextIntermediate</a> object. The
1446
+ result may be nil.
1447
+ </p>
1448
+
1449
+
1450
+
1451
+ <div class="method-source-code"
1452
+ id="to-rti-source">
1453
+ <pre>
1454
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 249</span>
1455
+ 249: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_rti</span>
1456
+ 250: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">RichTextAttribute</span>)
1457
+ 251:
1458
+ 252: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_rti</span>(<span class="ruby-keyword kw">self</span>) <span class="ruby-operator">:</span> <span class="ruby-ivar">@rti</span>
1459
+ 253: <span class="ruby-keyword kw">end</span></pre>
1460
+ </div>
1461
+
1462
+ </div>
1463
+
1464
+
1465
+
1466
+
1467
+ </div>
1468
+
1469
+
1470
+ <div id="to-s-method" class="method-detail ">
1471
+ <a name="method-i-to_s"></a>
1472
+
1473
+ <div class="method-heading">
1474
+
1475
+ <span class="method-name">to_s</span><span
1476
+ class="method-args">()</span>
1477
+ <span class="method-click-advice">click to toggle source</span>
1478
+
1479
+ </div>
1480
+
1481
+ <div class="method-description">
1482
+
1483
+ <p>
1484
+ Return the result of the <a href="Query.html">Query</a> as <a
1485
+ href="../String.html">String</a>. The result may be nil.
1486
+ </p>
1487
+
1488
+
1489
+
1490
+ <div class="method-source-code"
1491
+ id="to-s-source">
1492
+ <pre>
1493
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 232</span>
1494
+ 232: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1495
+ 233: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-keyword kw">self</span>) <span class="ruby-operator">:</span> (<span class="ruby-ivar">@rti</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@rti</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">:</span> (<span class="ruby-ivar">@string</span> <span class="ruby-operator">||</span> <span class="ruby-value str">''</span>))
1496
+ 234: <span class="ruby-keyword kw">end</span></pre>
1497
+ </div>
1498
+
1499
+ </div>
1500
+
1501
+
1502
+
1503
+
1504
+ </div>
1505
+
1506
+
1507
+ <div id="to-sort-method" class="method-detail ">
1508
+ <a name="method-i-to_sort"></a>
1509
+
1510
+ <div class="method-heading">
1511
+
1512
+ <span class="method-name">to_sort</span><span
1513
+ class="method-args">()</span>
1514
+ <span class="method-click-advice">click to toggle source</span>
1515
+
1516
+ </div>
1517
+
1518
+ <div class="method-description">
1519
+
1520
+ <p>
1521
+ Return the result in the best suited type and format for sorting. The
1522
+ result may be nil.
1523
+ </p>
1524
+
1525
+
1526
+
1527
+ <div class="method-source-code"
1528
+ id="to-sort-source">
1529
+ <pre>
1530
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 244</span>
1531
+ 244: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_sort</span>
1532
+ 245: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_sort</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@sortable</span>
1533
+ 246: <span class="ruby-keyword kw">end</span></pre>
1534
+ </div>
1535
+
1536
+ </div>
1537
+
1538
+
1539
+
1540
+
1541
+ </div>
1542
+
1543
+
1544
+ </div>
1545
+
1546
+ <div id="private-instance-method-details" class="method-section section">
1547
+ <h3 class="section-header">Private Instance Methods</h3>
1548
+
1549
+
1550
+ <div id="reset-method" class="method-detail ">
1551
+ <a name="method-i-reset"></a>
1552
+
1553
+ <div class="method-heading">
1554
+
1555
+ <span class="method-name">reset</span><span
1556
+ class="method-args">()</span>
1557
+ <span class="method-click-advice">click to toggle source</span>
1558
+
1559
+ </div>
1560
+
1561
+ <div class="method-description">
1562
+
1563
+ <p>
1564
+ Queries object can be reused. Calling this function will clear the query
1565
+ result data.
1566
+ </p>
1567
+
1568
+
1569
+
1570
+ <div class="method-source-code"
1571
+ id="reset-source">
1572
+ <pre>
1573
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 383</span>
1574
+ 383: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
1575
+ 384: <span class="ruby-ivar">@attr</span> = <span class="ruby-ivar">@numerical</span> = <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@string</span> = <span class="ruby-ivar">@rti</span> = <span class="ruby-keyword kw">nil</span>
1576
+ 385: <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">true</span>
1577
+ 386: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-keyword kw">nil</span>
1578
+ 387: <span class="ruby-keyword kw">end</span></pre>
1579
+ </div>
1580
+
1581
+ </div>
1582
+
1583
+
1584
+
1585
+
1586
+ </div>
1587
+
1588
+
1589
+ <div id="resolve-roperty-d-method" class="method-detail ">
1590
+ <a name="method-i-resolvePropertyId"></a>
1591
+
1592
+ <div class="method-heading">
1593
+
1594
+ <span class="method-name">resolvePropertyId</span><span
1595
+ class="method-args">(pType, pId)</span>
1596
+ <span class="method-click-advice">click to toggle source</span>
1597
+
1598
+ </div>
1599
+
1600
+ <div class="method-description">
1601
+
1602
+
1603
+
1604
+
1605
+
1606
+ <div class="method-source-code"
1607
+ id="resolve-roperty-d-source">
1608
+ <pre>
1609
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 293</span>
1610
+ 293: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resolvePropertyId</span>(<span class="ruby-identifier">pType</span>, <span class="ruby-identifier">pId</span>)
1611
+ 294: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@project</span>
1612
+ 295: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Need Project reference to process the query&quot;</span>
1613
+ 296: <span class="ruby-keyword kw">end</span>
1614
+ 297: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">pType</span>
1615
+ 298: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:Account</span>
1616
+ 299: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">account</span>(<span class="ruby-identifier">pId</span>)
1617
+ 300: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:Task</span>
1618
+ 301: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">task</span>(<span class="ruby-identifier">pId</span>)
1619
+ 302: <span class="ruby-keyword kw">when</span><span class="ruby-value">:Resource</span>
1620
+ 303: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resource</span>(<span class="ruby-identifier">pId</span>)
1621
+ 304: <span class="ruby-keyword kw">else</span>
1622
+ 305: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown property type #{pType}&quot;</span>
1623
+ 306: <span class="ruby-keyword kw">end</span>
1624
+ 307: <span class="ruby-keyword kw">end</span></pre>
1625
+ </div>
1626
+
1627
+ </div>
1628
+
1629
+
1630
+
1631
+
1632
+ </div>
1633
+
1634
+
1635
+ <div id="scale-alue-method" class="method-detail ">
1636
+ <a name="method-i-scaleValue"></a>
1637
+
1638
+ <div class="method-heading">
1639
+
1640
+ <span class="method-name">scaleValue</span><span
1641
+ class="method-args">(value, factors)</span>
1642
+ <span class="method-click-advice">click to toggle source</span>
1643
+
1644
+ </div>
1645
+
1646
+ <div class="method-description">
1647
+
1648
+ <p>
1649
+ This function converts number to strings that may include a unit. The unit
1650
+ is determined by @loadUnit. In the automatic modes, the shortest possible
1651
+ result is shown and the unit is always appended. <em>value</em> is the
1652
+ value to convert. <em>factors</em> determines the conversion factors for
1653
+ the different units.
1654
+ </p>
1655
+
1656
+
1657
+
1658
+ <div class="method-source-code"
1659
+ id="scale-alue-source">
1660
+ <pre>
1661
+ <span class="ruby-comment cmt"># File lib/taskjuggler/Query.rb, line 314</span>
1662
+ 314: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scaleValue</span>(<span class="ruby-identifier">value</span>, <span class="ruby-identifier">factors</span>)
1663
+ 315: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@loadUnit</span> <span class="ruby-operator">==</span> <span class="ruby-value">:shortauto</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@loadUnit</span> <span class="ruby-operator">==</span> <span class="ruby-value">:longauto</span>
1664
+ 316: <span class="ruby-comment cmt"># We try all possible units and store the resulting strings here.</span>
1665
+ 317: <span class="ruby-identifier">options</span> = []
1666
+ 318: <span class="ruby-comment cmt"># For each option we also save the delta between the String value and</span>
1667
+ 319: <span class="ruby-comment cmt"># the original value.</span>
1668
+ 320: <span class="ruby-identifier">delta</span> = []
1669
+ 321: <span class="ruby-comment cmt"># For each of the units we can define a maximum value that the value</span>
1670
+ 322: <span class="ruby-comment cmt"># should not exceed. nil means no limit.</span>
1671
+ 323: <span class="ruby-identifier">max</span> = [ <span class="ruby-value">60</span>, <span class="ruby-value">48</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-value">8</span>, <span class="ruby-value">24</span>, <span class="ruby-keyword kw">nil</span> ]
1672
+ 324:
1673
+ 325: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1674
+ 326: <span class="ruby-identifier">factors</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">factor</span><span class="ruby-operator">|</span>
1675
+ 327: <span class="ruby-identifier">scaledValue</span> = <span class="ruby-identifier">value</span> * <span class="ruby-identifier">factor</span>
1676
+ 328: <span class="ruby-identifier">str</span> = <span class="ruby-ivar">@numberFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">scaledValue</span>)
1677
+ 329: <span class="ruby-identifier">delta</span>[<span class="ruby-identifier">i</span>] = ((<span class="ruby-identifier">scaledValue</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">to_f</span>).<span class="ruby-identifier">abs</span> * <span class="ruby-value">1000</span>).<span class="ruby-identifier">to_i</span>
1678
+ 330: <span class="ruby-comment cmt"># We ignore results that are 0 or exceed the maximum. To ensure that</span>
1679
+ 331: <span class="ruby-comment cmt"># we have at least one result the unscaled value is always taken.</span>
1680
+ 332: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">factor</span> <span class="ruby-operator">!=</span> <span class="ruby-value">1.0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-regexp re">/^[0.]*$/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">str</span>) <span class="ruby-operator">||</span>
1681
+ 333: (<span class="ruby-identifier">max</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">scaledValue</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">max</span>[<span class="ruby-identifier">i</span>])
1682
+ 334: <span class="ruby-identifier">options</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
1683
+ 335: <span class="ruby-keyword kw">else</span>
1684
+ 336: <span class="ruby-identifier">options</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">str</span>
1685
+ 337: <span class="ruby-keyword kw">end</span>
1686
+ 338: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1687
+ 339: <span class="ruby-keyword kw">end</span>
1688
+ 340:
1689
+ 341: <span class="ruby-comment cmt"># Find the value that is the closest to the original value. This will be</span>
1690
+ 342: <span class="ruby-comment cmt"># the default if all values have the same length.</span>
1691
+ 343: <span class="ruby-identifier">shortest</span> = <span class="ruby-value">2</span>
1692
+ 344: <span class="ruby-identifier">delta</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">j</span><span class="ruby-operator">|</span>
1693
+ 345: <span class="ruby-identifier">shortest</span> = <span class="ruby-identifier">j</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>][<span class="ruby-value">0</span>, <span class="ruby-value">2</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'0.'</span> <span class="ruby-operator">&amp;&amp;</span>
1694
+ 346: <span class="ruby-identifier">delta</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">delta</span>[<span class="ruby-identifier">shortest</span>]
1695
+ 347: <span class="ruby-keyword kw">end</span>
1696
+ 348:
1697
+ 349: <span class="ruby-comment cmt"># Find the shortest option.</span>
1698
+ 350: <span class="ruby-value">6</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">j</span><span class="ruby-operator">|</span>
1699
+ 351: <span class="ruby-identifier">shortest</span> = <span class="ruby-identifier">j</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>][<span class="ruby-value">0</span>, <span class="ruby-value">2</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'0.'</span> <span class="ruby-operator">&amp;&amp;</span>
1700
+ 352: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>].<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">shortest</span>].<span class="ruby-identifier">length</span>
1701
+ 353: <span class="ruby-keyword kw">end</span>
1702
+ 354:
1703
+ 355: <span class="ruby-identifier">str</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">shortest</span>]
1704
+ 356: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@loadUnit</span> <span class="ruby-operator">==</span> <span class="ruby-value">:longauto</span>
1705
+ 357: <span class="ruby-comment cmt"># For the long units we handle singular and plural properly. For</span>
1706
+ 358: <span class="ruby-comment cmt"># English we just need to append an 's', but this code will work for</span>
1707
+ 359: <span class="ruby-comment cmt"># other languages as well.</span>
1708
+ 360: <span class="ruby-identifier">units</span> = []
1709
+ 361: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">str</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;1&quot;</span>
1710
+ 362: <span class="ruby-identifier">units</span> = <span class="ruby-node">%( minute hour day week month year )</span>
1711
+ 363: <span class="ruby-keyword kw">else</span>
1712
+ 364: <span class="ruby-identifier">units</span> = <span class="ruby-node">%( minutes hours days weeks months years )</span>
1713
+ 365: <span class="ruby-keyword kw">end</span>
1714
+ 366: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">units</span>[<span class="ruby-identifier">shortest</span>]
1715
+ 367: <span class="ruby-keyword kw">else</span>
1716
+ 368: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">%( min h d w m y )</span>[<span class="ruby-identifier">shortest</span>]
1717
+ 369: <span class="ruby-keyword kw">end</span>
1718
+ 370: <span class="ruby-keyword kw">else</span>
1719
+ 371: <span class="ruby-comment cmt"># For fixed units we just need to do the conversion. No unit is</span>
1720
+ 372: <span class="ruby-comment cmt"># included.</span>
1721
+ 373: <span class="ruby-identifier">units</span> = [ <span class="ruby-value">:minutes</span>, <span class="ruby-value">:hours</span>, <span class="ruby-value">:days</span>, <span class="ruby-value">:weeks</span>, <span class="ruby-value">:months</span>, <span class="ruby-value">:years</span> ]
1722
+ 374: <span class="ruby-identifier">str</span> = <span class="ruby-ivar">@numberFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">value</span> * <span class="ruby-identifier">factors</span>[<span class="ruby-identifier">units</span>.<span class="ruby-identifier">index</span>(<span class="ruby-ivar">@loadUnit</span>)])
1723
+ 375: <span class="ruby-keyword kw">end</span>
1724
+ 376: <span class="ruby-identifier">str</span>
1725
+ 377: <span class="ruby-keyword kw">end</span></pre>
1726
+ </div>
1727
+
1728
+ </div>
1729
+
1730
+
1731
+
1732
+
1733
+ </div>
1734
+
1735
+
1736
+ </div>
1737
+
1738
+
1739
+ </div>
1740
+
1741
+
1742
+ <div id="rdoc-debugging-section-dump" class="debugging-section">
1743
+
1744
+ <p>Disabled; run with --debug to generate this.</p>
1745
+
1746
+ </div>
1747
+
1748
+ <div id="validator-badges">
1749
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1750
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
1751
+ Rdoc Generator</a> 1.1.6</small>.</p>
1752
+ </div>
1753
+
1754
+ </body>
1755
+ </html>
1756
+