backlog 0.7.12 → 0.8.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 (444) hide show
  1. data/History.txt +9 -0
  2. data/Rakefile +2 -2
  3. data/app/controllers/estimates_controller.rb +20 -3
  4. data/app/controllers/task_files_controller.rb +19 -0
  5. data/app/controllers/tasks_controller.rb +7 -2
  6. data/app/helpers/task_files_helper.rb +2 -0
  7. data/app/models/task.rb +3 -3
  8. data/app/models/task_file.rb +7 -0
  9. data/app/views/layouts/_left_top.rhtml +12 -2
  10. data/app/views/tasks/_form.rhtml +16 -1
  11. data/app/views/tasks/edit.rhtml +1 -1
  12. data/db/migrate/020_create_task_files.rb +17 -0
  13. data/db/schema.rb +11 -21
  14. data/doc/classes/ActiveRecord/Base.html +40 -40
  15. data/doc/classes/ActiveRecord/Base.src/M000432.html +13 -56
  16. data/doc/classes/ActiveRecord/Base.src/M000433.html +14 -3
  17. data/doc/classes/ActiveRecord/Base.src/{M000428.html → M000434.html} +0 -0
  18. data/doc/classes/ActiveRecord/Base.src/{M000429.html → M000435.html} +0 -0
  19. data/doc/classes/ActiveRecord/Base.src/{M000426.html → M000436.html} +0 -0
  20. data/doc/classes/ActiveRecord/Base.src/{M000427.html → M000437.html} +0 -0
  21. data/doc/classes/ActiveRecord/Base.src/M000438.html +72 -0
  22. data/doc/classes/ActiveRecord/Base.src/M000439.html +16 -0
  23. data/doc/classes/ApplicationController.html +18 -18
  24. data/doc/classes/ApplicationController.src/{M000318.html → M000322.html} +0 -0
  25. data/doc/classes/ApplicationController.src/{M000319.html → M000323.html} +0 -0
  26. data/doc/classes/ApplicationHelper.html +91 -91
  27. data/doc/classes/ApplicationHelper.src/M000440.html +7 -4
  28. data/doc/classes/ApplicationHelper.src/M000441.html +4 -8
  29. data/doc/classes/ApplicationHelper.src/M000442.html +11 -15
  30. data/doc/classes/ApplicationHelper.src/M000443.html +6 -7
  31. data/doc/classes/ApplicationHelper.src/M000444.html +6 -4
  32. data/doc/classes/ApplicationHelper.src/M000445.html +7 -11
  33. data/doc/classes/ApplicationHelper.src/M000446.html +4 -6
  34. data/doc/classes/ApplicationHelper.src/M000447.html +8 -6
  35. data/doc/classes/ApplicationHelper.src/M000448.html +15 -7
  36. data/doc/classes/ApplicationHelper.src/M000449.html +7 -4
  37. data/doc/classes/ApplicationHelper.src/M000450.html +4 -8
  38. data/doc/classes/ApplicationHelper.src/M000451.html +11 -15
  39. data/doc/classes/ApplicationHelper.src/{M000437.html → M000452.html} +0 -0
  40. data/doc/classes/ApplicationHelper.src/{M000438.html → M000453.html} +0 -0
  41. data/doc/classes/ApplicationHelper.src/{M000439.html → M000454.html} +0 -0
  42. data/doc/classes/ApplicationHelper.src/M000455.html +18 -0
  43. data/doc/classes/ApplicationHelper.src/M000456.html +22 -0
  44. data/doc/classes/ApplicationHelper.src/M000457.html +30 -0
  45. data/doc/classes/Backlog.html +1 -1
  46. data/doc/classes/BacklogsHelper.html +1 -1
  47. data/doc/classes/BigDecimal.html +10 -10
  48. data/doc/classes/BigDecimal.src/{M000364.html → M000366.html} +0 -0
  49. data/doc/classes/BigDecimal.src/{M000365.html → M000367.html} +0 -0
  50. data/doc/classes/Chart.html +1 -1
  51. data/doc/classes/Clock.html +30 -30
  52. data/doc/classes/Clock.src/{M000394.html → M000400.html} +0 -0
  53. data/doc/classes/Clock.src/{M000395.html → M000401.html} +0 -0
  54. data/doc/classes/Clock.src/{M000396.html → M000402.html} +0 -0
  55. data/doc/classes/Clock.src/{M000397.html → M000403.html} +0 -0
  56. data/doc/classes/Clock.src/{M000398.html → M000404.html} +0 -0
  57. data/doc/classes/Clock.src/{M000399.html → M000405.html} +0 -0
  58. data/doc/classes/Estimate.html +11 -11
  59. data/doc/classes/Estimate.src/{M000400.html → M000406.html} +0 -0
  60. data/doc/classes/Estimate.src/{M000401.html → M000407.html} +0 -0
  61. data/doc/classes/EstimatesController.html +10 -10
  62. data/doc/classes/EstimatesController.src/M000398.html +39 -0
  63. data/doc/classes/EstimatesController.src/M000399.html +39 -0
  64. data/doc/classes/EstimatesHelper.html +1 -1
  65. data/doc/classes/Group.html +1 -1
  66. data/doc/classes/GroupsController.html +80 -80
  67. data/doc/classes/GroupsController.src/M000324.html +5 -4
  68. data/doc/classes/GroupsController.src/M000325.html +4 -10
  69. data/doc/classes/GroupsController.src/M000326.html +4 -7
  70. data/doc/classes/GroupsController.src/M000327.html +8 -8
  71. data/doc/classes/GroupsController.src/M000328.html +7 -5
  72. data/doc/classes/GroupsController.src/M000329.html +7 -9
  73. data/doc/classes/GroupsController.src/M000330.html +5 -5
  74. data/doc/classes/GroupsController.src/M000331.html +12 -4
  75. data/doc/classes/GroupsController.src/M000332.html +5 -4
  76. data/doc/classes/GroupsController.src/M000333.html +4 -10
  77. data/doc/classes/GroupsController.src/M000334.html +4 -7
  78. data/doc/classes/GroupsController.src/M000335.html +8 -8
  79. data/doc/classes/GroupsController.src/M000336.html +7 -5
  80. data/doc/classes/GroupsController.src/M000337.html +7 -9
  81. data/doc/classes/GroupsController.src/{M000323.html → M000338.html} +5 -4
  82. data/doc/classes/GroupsController.src/M000339.html +26 -0
  83. data/doc/classes/GroupsHelper.html +1 -1
  84. data/doc/classes/Localization.html +30 -30
  85. data/doc/classes/Localization.src/{M000414.html → M000420.html} +0 -0
  86. data/doc/classes/Localization.src/{M000415.html → M000421.html} +0 -0
  87. data/doc/classes/Localization.src/{M000416.html → M000422.html} +0 -0
  88. data/doc/classes/Localization.src/{M000417.html → M000423.html} +0 -0
  89. data/doc/classes/Localization.src/{M000418.html → M000424.html} +0 -0
  90. data/doc/classes/Localization.src/{M000419.html → M000425.html} +0 -0
  91. data/doc/classes/Localization/LString.html +20 -20
  92. data/doc/classes/Localization/LString.src/{M000420.html → M000426.html} +0 -0
  93. data/doc/classes/Localization/LString.src/{M000421.html → M000427.html} +0 -0
  94. data/doc/classes/Localization/LString.src/{M000422.html → M000428.html} +0 -0
  95. data/doc/classes/Localization/LString.src/{M000423.html → M000429.html} +0 -0
  96. data/doc/classes/PartiesHelper.html +1 -1
  97. data/doc/classes/Party.html +41 -41
  98. data/doc/classes/Party.src/M000340.html +4 -4
  99. data/doc/classes/Party.src/M000341.html +4 -11
  100. data/doc/classes/Party.src/M000342.html +4 -4
  101. data/doc/classes/Party.src/M000343.html +11 -4
  102. data/doc/classes/Party.src/M000344.html +4 -4
  103. data/doc/classes/Party.src/M000345.html +4 -11
  104. data/doc/classes/Party.src/{M000338.html → M000346.html} +4 -4
  105. data/doc/classes/Party.src/M000347.html +25 -0
  106. data/doc/classes/Period.html +1 -1
  107. data/doc/classes/PeriodsController.html +130 -130
  108. data/doc/classes/PeriodsController.src/M000372.html +9 -8
  109. data/doc/classes/PeriodsController.src/M000373.html +19 -6
  110. data/doc/classes/PeriodsController.src/M000374.html +5 -4
  111. data/doc/classes/PeriodsController.src/M000375.html +15 -4
  112. data/doc/classes/PeriodsController.src/M000376.html +11 -4
  113. data/doc/classes/PeriodsController.src/M000377.html +3 -5
  114. data/doc/classes/PeriodsController.src/M000378.html +8 -6
  115. data/doc/classes/PeriodsController.src/M000379.html +6 -11
  116. data/doc/classes/PeriodsController.src/M000380.html +4 -19
  117. data/doc/classes/PeriodsController.src/M000381.html +4 -5
  118. data/doc/classes/PeriodsController.src/M000382.html +4 -15
  119. data/doc/classes/PeriodsController.src/M000383.html +6 -11
  120. data/doc/classes/PeriodsController.src/M000384.html +8 -4
  121. data/doc/classes/PeriodsController.src/M000385.html +9 -8
  122. data/doc/classes/PeriodsController.src/M000386.html +19 -6
  123. data/doc/classes/PeriodsController.src/M000387.html +5 -4
  124. data/doc/classes/PeriodsController.src/M000388.html +15 -4
  125. data/doc/classes/PeriodsController.src/M000389.html +11 -4
  126. data/doc/classes/PeriodsController.src/M000390.html +3 -5
  127. data/doc/classes/PeriodsController.src/M000391.html +8 -6
  128. data/doc/classes/PeriodsController.src/M000392.html +20 -0
  129. data/doc/classes/{GroupsController.src/M000322.html → PeriodsController.src/M000393.html} +4 -5
  130. data/doc/classes/PeriodsController.src/{M000371.html → M000394.html} +4 -4
  131. data/doc/classes/{Party.src/M000339.html → PeriodsController.src/M000395.html} +4 -4
  132. data/doc/classes/PeriodsController.src/M000396.html +20 -0
  133. data/doc/classes/PeriodsController.src/M000397.html +22 -0
  134. data/doc/classes/PeriodsHelper.html +1 -1
  135. data/doc/classes/SearchHelper.html +1 -1
  136. data/doc/classes/SearchResult.html +11 -11
  137. data/doc/classes/SearchResult.src/{M000239.html → M000241.html} +0 -0
  138. data/doc/classes/SearchResult.src/{M000240.html → M000242.html} +0 -0
  139. data/doc/classes/Task.html +385 -385
  140. data/doc/classes/Task.src/M000243.html +7 -14
  141. data/doc/classes/Task.src/M000244.html +4 -4
  142. data/doc/classes/Task.src/M000245.html +16 -4
  143. data/doc/classes/Task.src/M000246.html +4 -24
  144. data/doc/classes/Task.src/M000247.html +4 -4
  145. data/doc/classes/Task.src/M000248.html +24 -11
  146. data/doc/classes/Task.src/M000249.html +4 -6
  147. data/doc/classes/Task.src/M000250.html +11 -12
  148. data/doc/classes/Task.src/M000251.html +6 -10
  149. data/doc/classes/Task.src/M000252.html +9 -40
  150. data/doc/classes/Task.src/M000253.html +8 -10
  151. data/doc/classes/Task.src/M000254.html +42 -7
  152. data/doc/classes/Task.src/M000255.html +12 -4
  153. data/doc/classes/Task.src/M000256.html +8 -4
  154. data/doc/classes/Task.src/M000257.html +4 -4
  155. data/doc/classes/Task.src/M000258.html +4 -4
  156. data/doc/classes/Task.src/M000259.html +4 -4
  157. data/doc/classes/Task.src/M000260.html +4 -4
  158. data/doc/classes/Task.src/M000261.html +4 -4
  159. data/doc/classes/Task.src/M000262.html +4 -6
  160. data/doc/classes/Task.src/M000263.html +4 -4
  161. data/doc/classes/Task.src/M000264.html +6 -4
  162. data/doc/classes/Task.src/M000265.html +4 -4
  163. data/doc/classes/Task.src/M000266.html +4 -4
  164. data/doc/classes/Task.src/M000267.html +4 -4
  165. data/doc/classes/Task.src/M000268.html +4 -4
  166. data/doc/classes/Task.src/M000269.html +4 -4
  167. data/doc/classes/Task.src/M000270.html +4 -4
  168. data/doc/classes/Task.src/M000271.html +4 -10
  169. data/doc/classes/Task.src/M000272.html +4 -19
  170. data/doc/classes/Task.src/M000273.html +9 -9
  171. data/doc/classes/Task.src/M000274.html +17 -18
  172. data/doc/classes/Task.src/M000275.html +10 -4
  173. data/doc/classes/Task.src/M000276.html +20 -4
  174. data/doc/classes/Task.src/M000277.html +4 -4
  175. data/doc/classes/Task.src/M000278.html +4 -9
  176. data/doc/classes/Task.src/M000279.html +4 -9
  177. data/doc/classes/Task.src/M000280.html +9 -4
  178. data/doc/classes/Task.src/M000281.html +7 -14
  179. data/doc/classes/Task.src/M000282.html +4 -4
  180. data/doc/classes/Task.src/M000283.html +16 -4
  181. data/doc/classes/Task.src/M000284.html +4 -24
  182. data/doc/classes/Task.src/M000285.html +4 -4
  183. data/doc/classes/Task.src/M000286.html +24 -11
  184. data/doc/classes/Task.src/M000287.html +4 -6
  185. data/doc/classes/Task.src/M000288.html +11 -12
  186. data/doc/classes/Task.src/M000289.html +6 -10
  187. data/doc/classes/Task.src/M000290.html +9 -40
  188. data/doc/classes/Task.src/M000291.html +8 -10
  189. data/doc/classes/Task.src/M000292.html +42 -7
  190. data/doc/classes/Task.src/M000293.html +12 -4
  191. data/doc/classes/Task.src/M000294.html +8 -4
  192. data/doc/classes/Task.src/M000295.html +4 -4
  193. data/doc/classes/Task.src/M000296.html +4 -4
  194. data/doc/classes/Task.src/M000297.html +4 -4
  195. data/doc/classes/Task.src/M000298.html +4 -4
  196. data/doc/classes/Task.src/M000299.html +4 -4
  197. data/doc/classes/Task.src/M000300.html +4 -6
  198. data/doc/classes/Task.src/M000301.html +4 -4
  199. data/doc/classes/Task.src/M000302.html +6 -4
  200. data/doc/classes/Task.src/M000303.html +4 -4
  201. data/doc/classes/Task.src/M000304.html +4 -4
  202. data/doc/classes/Task.src/M000305.html +4 -4
  203. data/doc/classes/Task.src/M000306.html +4 -4
  204. data/doc/classes/Task.src/M000307.html +4 -4
  205. data/doc/classes/Task.src/M000308.html +18 -0
  206. data/doc/classes/Task.src/M000309.html +4 -4
  207. data/doc/classes/Task.src/M000311.html +4 -19
  208. data/doc/classes/Task.src/M000312.html +9 -9
  209. data/doc/classes/Task.src/M000313.html +17 -18
  210. data/doc/classes/Task.src/M000314.html +10 -4
  211. data/doc/classes/Task.src/M000315.html +20 -4
  212. data/doc/classes/Task.src/M000316.html +4 -4
  213. data/doc/classes/Task.src/M000317.html +4 -9
  214. data/doc/classes/Task.src/M000318.html +18 -0
  215. data/doc/classes/Task.src/M000319.html +23 -0
  216. data/doc/classes/TaskFile.html +165 -0
  217. data/doc/classes/TaskFile.src/M000239.html +18 -0
  218. data/doc/classes/TaskFile.src/M000240.html +18 -0
  219. data/doc/classes/TaskFilesController.html +195 -0
  220. data/doc/classes/TaskFilesController.src/M000368.html +22 -0
  221. data/doc/classes/TaskFilesController.src/M000369.html +24 -0
  222. data/doc/classes/TaskFilesController.src/M000370.html +22 -0
  223. data/doc/classes/TaskFilesController.src/M000371.html +24 -0
  224. data/doc/classes/TaskFilesHelper.html +115 -0
  225. data/doc/classes/TasksController.src/M000107.html +6 -1
  226. data/doc/classes/TasksController.src/M000108.html +1 -1
  227. data/doc/classes/TasksController.src/M000109.html +1 -1
  228. data/doc/classes/TasksController.src/M000110.html +1 -1
  229. data/doc/classes/TasksController.src/M000111.html +1 -1
  230. data/doc/classes/TasksController.src/M000112.html +1 -1
  231. data/doc/classes/TasksController.src/M000113.html +1 -1
  232. data/doc/classes/TasksController.src/M000114.html +1 -1
  233. data/doc/classes/TasksController.src/M000115.html +1 -1
  234. data/doc/classes/TasksController.src/M000116.html +1 -1
  235. data/doc/classes/TasksController.src/M000117.html +1 -1
  236. data/doc/classes/TasksController.src/M000118.html +1 -1
  237. data/doc/classes/TasksController.src/M000119.html +1 -1
  238. data/doc/classes/TasksController.src/M000120.html +1 -1
  239. data/doc/classes/TasksController.src/M000121.html +2 -2
  240. data/doc/classes/TasksController.src/M000122.html +1 -1
  241. data/doc/classes/TasksController.src/M000127.html +6 -1
  242. data/doc/classes/TasksController.src/M000128.html +1 -1
  243. data/doc/classes/TasksController.src/M000129.html +1 -1
  244. data/doc/classes/TasksController.src/M000130.html +1 -1
  245. data/doc/classes/TasksController.src/M000131.html +1 -1
  246. data/doc/classes/TasksController.src/M000132.html +1 -1
  247. data/doc/classes/TasksController.src/M000133.html +1 -1
  248. data/doc/classes/TasksController.src/M000134.html +1 -1
  249. data/doc/classes/TasksController.src/M000135.html +1 -1
  250. data/doc/classes/TasksController.src/M000136.html +1 -1
  251. data/doc/classes/TasksController.src/M000137.html +1 -1
  252. data/doc/classes/TasksController.src/M000138.html +1 -1
  253. data/doc/classes/TasksController.src/M000139.html +1 -1
  254. data/doc/classes/TasksController.src/M000140.html +1 -1
  255. data/doc/classes/TasksController.src/M000141.html +2 -2
  256. data/doc/classes/TasksController.src/M000142.html +1 -1
  257. data/doc/classes/TasksHelper.html +1 -1
  258. data/doc/classes/Time.html +1 -1
  259. data/doc/classes/User.html +1 -1
  260. data/doc/classes/UserHelper.html +55 -55
  261. data/doc/classes/UserHelper.src/{M000402.html → M000414.html} +0 -0
  262. data/doc/classes/UserHelper.src/{M000403.html → M000415.html} +0 -0
  263. data/doc/classes/UserHelper.src/{M000404.html → M000416.html} +0 -0
  264. data/doc/classes/UserHelper.src/{M000405.html → M000417.html} +0 -0
  265. data/doc/classes/UserHelper.src/{M000406.html → M000418.html} +0 -0
  266. data/doc/classes/UserHelper.src/{M000407.html → M000419.html} +0 -0
  267. data/doc/classes/UserNotify.html +1 -1
  268. data/doc/classes/UserSystem.html +56 -56
  269. data/doc/classes/UserSystem.src/{M000452.html → M000464.html} +0 -0
  270. data/doc/classes/UserSystem.src/{M000453.html → M000465.html} +0 -0
  271. data/doc/classes/UserSystem.src/{M000454.html → M000466.html} +0 -0
  272. data/doc/classes/UserSystem.src/{M000455.html → M000467.html} +0 -0
  273. data/doc/classes/UserSystem.src/{M000456.html → M000468.html} +0 -0
  274. data/doc/classes/UserSystem.src/{M000457.html → M000469.html} +0 -0
  275. data/doc/classes/Work.html +91 -91
  276. data/doc/classes/Work.src/M000348.html +4 -14
  277. data/doc/classes/Work.src/M000349.html +4 -24
  278. data/doc/classes/Work.src/M000350.html +14 -4
  279. data/doc/classes/Work.src/M000351.html +24 -4
  280. data/doc/classes/Work.src/M000352.html +4 -7
  281. data/doc/classes/Work.src/M000353.html +4 -4
  282. data/doc/classes/Work.src/M000354.html +5 -5
  283. data/doc/classes/Work.src/M000355.html +4 -4
  284. data/doc/classes/Work.src/M000356.html +7 -4
  285. data/doc/classes/Work.src/M000357.html +4 -14
  286. data/doc/classes/Work.src/M000358.html +4 -24
  287. data/doc/classes/Work.src/M000359.html +14 -4
  288. data/doc/classes/Work.src/M000360.html +24 -4
  289. data/doc/classes/Work.src/M000361.html +4 -7
  290. data/doc/classes/Work.src/M000362.html +4 -4
  291. data/doc/classes/Work.src/M000363.html +5 -5
  292. data/doc/classes/Work.src/{M000346.html → M000364.html} +4 -4
  293. data/doc/classes/Work.src/M000365.html +21 -0
  294. data/doc/classes/WorksHelper.html +11 -11
  295. data/doc/classes/WorksHelper.src/{M000424.html → M000430.html} +0 -0
  296. data/doc/classes/WorksHelper.src/{M000425.html → M000431.html} +0 -0
  297. data/doc/created.rid +1 -1
  298. data/doc/dot/f_0.png +0 -0
  299. data/doc/dot/f_1.png +0 -0
  300. data/doc/dot/f_2.png +0 -0
  301. data/doc/dot/f_24.png +0 -0
  302. data/doc/dot/f_25.png +0 -0
  303. data/doc/dot/f_26.png +0 -0
  304. data/doc/dot/f_27.png +0 -0
  305. data/doc/dot/f_28.png +0 -0
  306. data/doc/dot/f_29.png +0 -0
  307. data/doc/dot/f_3.png +0 -0
  308. data/doc/dot/f_30.png +0 -0
  309. data/doc/dot/f_31.png +0 -0
  310. data/doc/dot/f_32.png +0 -0
  311. data/doc/dot/f_33.png +0 -0
  312. data/doc/dot/f_34.dot +32 -0
  313. data/doc/dot/f_34.png +0 -0
  314. data/doc/dot/f_4.png +0 -0
  315. data/doc/dot/f_46.dot +4 -4
  316. data/doc/dot/f_46.png +0 -0
  317. data/doc/dot/f_47.dot +4 -18
  318. data/doc/dot/f_47.png +0 -0
  319. data/doc/dot/f_48.dot +4 -13
  320. data/doc/dot/f_48.png +0 -0
  321. data/doc/dot/f_49.dot +18 -4
  322. data/doc/dot/f_49.png +0 -0
  323. data/doc/dot/f_5.png +0 -0
  324. data/doc/dot/f_50.dot +13 -4
  325. data/doc/dot/f_50.png +0 -0
  326. data/doc/dot/f_51.dot +4 -4
  327. data/doc/dot/f_51.png +0 -0
  328. data/doc/dot/f_52.dot +4 -4
  329. data/doc/dot/f_52.png +0 -0
  330. data/doc/dot/f_53.dot +4 -4
  331. data/doc/dot/f_53.png +0 -0
  332. data/doc/dot/{f_44.dot → f_54.dot} +4 -4
  333. data/doc/dot/f_54.png +0 -0
  334. data/doc/dot/{f_65.dot → f_55.dot} +4 -4
  335. data/doc/dot/f_55.png +0 -0
  336. data/doc/dot/{f_45.dot → f_56.dot} +4 -4
  337. data/doc/dot/f_56.png +0 -0
  338. data/doc/dot/f_6.png +0 -0
  339. data/doc/dot/f_68.dot +4 -4
  340. data/doc/dot/f_68.png +0 -0
  341. data/doc/dot/f_69.dot +15 -31
  342. data/doc/dot/f_69.png +0 -0
  343. data/doc/dot/f_7.png +0 -0
  344. data/doc/dot/f_70.dot +12 -3
  345. data/doc/dot/f_70.png +0 -0
  346. data/doc/dot/f_71.dot +7 -7
  347. data/doc/dot/f_71.png +0 -0
  348. data/doc/dot/f_72.dot +4 -4
  349. data/doc/dot/f_72.png +0 -0
  350. data/doc/dot/f_73.dot +9 -9
  351. data/doc/dot/f_73.png +0 -0
  352. data/doc/dot/f_74.dot +3 -12
  353. data/doc/dot/f_74.png +0 -0
  354. data/doc/dot/{f_64.dot → f_75.dot} +4 -4
  355. data/doc/dot/f_75.png +0 -0
  356. data/doc/dot/{f_67.dot → f_76.dot} +7 -7
  357. data/doc/dot/f_76.png +0 -0
  358. data/doc/dot/f_77.dot +32 -0
  359. data/doc/dot/f_77.png +0 -0
  360. data/doc/dot/f_78.dot +46 -0
  361. data/doc/dot/f_78.png +0 -0
  362. data/doc/dot/{f_66.dot → f_79.dot} +4 -4
  363. data/doc/dot/f_79.png +0 -0
  364. data/doc/dot/{m_48_0.dot → m_50_0.dot} +0 -0
  365. data/doc/dot/{m_48_0.png → m_50_0.png} +0 -0
  366. data/doc/files/History_txt.html +23 -2
  367. data/doc/files/app/controllers/estimates_controller_rb.html +1 -1
  368. data/doc/files/app/controllers/task_files_controller_rb.html +108 -0
  369. data/doc/files/app/controllers/tasks_controller_rb.html +1 -1
  370. data/doc/files/app/helpers/application_helper_rb.html +1 -1
  371. data/doc/files/app/helpers/backlogs_helper_rb.html +1 -1
  372. data/doc/files/app/helpers/estimates_helper_rb.html +1 -1
  373. data/doc/files/app/helpers/groups_helper_rb.html +1 -1
  374. data/doc/files/app/helpers/parties_helper_rb.html +1 -1
  375. data/doc/files/app/helpers/periods_helper_rb.html +1 -1
  376. data/doc/files/app/helpers/search_helper_rb.html +1 -1
  377. data/doc/files/app/helpers/task_files_helper_rb.html +107 -0
  378. data/doc/files/app/helpers/tasks_helper_rb.html +1 -1
  379. data/doc/files/app/helpers/user_helper_rb.html +1 -1
  380. data/doc/files/app/helpers/works_helper_rb.html +1 -1
  381. data/doc/files/app/models/backlog_rb.html +1 -1
  382. data/doc/files/app/models/chart_rb.html +1 -1
  383. data/doc/files/app/models/estimate_rb.html +1 -1
  384. data/doc/files/app/models/group_rb.html +1 -1
  385. data/doc/files/app/models/party_rb.html +1 -1
  386. data/doc/files/app/models/period_rb.html +1 -1
  387. data/doc/files/app/models/search_result_rb.html +1 -1
  388. data/doc/files/app/models/task_file_rb.html +108 -0
  389. data/doc/files/app/models/task_rb.html +2 -2
  390. data/doc/files/app/models/user_notify_rb.html +1 -1
  391. data/doc/files/app/models/user_rb.html +1 -1
  392. data/doc/files/app/models/work_rb.html +1 -1
  393. data/doc/fr_class_index.html +3 -0
  394. data/doc/fr_file_index.html +6 -0
  395. data/doc/fr_method_index.html +295 -289
  396. data/doc/index.html +2 -2
  397. data/lang/en.yaml +2 -0
  398. data/lang/no.yaml +2 -0
  399. data/post-clean.rb +12 -0
  400. data/post-install.rb +51 -0
  401. data/post-setup.rb +254 -0
  402. data/public/500.html +2 -1
  403. data/public/images/text-x-generic.png +0 -0
  404. data/public/stylesheets/backlog.css +15 -2
  405. data/public/stylesheets/mwrt002.css +1 -1
  406. data/public/stylesheets/user.css +1 -1
  407. data/test/fixtures/task_files.yml +13 -0
  408. data/test/functional/backlogs_controller_test.rb +2 -1
  409. data/test/functional/estimates_controller_test.rb +2 -0
  410. data/test/functional/groups_controller_test.rb +1 -1
  411. data/test/functional/periods_controller_test.rb +1 -1
  412. data/test/functional/task_files_controller_test.rb +29 -0
  413. data/test/functional/tasks_controller_test.rb +2 -2
  414. data/test/functional/user_controller_test.rb +1 -1
  415. data/test/functional/works_controller_test.rb +1 -1
  416. data/test/unit/estimate_test.rb +1 -1
  417. data/test/unit/period_test.rb +1 -1
  418. data/test/unit/task_file_test.rb +10 -0
  419. data/test/unit/task_test.rb +1 -1
  420. metadata +115 -88
  421. data/doc/classes/ActiveRecord/Base.src/M000430.html +0 -29
  422. data/doc/classes/ActiveRecord/Base.src/M000431.html +0 -27
  423. data/doc/classes/ApplicationHelper.src/M000434.html +0 -21
  424. data/doc/classes/ApplicationHelper.src/M000435.html +0 -18
  425. data/doc/classes/ApplicationHelper.src/M000436.html +0 -26
  426. data/doc/classes/EstimatesController.src/M000392.html +0 -22
  427. data/doc/classes/EstimatesController.src/M000393.html +0 -22
  428. data/doc/classes/PeriodsController.src/M000366.html +0 -25
  429. data/doc/classes/PeriodsController.src/M000367.html +0 -33
  430. data/doc/classes/PeriodsController.src/M000368.html +0 -19
  431. data/doc/classes/PeriodsController.src/M000369.html +0 -29
  432. data/doc/classes/PeriodsController.src/M000370.html +0 -25
  433. data/doc/classes/Task.src/M000241.html +0 -23
  434. data/doc/classes/Task.src/M000242.html +0 -18
  435. data/doc/classes/Task.src/M000310.html +0 -24
  436. data/doc/classes/Work.src/M000347.html +0 -18
  437. data/doc/dot/f_44.png +0 -0
  438. data/doc/dot/f_45.png +0 -0
  439. data/doc/dot/f_64.png +0 -0
  440. data/doc/dot/f_65.png +0 -0
  441. data/doc/dot/f_66.png +0 -0
  442. data/doc/dot/f_67.png +0 -0
  443. data/vendor/plugins/activerecord_foreign_key_extensions/init.rb +0 -2
  444. data/vendor/plugins/activerecord_foreign_key_extensions/lib/active_record_extensions.rb +0 -215
