rsence-pre 2.1.0.1.pre

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 (313) hide show
  1. data/.yardopts +10 -0
  2. data/INSTALL.rdoc +330 -0
  3. data/LICENSE.txt +622 -0
  4. data/README.rdoc +98 -0
  5. data/VERSION +1 -0
  6. data/bin/rsence +25 -0
  7. data/bin/rsence-pre +25 -0
  8. data/conf/default_conf.yaml +346 -0
  9. data/conf/default_strings.yaml +76 -0
  10. data/conf/rsence_command_strings.yaml +444 -0
  11. data/docs/ExampleGuiPlugin.rdoc +193 -0
  12. data/docs/JavascriptBundles.rdoc +0 -0
  13. data/docs/PluginBundleInfo.rdoc +173 -0
  14. data/docs/PluginBundles.rdoc +96 -0
  15. data/docs/Values.rdoc +163 -0
  16. data/js/comm/autosync/autosync.js +17 -0
  17. data/js/comm/autosync/js.inc +0 -0
  18. data/js/comm/comm.js +203 -0
  19. data/js/comm/js.inc +0 -0
  20. data/js/comm/jsloader/js.inc +0 -0
  21. data/js/comm/jsloader/jsloader.js +112 -0
  22. data/js/comm/queue/js.inc +0 -0
  23. data/js/comm/queue/queue.js +184 -0
  24. data/js/comm/session/js.inc +0 -0
  25. data/js/comm/session/session.js +52 -0
  26. data/js/comm/sessionwatcher/js.inc +0 -0
  27. data/js/comm/sessionwatcher/sessionwatcher.js +44 -0
  28. data/js/comm/transporter/js.inc +0 -0
  29. data/js/comm/transporter/transporter.js +261 -0
  30. data/js/comm/urlresponder/js.inc +0 -0
  31. data/js/comm/urlresponder/urlresponder.js +149 -0
  32. data/js/comm/values/js.inc +0 -0
  33. data/js/comm/values/values.js +433 -0
  34. data/js/controls/button/button.js +72 -0
  35. data/js/controls/button/js.inc +0 -0
  36. data/js/controls/button/themes/bright/button.css +89 -0
  37. data/js/controls/button/themes/bright/button.html +7 -0
  38. data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
  39. data/js/controls/button/themes/bright/button_parts1.png +0 -0
  40. data/js/controls/button/themes/default/button.css +89 -0
  41. data/js/controls/button/themes/default/button.html +7 -0
  42. data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
  43. data/js/controls/button/themes/default/button_parts1.png +0 -0
  44. data/js/controls/checkbox/checkbox.js +49 -0
  45. data/js/controls/checkbox/js.inc +0 -0
  46. data/js/controls/checkbox/themes/default/checkbox.css +69 -0
  47. data/js/controls/checkbox/themes/default/checkbox.html +5 -0
  48. data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
  49. data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
  50. data/js/controls/dialogs/alert_sheet/alert_sheet.js +63 -0
  51. data/js/controls/dialogs/alert_sheet/js.inc +0 -0
  52. data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +37 -0
  53. data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
  54. data/js/controls/dialogs/sheet/js.inc +0 -0
  55. data/js/controls/dialogs/sheet/sheet.js +84 -0
  56. data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
  57. data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
  58. data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
  59. data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
  60. data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
  61. data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
  62. data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
  63. data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
  64. data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
  65. data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
  66. data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
  67. data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
  68. data/js/controls/imageview/imageview.js +109 -0
  69. data/js/controls/imageview/js.inc +0 -0
  70. data/js/controls/imageview/themes/default/blank.gif +0 -0
  71. data/js/controls/passwordcontrol/js.inc +0 -0
  72. data/js/controls/passwordcontrol/passwordcontrol.js +23 -0
  73. data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
  74. data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
  75. data/js/controls/progress/progressbar/js.inc +0 -0
  76. data/js/controls/progress/progressbar/progressbar.js +40 -0
  77. data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
  78. data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
  79. data/js/controls/progress/progressindicator/js.inc +0 -0
  80. data/js/controls/progress/progressindicator/progressindicator.js +44 -0
  81. data/js/controls/radiobutton/js.inc +0 -0
  82. data/js/controls/radiobutton/radiobutton.js +43 -0
  83. data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
  84. data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
  85. data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
  86. data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
  87. data/js/controls/sliders/slider/js.inc +0 -0
  88. data/js/controls/sliders/slider/slider.js +357 -0
  89. data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
  90. data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
  91. data/js/controls/sliders/slider/themes/default/slider.css +108 -0
  92. data/js/controls/sliders/slider/themes/default/slider.html +5 -0
  93. data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
  94. data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
  95. data/js/controls/sliders/vslider/js.inc +0 -0
  96. data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
  97. data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
  98. data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
  99. data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
  100. data/js/controls/sliders/vslider/vslider.js +41 -0
  101. data/js/controls/stepper/js.inc +0 -0
  102. data/js/controls/stepper/stepper.js +213 -0
  103. data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
  104. data/js/controls/stepper/themes/default/stepper.css +14 -0
  105. data/js/controls/stepper/themes/default/stepper.html +2 -0
  106. data/js/controls/stepper/themes/default/stepper.png +0 -0
  107. data/js/controls/stringview/js.inc +0 -0
  108. data/js/controls/stringview/stringview.js +49 -0
  109. data/js/controls/stringview/themes/default/stringview.css +8 -0
  110. data/js/controls/stringview/themes/default/stringview.html +1 -0
  111. data/js/controls/tab/js.inc +0 -0
  112. data/js/controls/tab/tab.js +280 -0
  113. data/js/controls/tab/themes/bright/tab.css +76 -0
  114. data/js/controls/tab/themes/bright/tab.html +6 -0
  115. data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
  116. data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
  117. data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
  118. data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
  119. data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
  120. data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
  121. data/js/controls/tab/themes/default/tab.css +77 -0
  122. data/js/controls/tab/themes/default/tab.html +6 -0
  123. data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
  124. data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
  125. data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
  126. data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
  127. data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
  128. data/js/controls/tab/themes/default/tab_parts1.png +0 -0
  129. data/js/controls/textarea/js.inc +0 -0
  130. data/js/controls/textarea/textarea.js +24 -0
  131. data/js/controls/textarea/themes/default/textarea.css +21 -0
  132. data/js/controls/textarea/themes/default/textarea.html +18 -0
  133. data/js/controls/textcontrol/js.inc +0 -0
  134. data/js/controls/textcontrol/textcontrol.js +374 -0
  135. data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
  136. data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
  137. data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
  138. data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
  139. data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
  140. data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
  141. data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
  142. data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
  143. data/js/controls/uploader/js.inc +0 -0
  144. data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
  145. data/js/controls/uploader/themes/default/uploader.css +108 -0
  146. data/js/controls/uploader/themes/default/uploader.html +27 -0
  147. data/js/controls/uploader/uploader.js +154 -0
  148. data/js/controls/validatorview/js.inc +0 -0
  149. data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
  150. data/js/controls/validatorview/themes/default/validator.png +0 -0
  151. data/js/controls/validatorview/themes/default/validatorview.css +0 -0
  152. data/js/controls/validatorview/themes/default/validatorview.html +0 -0
  153. data/js/controls/validatorview/validatorview.js +62 -0
  154. data/js/controls/window/js.inc +0 -0
  155. data/js/controls/window/themes/default/window.css +219 -0
  156. data/js/controls/window/themes/default/window.html +17 -0
  157. data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
  158. data/js/controls/window/themes/default/window_bg_active.png +0 -0
  159. data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
  160. data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
  161. data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
  162. data/js/controls/window/themes/default/window_buttons.png +0 -0
  163. data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
  164. data/js/controls/window/themes/default/window_parts1.png +0 -0
  165. data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
  166. data/js/controls/window/themes/default/window_parts2.png +0 -0
  167. data/js/controls/window/window.js +286 -0
  168. data/js/core/class/class.js +318 -0
  169. data/js/core/class/js.inc +0 -0
  170. data/js/core/elem/elem.js +1383 -0
  171. data/js/core/elem/js.inc +0 -0
  172. data/js/core/event/event.js +153 -0
  173. data/js/core/event/js.inc +0 -0
  174. data/js/core/iefix/ie_css_element.htc +5 -0
  175. data/js/core/iefix/ie_css_style.htc +5 -0
  176. data/js/core/iefix/iefix.js +359 -0
  177. data/js/core/iefix/js.inc +0 -0
  178. data/js/core/rsence_ns/js.inc +0 -0
  179. data/js/core/rsence_ns/rsence_ns.js +21 -0
  180. data/js/datetime/calendar/calendar.js +198 -0
  181. data/js/datetime/calendar/js.inc +0 -0
  182. data/js/datetime/calendar/themes/default/calendar.css +108 -0
  183. data/js/datetime/calendar/themes/default/calendar.html +9 -0
  184. data/js/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
  185. data/js/datetime/calendar/themes/default/calendar_arrows.png +0 -0
  186. data/js/datetime/datetimevalue/datetimevalue.js +247 -0
  187. data/js/datetime/datetimevalue/js.inc +0 -0
  188. data/js/datetime/timesheet/js.inc +0 -0
  189. data/js/datetime/timesheet/themes/default/timesheet.css +30 -0
  190. data/js/datetime/timesheet/themes/default/timesheet.html +2 -0
  191. data/js/datetime/timesheet/timesheet.js +183 -0
  192. data/js/datetime/timesheet_item/js.inc +0 -0
  193. data/js/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
  194. data/js/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
  195. data/js/datetime/timesheet_item/timesheet_item.js +248 -0
  196. data/js/datetime/timesheet_item_edit/js.inc +0 -0
  197. data/js/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
  198. data/js/foundation/application/application.js +208 -0
  199. data/js/foundation/application/js.inc +0 -0
  200. data/js/foundation/control/control.js +339 -0
  201. data/js/foundation/control/controldefaults/controldefaults.js +56 -0
  202. data/js/foundation/control/controldefaults/js.inc +0 -0
  203. data/js/foundation/control/dummyvalue/dummyvalue.js +51 -0
  204. data/js/foundation/control/dummyvalue/js.inc +0 -0
  205. data/js/foundation/control/dyncontrol/dyncontrol.js +500 -0
  206. data/js/foundation/control/dyncontrol/js.inc +0 -0
  207. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
  208. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
  209. data/js/foundation/control/eventresponder/eventresponder.js +750 -0
  210. data/js/foundation/control/eventresponder/js.inc +0 -0
  211. data/js/foundation/control/js.inc +0 -0
  212. data/js/foundation/control/valuematrix/js.inc +0 -0
  213. data/js/foundation/control/valuematrix/valuematrix.js +135 -0
  214. data/js/foundation/control/valueresponder/js.inc +0 -0
  215. data/js/foundation/control/valueresponder/valueresponder.js +79 -0
  216. data/js/foundation/eventmanager/eventmanager.js +991 -0
  217. data/js/foundation/eventmanager/js.inc +0 -0
  218. data/js/foundation/geom/point/js.inc +0 -0
  219. data/js/foundation/geom/point/point.js +202 -0
  220. data/js/foundation/geom/rect/js.inc +0 -0
  221. data/js/foundation/geom/rect/rect.js +651 -0
  222. data/js/foundation/json_renderer/js.inc +0 -0
  223. data/js/foundation/json_renderer/json_renderer.js +246 -0
  224. data/js/foundation/system/js.inc +0 -0
  225. data/js/foundation/system/system.js +381 -0
  226. data/js/foundation/thememanager/js.inc +0 -0
  227. data/js/foundation/thememanager/thememanager.js +393 -0
  228. data/js/foundation/value/js.inc +0 -0
  229. data/js/foundation/value/value.js +183 -0
  230. data/js/foundation/view/js.inc +0 -0
  231. data/js/foundation/view/markupview/js.inc +0 -0
  232. data/js/foundation/view/markupview/markupview.js +114 -0
  233. data/js/foundation/view/morphanimation/js.inc +0 -0
  234. data/js/foundation/view/morphanimation/morphanimation.js +237 -0
  235. data/js/foundation/view/view.js +1812 -0
  236. data/js/foundation/view/viewdefaults/js.inc +0 -0
  237. data/js/foundation/view/viewdefaults/viewdefaults.js +26 -0
  238. data/js/lists/checkboxlist/checkboxlist.js +171 -0
  239. data/js/lists/checkboxlist/js.inc +0 -0
  240. data/js/lists/listitems/js.inc +0 -0
  241. data/js/lists/listitems/listitems.js +88 -0
  242. data/js/lists/propertylist/js.inc +0 -0
  243. data/js/lists/propertylist/propertylist.js +326 -0
  244. data/js/lists/radiobuttonlist/js.inc +0 -0
  245. data/js/lists/radiobuttonlist/radiobuttonlist.js +116 -0
  246. data/js/util/reloadapp/js.inc +0 -0
  247. data/js/util/reloadapp/reloadapp.js +152 -0
  248. data/js/util/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
  249. data/js/util/reloadapp/themes/default/reloadapp_warning.png +0 -0
  250. data/js/util/sha/js.inc +0 -0
  251. data/js/util/sha/sha.js +426 -0
  252. data/js/views/centerview/centerview.js +75 -0
  253. data/js/views/centerview/js.inc +0 -0
  254. data/js/views/inlineview/inlineview.js +15 -0
  255. data/js/views/inlineview/js.inc +0 -0
  256. data/js/views/scrollview/js.inc +0 -0
  257. data/js/views/scrollview/scrollview.js +40 -0
  258. data/lib/conf/argv.rb +850 -0
  259. data/lib/conf/default.rb +219 -0
  260. data/lib/daemon/daemon.rb +387 -0
  261. data/lib/daemon/sigcomm.rb +64 -0
  262. data/lib/http/broker.rb +150 -0
  263. data/lib/http/rackup.rb +91 -0
  264. data/lib/http/request.rb +66 -0
  265. data/lib/http/response.rb +65 -0
  266. data/lib/plugins/dependencies.rb +285 -0
  267. data/lib/plugins/gui_plugin.rb +160 -0
  268. data/lib/plugins/guiparser.rb +123 -0
  269. data/lib/plugins/plugin.rb +438 -0
  270. data/lib/plugins/plugin_base.rb +162 -0
  271. data/lib/plugins/plugin_plugins.rb +81 -0
  272. data/lib/plugins/plugin_sqlite_db.rb +98 -0
  273. data/lib/plugins/pluginmanager.rb +635 -0
  274. data/lib/plugins/plugins.rb +169 -0
  275. data/lib/plugins/servlet.rb +108 -0
  276. data/lib/rsence.rb +32 -0
  277. data/lib/session/msg.rb +327 -0
  278. data/lib/session/sessionmanager.rb +522 -0
  279. data/lib/session/sessionstorage.rb +340 -0
  280. data/lib/transporter/transporter.rb +263 -0
  281. data/lib/util/gzstring.rb +9 -0
  282. data/lib/util/ruby19_fixes.rb +18 -0
  283. data/lib/values/hvalue.rb +378 -0
  284. data/lib/values/valuemanager.rb +172 -0
  285. data/plugins/client_pkg/client_pkg.rb +157 -0
  286. data/plugins/client_pkg/info.yaml +25 -0
  287. data/plugins/client_pkg/lib/client_pkg_build.rb +561 -0
  288. data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
  289. data/plugins/client_pkg/lib/client_pkg_serve.rb +218 -0
  290. data/plugins/index_html/img/loading.gif +0 -0
  291. data/plugins/index_html/img/riassence.gif +0 -0
  292. data/plugins/index_html/index_html.rb +120 -0
  293. data/plugins/index_html/info.yaml +18 -0
  294. data/plugins/index_html/tmpl/index.html +15 -0
  295. data/plugins/main/info.yaml +18 -0
  296. data/plugins/main/js/main.js +84 -0
  297. data/plugins/main/main.rb +255 -0
  298. data/plugins/main/values.yaml +8 -0
  299. data/plugins/ticket/info.yaml +21 -0
  300. data/plugins/ticket/lib/common.rb +392 -0
  301. data/plugins/ticket/lib/favicon.rb +39 -0
  302. data/plugins/ticket/lib/file.rb +58 -0
  303. data/plugins/ticket/lib/img.rb +50 -0
  304. data/plugins/ticket/lib/objblob.rb +66 -0
  305. data/plugins/ticket/lib/rsrc.rb +34 -0
  306. data/plugins/ticket/lib/upload.rb +236 -0
  307. data/plugins/ticket/ticket.rb +333 -0
  308. data/setup/welcome/gui/welcome.yaml +92 -0
  309. data/setup/welcome/info.yaml +13 -0
  310. data/setup/welcome/text/welcome.html +9 -0
  311. data/setup/welcome/values.yaml +9 -0
  312. data/setup/welcome/welcome.rb +54 -0
  313. metadata +407 -0