@@ -5,24 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>works_for_week (Work)</title>
8
+ <title>validate_user? (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 25</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">works_for_week</span>(<span class="ruby-identifier">week_no</span>, <span class="ruby-identifier">user</span>)
15
- <span class="ruby-identifier">first</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">week_no</span>, <span class="ruby-value">1</span>)
16
- <span class="ruby-identifier">last</span> = <span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-value">7</span>
17
- <span class="ruby-identifier">works</span> = <span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;completed_at BETWEEN '#{first.to_time.iso8601}' AND '#{last.to_time.iso8601}'&quot;</span>, <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'completed_at'</span>)
18
- <span class="ruby-identifier">length</span> = <span class="ruby-value">0</span>
19
- <span class="ruby-identifier">works_per_day</span> = (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
20
- <span class="ruby-identifier">works_for_day</span> = <span class="ruby-identifier">works</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">to_date</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">day</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">enable_users?</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">user_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">user</span>.<span class="ruby-identifier">id</span>)) }
21
- <span class="ruby-identifier">length</span> = [<span class="ruby-identifier">length</span>, <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">length</span>].<span class="ruby-identifier">max</span>
22
- <span class="ruby-identifier">works_for_day</span>
23
- <span class="ruby-keyword kw">end</span>
24
- <span class="ruby-identifier">works_per_day</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">works_for_day</span><span class="ruby-operator">|</span> <span class="ruby-identifier">works_for_day</span>[<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>] <span class="ruby-operator">||=</span> <span class="ruby-keyword kw">nil</span>} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
25
- <span class="ruby-identifier">works_by_row</span> = <span class="ruby-identifier">works_per_day</span>.<span class="ruby-identifier">transpose</span>
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 10</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">validate_user?</span>
15
+ <span class="ruby-identifier">task</span>.<span class="ruby-identifier">enable_users?</span>
26
16
  <span class="ruby-keyword kw">end</span></pre>
27
17
  </body>
28
18
  </html>
@@ -5,34 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>work_totals_for_week (Work)</title>
8
+ <title>track_times? (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 44</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">work_totals_for_week</span>(<span class="ruby-identifier">week_no</span>, <span class="ruby-identifier">user_id</span> = <span class="ruby-keyword kw">nil</span>)
15
- <span class="ruby-identifier">first</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">week_no</span>, <span class="ruby-value">1</span>)
16
- <span class="ruby-identifier">last</span> = <span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-value">7</span>
17
- <span class="ruby-identifier">works</span> = <span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;completed_at BETWEEN '#{first.to_time.iso8601}' AND '#{last.to_time.iso8601}'&quot;</span>, <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'completed_at'</span>)
18
- <span class="ruby-identifier">totals_per_backlog</span> = {}
19
- <span class="ruby-constant">Backlog</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">backlog</span><span class="ruby-operator">|</span>
20
- <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>] = [[], []]
21
- (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
22
- <span class="ruby-identifier">works_for_day</span> = <span class="ruby-identifier">works</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">backlog</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">to_date</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">day</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">enable_users</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">user_id</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">user_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">user_id</span>)) }
23
- <span class="ruby-identifier">invoice_works_for_day</span> = <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">invoice?</span> }
24
- <span class="ruby-identifier">internal_works_for_day</span> = <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">invoice?</span> }
25
-
26
- <span class="ruby-identifier">invoice_day_total</span> = <span class="ruby-identifier">invoice_works_for_day</span>.<span class="ruby-identifier">reduce</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">'0'</span>)){<span class="ruby-operator">|</span><span class="ruby-identifier">total</span>, <span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">hours</span>}
27
- <span class="ruby-identifier">internal_day_total</span> = <span class="ruby-identifier">internal_works_for_day</span>.<span class="ruby-identifier">reduce</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">'0'</span>)){<span class="ruby-operator">|</span><span class="ruby-identifier">total</span>, <span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">hours</span>}
28
- <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">invoice_day_total</span>
29
- <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>][<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">internal_day_total</span>
30
- <span class="ruby-keyword kw">end</span>
31
- <span class="ruby-keyword kw">end</span>
32
- <span class="ruby-identifier">totals_per_backlog</span>.<span class="ruby-identifier">reject!</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">backlog_id</span>, <span class="ruby-identifier">day_totals</span><span class="ruby-operator">|</span>
33
- <span class="ruby-operator">!</span><span class="ruby-identifier">day_totals</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">day_total</span><span class="ruby-operator">|</span> <span class="ruby-identifier">day_total</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>} <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">day_totals</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">day_total</span><span class="ruby-operator">|</span> <span class="ruby-identifier">day_total</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>}
34
- <span class="ruby-keyword kw">end</span>
35
- <span class="ruby-identifier">totals_per_backlog</span>
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 14</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">track_times?</span>
15
+ <span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">track_times?</span>
36
16
  <span class="ruby-keyword kw">end</span></pre>
37
17
  </body>
38
18
  </html>
@@ -5,14 +5,24 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>started? (Work)</title>
8
+ <title>works_for_week (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 68</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started?</span>
15
- <span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">nil?</span>
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 25</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">works_for_week</span>(<span class="ruby-identifier">week_no</span>, <span class="ruby-identifier">user</span>)
15
+ <span class="ruby-identifier">first</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">week_no</span>, <span class="ruby-value">1</span>)
16
+ <span class="ruby-identifier">last</span> = <span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-value">7</span>
17
+ <span class="ruby-identifier">works</span> = <span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;completed_at BETWEEN '#{first.to_time.iso8601}' AND '#{last.to_time.iso8601}'&quot;</span>, <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'completed_at'</span>)
18
+ <span class="ruby-identifier">length</span> = <span class="ruby-value">0</span>
19
+ <span class="ruby-identifier">works_per_day</span> = (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
20
+ <span class="ruby-identifier">works_for_day</span> = <span class="ruby-identifier">works</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">to_date</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">day</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">enable_users?</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">user_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">user</span>.<span class="ruby-identifier">id</span>)) }
21
+ <span class="ruby-identifier">length</span> = [<span class="ruby-identifier">length</span>, <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">length</span>].<span class="ruby-identifier">max</span>
22
+ <span class="ruby-identifier">works_for_day</span>
23
+ <span class="ruby-keyword kw">end</span>
24
+ <span class="ruby-identifier">works_per_day</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">works_for_day</span><span class="ruby-operator">|</span> <span class="ruby-identifier">works_for_day</span>[<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>] <span class="ruby-operator">||=</span> <span class="ruby-keyword kw">nil</span>} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
25
+ <span class="ruby-identifier">works_by_row</span> = <span class="ruby-identifier">works_per_day</span>.<span class="ruby-identifier">transpose</span>
16
26
  <span class="ruby-keyword kw">end</span></pre>
17
27
  </body>
18
28
  </html>
@@ -5,14 +5,34 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>started_at_time (Work)</title>
8
+ <title>work_totals_for_week (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 72</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started_at_time</span>
15
- <span class="ruby-identifier">started_at</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">started_at</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%H:%M'</span>)
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 44</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">work_totals_for_week</span>(<span class="ruby-identifier">week_no</span>, <span class="ruby-identifier">user_id</span> = <span class="ruby-keyword kw">nil</span>)
15
+ <span class="ruby-identifier">first</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">week_no</span>, <span class="ruby-value">1</span>)
16
+ <span class="ruby-identifier">last</span> = <span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-value">7</span>
17
+ <span class="ruby-identifier">works</span> = <span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;completed_at BETWEEN '#{first.to_time.iso8601}' AND '#{last.to_time.iso8601}'&quot;</span>, <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'completed_at'</span>)
18
+ <span class="ruby-identifier">totals_per_backlog</span> = {}
19
+ <span class="ruby-constant">Backlog</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">backlog</span><span class="ruby-operator">|</span>
20
+ <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>] = [[], []]
21
+ (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
22
+ <span class="ruby-identifier">works_for_day</span> = <span class="ruby-identifier">works</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">backlog</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">to_date</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">day</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">enable_users</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">user_id</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">user_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">user_id</span>)) }
23
+ <span class="ruby-identifier">invoice_works_for_day</span> = <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">invoice?</span> }
24
+ <span class="ruby-identifier">internal_works_for_day</span> = <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">invoice?</span> }
25
+
26
+ <span class="ruby-identifier">invoice_day_total</span> = <span class="ruby-identifier">invoice_works_for_day</span>.<span class="ruby-identifier">reduce</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">'0'</span>)){<span class="ruby-operator">|</span><span class="ruby-identifier">total</span>, <span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">hours</span>}
27
+ <span class="ruby-identifier">internal_day_total</span> = <span class="ruby-identifier">internal_works_for_day</span>.<span class="ruby-identifier">reduce</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">'0'</span>)){<span class="ruby-operator">|</span><span class="ruby-identifier">total</span>, <span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">hours</span>}
28
+ <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">invoice_day_total</span>
29
+ <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>][<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">internal_day_total</span>
30
+ <span class="ruby-keyword kw">end</span>
31
+ <span class="ruby-keyword kw">end</span>
32
+ <span class="ruby-identifier">totals_per_backlog</span>.<span class="ruby-identifier">reject!</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">backlog_id</span>, <span class="ruby-identifier">day_totals</span><span class="ruby-operator">|</span>
33
+ <span class="ruby-operator">!</span><span class="ruby-identifier">day_totals</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">day_total</span><span class="ruby-operator">|</span> <span class="ruby-identifier">day_total</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>} <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">day_totals</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">day_total</span><span class="ruby-operator">|</span> <span class="ruby-identifier">day_total</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>}
34
+ <span class="ruby-keyword kw">end</span>
35
+ <span class="ruby-identifier">totals_per_backlog</span>
16
36
  <span class="ruby-keyword kw">end</span></pre>
17
37
  </body>
18
38
  </html>
@@ -5,17 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>started_at_time= (Work)</title>
8
+ <title>started? (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 76</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started_at_time=</span>(<span class="ruby-identifier">new_value</span>)
15
- <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;invalid time format: #{new_value}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">new_value</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(\d{2}):(\d{2})/</span>
16
- <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span> = <span class="ruby-identifier">$1</span>, <span class="ruby-identifier">$2</span>
17
- <span class="ruby-identifier">t</span> = <span class="ruby-identifier">started_at</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
18
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">started_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">month</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>, <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span>)
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 68</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started?</span>
15
+ <span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">nil?</span>
19
16
  <span class="ruby-keyword kw">end</span></pre>
20
17
  </body>
21
18
  </html>
@@ -5,14 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>completed_at_time (Work)</title>
8
+ <title>started_at_time (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 83</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">completed_at_time</span>
15
- <span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%H:%M'</span>)
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 72</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started_at_time</span>
15
+ <span class="ruby-identifier">started_at</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">started_at</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%H:%M'</span>)
16
16
  <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -5,17 +5,17 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>completed_at_time= (Work)</title>
8
+ <title>started_at_time= (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 87</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">completed_at_time=</span>(<span class="ruby-identifier">new_value</span>)
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 76</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started_at_time=</span>(<span class="ruby-identifier">new_value</span>)
15
15
  <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;invalid time format: #{new_value}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">new_value</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(\d{2}):(\d{2})/</span>
16
16
  <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span> = <span class="ruby-identifier">$1</span>, <span class="ruby-identifier">$2</span>
17
- <span class="ruby-identifier">t</span> = <span class="ruby-identifier">completed_at</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
18
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">completed_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">month</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>, <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span>)
17
+ <span class="ruby-identifier">t</span> = <span class="ruby-identifier">started_at</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
18
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">started_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">month</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>, <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span>)
19
19
  <span class="ruby-keyword kw">end</span></pre>
20
20
  </body>
21
21
  </html>
@@ -5,14 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>validate_user? (Work)</title>
8
+ <title>completed_at_time (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 10</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">validate_user?</span>
15
- <span class="ruby-identifier">task</span>.<span class="ruby-identifier">enable_users?</span>
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 83</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">completed_at_time</span>
15
+ <span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%H:%M'</span>)
16
16
  <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -5,14 +5,17 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>track_times? (Work)</title>
8
+ <title>completed_at_time= (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 14</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">track_times?</span>
15
- <span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">track_times?</span>
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 87</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">completed_at_time=</span>(<span class="ruby-identifier">new_value</span>)
15
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;invalid time format: #{new_value}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">new_value</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(\d{2}):(\d{2})/</span>
16
+ <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span> = <span class="ruby-identifier">$1</span>, <span class="ruby-identifier">$2</span>
17
+ <span class="ruby-identifier">t</span> = <span class="ruby-identifier">completed_at</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
18
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">completed_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">month</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>, <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span>)
16
19
  <span class="ruby-keyword kw">end</span></pre>
17
20
  </body>
18
21
  </html>
@@ -5,24 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>works_for_week (Work)</title>
8
+ <title>validate_user? (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 25</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">works_for_week</span>(<span class="ruby-identifier">week_no</span>, <span class="ruby-identifier">user</span>)
15
- <span class="ruby-identifier">first</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">week_no</span>, <span class="ruby-value">1</span>)
16
- <span class="ruby-identifier">last</span> = <span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-value">7</span>
17
- <span class="ruby-identifier">works</span> = <span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;completed_at BETWEEN '#{first.to_time.iso8601}' AND '#{last.to_time.iso8601}'&quot;</span>, <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'completed_at'</span>)
18
- <span class="ruby-identifier">length</span> = <span class="ruby-value">0</span>
19
- <span class="ruby-identifier">works_per_day</span> = (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
20
- <span class="ruby-identifier">works_for_day</span> = <span class="ruby-identifier">works</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">to_date</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">day</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">enable_users?</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">user_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">user</span>.<span class="ruby-identifier">id</span>)) }
21
- <span class="ruby-identifier">length</span> = [<span class="ruby-identifier">length</span>, <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">length</span>].<span class="ruby-identifier">max</span>
22
- <span class="ruby-identifier">works_for_day</span>
23
- <span class="ruby-keyword kw">end</span>
24
- <span class="ruby-identifier">works_per_day</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">works_for_day</span><span class="ruby-operator">|</span> <span class="ruby-identifier">works_for_day</span>[<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>] <span class="ruby-operator">||=</span> <span class="ruby-keyword kw">nil</span>} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
25
- <span class="ruby-identifier">works_by_row</span> = <span class="ruby-identifier">works_per_day</span>.<span class="ruby-identifier">transpose</span>
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 10</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">validate_user?</span>
15
+ <span class="ruby-identifier">task</span>.<span class="ruby-identifier">enable_users?</span>
26
16
  <span class="ruby-keyword kw">end</span></pre>
27
17
  </body>
28
18
  </html>
@@ -5,34 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>work_totals_for_week (Work)</title>
8
+ <title>track_times? (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 44</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">work_totals_for_week</span>(<span class="ruby-identifier">week_no</span>, <span class="ruby-identifier">user_id</span> = <span class="ruby-keyword kw">nil</span>)
15
- <span class="ruby-identifier">first</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">week_no</span>, <span class="ruby-value">1</span>)
16
- <span class="ruby-identifier">last</span> = <span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-value">7</span>
17
- <span class="ruby-identifier">works</span> = <span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;completed_at BETWEEN '#{first.to_time.iso8601}' AND '#{last.to_time.iso8601}'&quot;</span>, <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'completed_at'</span>)
18
- <span class="ruby-identifier">totals_per_backlog</span> = {}
19
- <span class="ruby-constant">Backlog</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">backlog</span><span class="ruby-operator">|</span>
20
- <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>] = [[], []]
21
- (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
22
- <span class="ruby-identifier">works_for_day</span> = <span class="ruby-identifier">works</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">backlog</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">to_date</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">day</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">enable_users</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">user_id</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">user_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">user_id</span>)) }
23
- <span class="ruby-identifier">invoice_works_for_day</span> = <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">invoice?</span> }
24
- <span class="ruby-identifier">internal_works_for_day</span> = <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">invoice?</span> }
25
-
26
- <span class="ruby-identifier">invoice_day_total</span> = <span class="ruby-identifier">invoice_works_for_day</span>.<span class="ruby-identifier">reduce</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">'0'</span>)){<span class="ruby-operator">|</span><span class="ruby-identifier">total</span>, <span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">hours</span>}
27
- <span class="ruby-identifier">internal_day_total</span> = <span class="ruby-identifier">internal_works_for_day</span>.<span class="ruby-identifier">reduce</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">'0'</span>)){<span class="ruby-operator">|</span><span class="ruby-identifier">total</span>, <span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">hours</span>}
28
- <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">invoice_day_total</span>
29
- <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>][<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">internal_day_total</span>
30
- <span class="ruby-keyword kw">end</span>
31
- <span class="ruby-keyword kw">end</span>
32
- <span class="ruby-identifier">totals_per_backlog</span>.<span class="ruby-identifier">reject!</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">backlog_id</span>, <span class="ruby-identifier">day_totals</span><span class="ruby-operator">|</span>
33
- <span class="ruby-operator">!</span><span class="ruby-identifier">day_totals</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">day_total</span><span class="ruby-operator">|</span> <span class="ruby-identifier">day_total</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>} <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">day_totals</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">day_total</span><span class="ruby-operator">|</span> <span class="ruby-identifier">day_total</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>}
34
- <span class="ruby-keyword kw">end</span>
35
- <span class="ruby-identifier">totals_per_backlog</span>
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 14</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">track_times?</span>
15
+ <span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">track_times?</span>
36
16
  <span class="ruby-keyword kw">end</span></pre>
37
17
  </body>
38
18
  </html>
@@ -5,14 +5,24 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>started? (Work)</title>
8
+ <title>works_for_week (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 68</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started?</span>
15
- <span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">nil?</span>
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 25</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">works_for_week</span>(<span class="ruby-identifier">week_no</span>, <span class="ruby-identifier">user</span>)
15
+ <span class="ruby-identifier">first</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">week_no</span>, <span class="ruby-value">1</span>)
16
+ <span class="ruby-identifier">last</span> = <span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-value">7</span>
17
+ <span class="ruby-identifier">works</span> = <span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;completed_at BETWEEN '#{first.to_time.iso8601}' AND '#{last.to_time.iso8601}'&quot;</span>, <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'completed_at'</span>)
18
+ <span class="ruby-identifier">length</span> = <span class="ruby-value">0</span>
19
+ <span class="ruby-identifier">works_per_day</span> = (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
20
+ <span class="ruby-identifier">works_for_day</span> = <span class="ruby-identifier">works</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">to_date</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">day</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">enable_users?</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">user_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">user</span>.<span class="ruby-identifier">id</span>)) }
21
+ <span class="ruby-identifier">length</span> = [<span class="ruby-identifier">length</span>, <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">length</span>].<span class="ruby-identifier">max</span>
22
+ <span class="ruby-identifier">works_for_day</span>
23
+ <span class="ruby-keyword kw">end</span>
24
+ <span class="ruby-identifier">works_per_day</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">works_for_day</span><span class="ruby-operator">|</span> <span class="ruby-identifier">works_for_day</span>[<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>] <span class="ruby-operator">||=</span> <span class="ruby-keyword kw">nil</span>} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
25
+ <span class="ruby-identifier">works_by_row</span> = <span class="ruby-identifier">works_per_day</span>.<span class="ruby-identifier">transpose</span>
16
26
  <span class="ruby-keyword kw">end</span></pre>
17
27
  </body>
18
28
  </html>
@@ -5,14 +5,34 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>started_at_time (Work)</title>
8
+ <title>work_totals_for_week (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 72</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started_at_time</span>
15
- <span class="ruby-identifier">started_at</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">started_at</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%H:%M'</span>)
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 44</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">work_totals_for_week</span>(<span class="ruby-identifier">week_no</span>, <span class="ruby-identifier">user_id</span> = <span class="ruby-keyword kw">nil</span>)
15
+ <span class="ruby-identifier">first</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">week_no</span>, <span class="ruby-value">1</span>)
16
+ <span class="ruby-identifier">last</span> = <span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-value">7</span>
17
+ <span class="ruby-identifier">works</span> = <span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;completed_at BETWEEN '#{first.to_time.iso8601}' AND '#{last.to_time.iso8601}'&quot;</span>, <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'completed_at'</span>)
18
+ <span class="ruby-identifier">totals_per_backlog</span> = {}
19
+ <span class="ruby-constant">Backlog</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">backlog</span><span class="ruby-operator">|</span>
20
+ <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>] = [[], []]
21
+ (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
22
+ <span class="ruby-identifier">works_for_day</span> = <span class="ruby-identifier">works</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">backlog</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">to_date</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">first</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">day</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">enable_users</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">user_id</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">user_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">user_id</span>)) }
23
+ <span class="ruby-identifier">invoice_works_for_day</span> = <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">invoice?</span> }
24
+ <span class="ruby-identifier">internal_works_for_day</span> = <span class="ruby-identifier">works_for_day</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-operator">!</span><span class="ruby-identifier">work</span>.<span class="ruby-identifier">invoice?</span> }
25
+
26
+ <span class="ruby-identifier">invoice_day_total</span> = <span class="ruby-identifier">invoice_works_for_day</span>.<span class="ruby-identifier">reduce</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">'0'</span>)){<span class="ruby-operator">|</span><span class="ruby-identifier">total</span>, <span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">hours</span>}
27
+ <span class="ruby-identifier">internal_day_total</span> = <span class="ruby-identifier">internal_works_for_day</span>.<span class="ruby-identifier">reduce</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">'0'</span>)){<span class="ruby-operator">|</span><span class="ruby-identifier">total</span>, <span class="ruby-identifier">work</span><span class="ruby-operator">|</span> <span class="ruby-identifier">total</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">work</span>.<span class="ruby-identifier">hours</span>}
28
+ <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">invoice_day_total</span>
29
+ <span class="ruby-identifier">totals_per_backlog</span>[<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">id</span>][<span class="ruby-value">1</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">internal_day_total</span>
30
+ <span class="ruby-keyword kw">end</span>
31
+ <span class="ruby-keyword kw">end</span>
32
+ <span class="ruby-identifier">totals_per_backlog</span>.<span class="ruby-identifier">reject!</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">backlog_id</span>, <span class="ruby-identifier">day_totals</span><span class="ruby-operator">|</span>
33
+ <span class="ruby-operator">!</span><span class="ruby-identifier">day_totals</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">day_total</span><span class="ruby-operator">|</span> <span class="ruby-identifier">day_total</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>} <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">day_totals</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">day_total</span><span class="ruby-operator">|</span> <span class="ruby-identifier">day_total</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>}
34
+ <span class="ruby-keyword kw">end</span>
35
+ <span class="ruby-identifier">totals_per_backlog</span>
16
36
  <span class="ruby-keyword kw">end</span></pre>
17
37
  </body>
18
38
  </html>
@@ -5,17 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>started_at_time= (Work)</title>
8
+ <title>started? (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 76</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started_at_time=</span>(<span class="ruby-identifier">new_value</span>)
15
- <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;invalid time format: #{new_value}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">new_value</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(\d{2}):(\d{2})/</span>
16
- <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span> = <span class="ruby-identifier">$1</span>, <span class="ruby-identifier">$2</span>
17
- <span class="ruby-identifier">t</span> = <span class="ruby-identifier">started_at</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
18
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">started_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">month</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>, <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span>)
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 68</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started?</span>
15
+ <span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">nil?</span>
19
16
  <span class="ruby-keyword kw">end</span></pre>
20
17
  </body>
21
18
  </html>
@@ -5,14 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>completed_at_time (Work)</title>
8
+ <title>started_at_time (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 83</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">completed_at_time</span>
15
- <span class="ruby-identifier">completed_at</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%H:%M'</span>)
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 72</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started_at_time</span>
15
+ <span class="ruby-identifier">started_at</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">started_at</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%H:%M'</span>)
16
16
  <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -5,17 +5,17 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>completed_at_time= (Work)</title>
8
+ <title>started_at_time= (Work)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 87</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">completed_at_time=</span>(<span class="ruby-identifier">new_value</span>)
13
+ <pre><span class="ruby-comment cmt"># File app/models/work.rb, line 76</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started_at_time=</span>(<span class="ruby-identifier">new_value</span>)
15
15
  <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;invalid time format: #{new_value}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">new_value</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(\d{2}):(\d{2})/</span>
16
16
  <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span> = <span class="ruby-identifier">$1</span>, <span class="ruby-identifier">$2</span>
17
- <span class="ruby-identifier">t</span> = <span class="ruby-identifier">completed_at</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
18
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">completed_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">month</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>, <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span>)
17
+ <span class="ruby-identifier">t</span> = <span class="ruby-identifier">started_at</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
18
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">started_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">month</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>, <span class="ruby-identifier">new_hour</span>, <span class="ruby-identifier">new_minutes</span>)
19
19
  <span class="ruby-keyword kw">end</span></pre>
20
20
  </body>
21
21
  </html>