@@ -0,0 +1,183 @@
1
+ /* RSence
2
+ * Copyright 2009 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+ /*** = Description
10
+ ** HTimesheet is a simple timesheet control.
11
+ ***/
12
+ var//RSence.DateTime
13
+ HTimeSheet = HControl.extend({
14
+ componentName: 'timesheet',
15
+ pxPerHour: 24,
16
+ itemOffsetLeft: 36,
17
+ itemOffsetRight: 0,
18
+ /** = Description
19
+ * Redraws the timesheet.
20
+ *
21
+ **/
22
+ refresh: function(){
23
+ if(this.drawn){
24
+ var _areaHeight = this.rect.height;
25
+ this.pxPerHour = (_areaHeight-(_areaHeight%48)) / 24;
26
+ if(this.options['hideLabel']){
27
+ this.setStyleOfPart( 'label', 'display', 'none' );
28
+ this.setStyleOfPart( 'state', 'left', '0px' );
29
+ this.itemOffsetLeft = 0;
30
+ }
31
+ else{
32
+ this.setStyleOfPart( 'label', 'height', (this.pxPerHour*24)+'px' );
33
+ }
34
+ this.setStyleOfPart( 'state', 'height', (this.pxPerHour*24)+'px' );
35
+ }
36
+ this.base();
37
+ },
38
+
39
+ /** = Description
40
+ * Refreshes the hour labels.
41
+ *
42
+ **/
43
+ refreshLabel: function(){
44
+ var hour = 1,
45
+ hours = [],
46
+ rowHeight = this.pxPerHour;
47
+ lineHeight = Math.round(this.pxPerHour/2);
48
+ for(; hour < 24; hour++){
49
+ hours.push('<div style="line-height:'+rowHeight+'px;height:'+rowHeight+'px;top:'+Math.round((hour*rowHeight)-lineHeight)+'px" class="timesheet_hours_row">'+hour+':00</div>');
50
+ }
51
+ this.markupElemIds && this.markupElemIds.label && ELEM.setHTML(this.markupElemIds.label,hours.join(''));
52
+ this.refreshState();
53
+ },
54
+
55
+ /** = Description
56
+ * Refreshes the lines which mark hours and half-hours.
57
+ *
58
+ **/
59
+ refreshState: function(){
60
+ var line = 0,
61
+ lines = [],
62
+ lineHeight = Math.round(this.pxPerHour/2);
63
+ for(; line < 48; line++){
64
+ lines.push('<div style="top:'+(line*lineHeight)+'px" class="timesheet_lines_row'+(line%2)+'"></div>');
65
+ }
66
+ this.markupElemIds && this.markupElemIds.label && ELEM.setHTML(this.markupElemIds.state,lines.join(''));
67
+ },
68
+ dragItem: false,
69
+
70
+ /** = Description
71
+ * Creates an item into timesheet with default label 'New Item'.
72
+ *
73
+ * = Parameters
74
+ * +origY+:: Y coordinate of the new item.
75
+ *
76
+ **/
77
+ createItem: function(origY){
78
+ var _lineHeight = Math.round(this.pxPerHour/2);
79
+ origY = Math.floor( origY / _lineHeight )*_lineHeight;
80
+ var maxY = _lineHeight*48,
81
+ lineHeight = Math.round(this.pxPerHour/2);
82
+ if(origY>maxY){
83
+ origY = maxY;
84
+ }
85
+ var item = HTimeSheetItem.nu(
86
+ this.createItemRect(origY,lineHeight),
87
+ this, {
88
+ label: 'New Item',
89
+ events: {
90
+ draggable: true
91
+ }
92
+ }
93
+ );
94
+ this.dragItem = item;
95
+ },
96
+
97
+ /** = Description
98
+ * Dragging is used to mark items on the timesheet.
99
+ *
100
+ * = Parameters
101
+ * +x+:: x coordinate of the origin of drag
102
+ * +y+:: y coordinate of the origin of drag
103
+ *
104
+ **/
105
+ startDrag: function(x,y){
106
+ this.createItem(y-this.pageY());
107
+ EVENT.startDragging( this.dragItem );
108
+ },
109
+ listItemViews: false,
110
+
111
+ /** = Description
112
+ * Sets the editor given as parameter as the editor of instance.
113
+ *
114
+ * = Parameters
115
+ * +_editor+::
116
+ *
117
+ **/
118
+ setEditor: function( _editor ){
119
+ this.editor = _editor;
120
+ },
121
+
122
+ /** = Description
123
+ * Returns HRect the size of given parameters and suitable for timesheet.
124
+ *
125
+ * = Parameters
126
+ * +_origY+:: Y coordinate.
127
+ * +_lineHeight+:: The height of item on time sheet.
128
+ *
129
+ **/
130
+ createItemRect: function(_origY, _lineHeight){
131
+ var _left = this.itemOffsetLeft,
132
+ _top = _origY,
133
+ _right = this.rect.width - this.itemOffsetRight,
134
+ _bottom = _origY + _lineHeight;
135
+ return HRect.nu( _left, _top, _right, _bottom );
136
+ },
137
+
138
+ /** = Description
139
+ * Destructor; destroys the editor first and commences inherited die.
140
+ *
141
+ **/
142
+ die: function(){
143
+ this.editor.die();
144
+ this.base();
145
+ },
146
+
147
+ /** = Description
148
+ * Redraws and refreshes the values on timesheet.
149
+ *
150
+ **/
151
+ refreshValue: function(){
152
+ var _data = this.value, i;
153
+ if(this.listItemViews === false){
154
+ this.listItemViews = [];
155
+ }
156
+ if(this.listItemViews.length !== 0){
157
+ for( i=0; i<this.listItemViews.length; i++){
158
+ this.listItemViews[i].die();
159
+ }
160
+ this.listItemViews = [];
161
+ }
162
+ if(_data instanceof Array){
163
+ var _value, _label, _item;
164
+ for( i=0; i<_data.length; i++){
165
+ _value = _data[i];
166
+ _label = _value['label'];
167
+ _item = HTimeSheetItem.nu(
168
+ this.createItemRect( 0, 12 ),
169
+ this, {
170
+ label: _label,
171
+ value: _value,
172
+ events: {
173
+ draggable: true
174
+ }
175
+ }
176
+ );
177
+ _item.dragMode = 'normal';
178
+ this.listItemViews.push( _item );
179
+ }
180
+ }
181
+ }
182
+ });
183
+
File without changes
@@ -0,0 +1,42 @@
1
+ .timesheet_item,
2
+ .timesheet_item_middle,
3
+ .timesheet_item_label,
4
+ .timesheet_item_resize_top,
5
+ .timesheet_item_move,
6
+ .timesheet_item_resize_bottom {
7
+ position: absolute;
8
+ left: 0px; right: 0px;
9
+ }
10
+ .timesheet_item {
11
+ top: 0px; bottom: 0px;
12
+ border: 1px solid #c00;
13
+ background-color: #c66;
14
+ opacity: 0.75;
15
+ }
16
+ .active .timesheet_item {
17
+ opacity: 1.0;
18
+ }
19
+ .timesheet_item_middle {
20
+ top: 50%; height: 0px;
21
+ overflow: visible;
22
+ }
23
+ .timesheet_item_label {
24
+ top: -6px; height: 12px;
25
+ font-size: 12px;
26
+ text-align: center;
27
+ color: #333;
28
+ opacity: 1;
29
+ font-family: Arial, sans-serif;
30
+ }
31
+ .timesheet_item_resize_top {
32
+ top: 0px; height: 3px;
33
+ cursor: n-resize;
34
+ }
35
+ .timesheet_item_move {
36
+ top: 3px; bottom: 3px;
37
+ cursor: move;
38
+ }
39
+ .timesheet_item_resize_bottom {
40
+ bottom: 0px; height: 3px;
41
+ cursor: s-resize;
42
+ }
@@ -0,0 +1,8 @@
1
+ <div class="timesheet_item">
2
+ <div class="timesheet_item_middle">
3
+ <div class="timesheet_item_label" id="label#{_ID}">#{this.label}</div>
4
+ </div>
5
+ <div class="timesheet_item_resize_top"></div>
6
+ <div class="timesheet_item_resize_bottom"></div>
7
+ <div class="timesheet_item_move" id="subview#{_ID}"></div>
8
+ </div>
@@ -0,0 +1,248 @@
1
+ /* RSence
2
+ * Copyright 2009 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+ /*** = Description
10
+ ** Item class to be used with HTimeSheet.
11
+ ***/
12
+ var//RSence.DateTime
13
+ HTimeSheetItem = HControl.extend({
14
+ componentName: 'timesheet_item',
15
+ dragMode: 'create',
16
+ prevXY: [0,0],
17
+ prevXYTime: 0,
18
+
19
+ /** = Description
20
+ * Dragging is used to change coordinates.
21
+ *
22
+ * = Parameters
23
+ * +x+:: X coordinate at the start of drag.
24
+ * +y+:: Y coordinate at the start of drag.
25
+ *
26
+ **/
27
+ startDrag: function(x,y){
28
+ this.origY = y-this.parent.pageY();
29
+ if(this.dragMode === 'normal'){
30
+ var _timeNow = new Date().getTime(),
31
+ _xEquals = (Math.round(this.prevXY[0]/4) === Math.round(x/4)),
32
+ _yEquals = (Math.round(this.prevXY[1]/4) === Math.round(y/4)),
33
+ _noTimeout = ((_timeNow - this.prevXYTime) < 500);
34
+ if( _xEquals && _yEquals && _noTimeout ) {
35
+ if( this.parent['editor'] ){
36
+ var _editor = this.parent.editor;
37
+ _editor.setTimeSheetItem(this);
38
+ _editor.bringToFront();
39
+ _editor.show();
40
+ }
41
+ }
42
+ else {
43
+ var _diffTop = this.rect.top - this.origY,
44
+ _diffBottom = this.rect.bottom - this.origY;
45
+ if(0 >= _diffTop && _diffTop >= -3){
46
+ this.dragMode = 'resize-top';
47
+ }
48
+ else if(0 <= _diffBottom && _diffBottom <= 4){
49
+ this.dragMode = 'resize-bottom';
50
+ }
51
+ else {
52
+ this.dragMode = 'move';
53
+ this.moveDiff = this.origY - this.rect.top;
54
+ }
55
+ this.bringToFront();
56
+ }
57
+ }
58
+ this.prevXY = [x,y];
59
+ this.prevXYTime = _timeNow;
60
+ return true;
61
+ },
62
+
63
+ /** = Description
64
+ * Label setter function.
65
+ *
66
+ * = Parameters
67
+ * +_label+:: New label
68
+ *
69
+ **/
70
+ setTimeSheetItemLabel: function(_label){
71
+ this.label = _label;
72
+ this.refreshLabel();
73
+ },
74
+
75
+ /** = Description
76
+ * Function used to calculate the right size for a new
77
+ * item created by dragging.
78
+ *
79
+ * = Parameters
80
+ * +_y+:: Y coordinate at the start of drag.
81
+ *
82
+ **/
83
+ dragCreate: function(_y){
84
+ var _negative = (_y < this.origY),
85
+ _lineHeight = Math.floor(this.parent.pxPerHour/2),
86
+ _top, _bottom, _diff;
87
+ if(_negative){
88
+ var _floorY = Math.floor(_y/_lineHeight)*_lineHeight,
89
+ _ceilYo = Math.ceil(this.origY/_lineHeight)*_lineHeight;
90
+ if(_floorY<0){_floorY=0;}
91
+ _diff = _floorY-_ceilYo;
92
+ if( _diff <= 0-_lineHeight ){
93
+ _top = _floorY;
94
+ _bottom = _ceilYo;
95
+ }
96
+ else if( _diff === 0 ){
97
+ _top = _floorY-_lineHeight;
98
+ _bottom = _ceilYo;
99
+ }
100
+ }
101
+ else {
102
+ var _ceilY = Math.ceil(_y/_lineHeight)*_lineHeight,
103
+ _floorYo = Math.floor(this.origY/_lineHeight)*_lineHeight;
104
+ if(_ceilY>(_lineHeight*48)){_ceilY=_lineHeight*48;}
105
+ _diff = _ceilY-_floorYo;
106
+ if( _diff >= _lineHeight ){
107
+ _top = _floorYo;
108
+ _bottom = _ceilY;
109
+ }
110
+ else if( _diff === 0 ){
111
+ _top = _floorYo;
112
+ _bottom = _ceilY+_lineHeight;
113
+ }
114
+ }
115
+ this.rect.setTop(_top);
116
+ this.rect.setBottom(_bottom);
117
+ },
118
+
119
+ /** = Description
120
+ * Resize top by dragging auxiliary function.
121
+ *
122
+ * = Parameters
123
+ * +_y+:: Y coordinate at the start of drag.
124
+ **/
125
+ dragResizeTop: function(_y){
126
+ var _lineHeight = Math.floor(this.parent.pxPerHour/2),
127
+ _top = Math.floor( _y/_lineHeight )*_lineHeight;
128
+ if(_top < 0){ _top = 0; }
129
+ if(_top+_lineHeight > this.rect.bottom){
130
+ _top = this.rect.bottom - _lineHeight;
131
+ }
132
+ this.rect.setTop( _top );
133
+ },
134
+
135
+ /** = Description
136
+ * Resize function for resizing the bottom of item.
137
+ *
138
+ * = Parameters
139
+ * +_y+:: Y coordinate at the start of drag.
140
+ *
141
+ **/
142
+ dragResizeBottom: function(_y){
143
+ var _lineHeight = Math.floor(this.parent.pxPerHour/2),
144
+ _bottom = Math.floor( _y/_lineHeight )*_lineHeight;
145
+ if(_bottom > _lineHeight*48){ _bottom = _lineHeight*48; }
146
+ if(_bottom-_lineHeight < this.rect.top){
147
+ _bottom = this.rect.top + _lineHeight;
148
+ }
149
+ this.rect.setBottom( _bottom );
150
+ },
151
+
152
+ /** = Description
153
+ * Move function for item by dragging and dropping.
154
+ *
155
+ * = Parameters
156
+ * +_y+:: Y coordinate at the start of drag.
157
+ *
158
+ **/
159
+ dragMove: function(_y){
160
+ var _lineHeight = Math.floor(this.parent.pxPerHour/2),
161
+ _top = Math.floor( (0-this.moveDiff+_y)/_lineHeight )*_lineHeight;
162
+ if(_top<0){_top = 0;}
163
+ if(_top+this.rect.height>_lineHeight*48){
164
+ _top = _lineHeight*48 - this.rect.height;
165
+ }
166
+ this.rect.offsetTo( this.rect.left, _top );
167
+ },
168
+
169
+ /** = Description
170
+ * Drag function for item. Decides whether the user wants to create a new
171
+ * item, resize top, resize bottom or move an existing item.
172
+ *
173
+ * = Parameters
174
+ * +x+:: X coordinate at the start of drag.
175
+ * +y+:: Y coordinate at the start of drag.
176
+ *
177
+ **/
178
+ drag: function(x,y){
179
+ var _pageY = this.parent.pageY(),
180
+ _y = y - _pageY;
181
+ if(this.dragMode === 'create'){
182
+ this.dragCreate(_y);
183
+ }
184
+ else if(this.dragMode === 'resize-top'){
185
+ this.dragResizeTop(_y);
186
+ }
187
+ else if(this.dragMode === 'resize-bottom'){
188
+ this.dragResizeBottom(_y);
189
+ }
190
+ else if(this.dragMode === 'move'){
191
+ this.dragMove(_y);
192
+ }
193
+ this.drawRect();
194
+ return true;
195
+ },
196
+
197
+ /** = Description
198
+ * Modifies the existing item's coordinates or creates a new one.
199
+ *
200
+ * = Parameters
201
+ * +x+:: X coordinate at the end of drag.
202
+ * +y+:: Y coordinate at the end of drag.
203
+ *
204
+ **/
205
+ endDrag: function(x,y){
206
+ var _pxPerHour = Math.floor(this.parent.pxPerHour),
207
+ _value;
208
+ if(this.dragMode === 'create'){
209
+ this.parent.listItemViews.push( this );
210
+ _value = {
211
+ 'timeBegin': this.rect.top/_pxPerHour,
212
+ 'timeEnd': this.rect.bottom/_pxPerHour,
213
+ 'label': this.label
214
+ };
215
+ if(this.parent['editor']){
216
+ this.parent.editor.createItem( _value );
217
+ }
218
+ }
219
+ else {
220
+ _value = COMM.Values.clone( this.value );
221
+ _value['timeBegin'] = this.rect.top/_pxPerHour;
222
+ _value['timeEnd'] = this.rect.bottom/_pxPerHour;
223
+ if(this.parent['editor']){
224
+ this.parent.editor.modifyItem( _value );
225
+ }
226
+ }
227
+ this.setValue( _value );
228
+ this.dragMode = 'normal';
229
+ return true;
230
+ },
231
+
232
+ /** = Description
233
+ * Refreshes the object's label and place on the HTimeSheet.
234
+ *
235
+ **/
236
+ refreshValue: function(){
237
+ var _value = this.value,
238
+ _pxPerHour = this.parent.pxPerHour;
239
+ if((_value instanceof Object) && !(_value instanceof Array)){
240
+ this.setLabel( _value['label'] );
241
+ this.rect.setTop( _value['timeBegin'] * _pxPerHour );
242
+ this.rect.setBottom( _value['timeEnd'] * _pxPerHour );
243
+ this.drawRect();
244
+ }
245
+ }
246
+ });
247
+
248
+
File without changes