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,274 @@
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
+ ** Editor control for HTimeSheet. Editor can access the HTimeSheetItems
11
+ ** on HTimeSheet.
12
+ ***/
13
+ var//RSence.DateTime
14
+ HTimeSheetEditor = HControl.extend({
15
+ timeSheetItem: false,
16
+ createId: 0,
17
+
18
+ /** = Description
19
+ * Selects a HTimeSheetItem to edit.
20
+ *
21
+ * = Parameters
22
+ * +_timeSheetItem+:: A HTimeSheetItem to edit.
23
+ *
24
+ **/
25
+ setTimeSheetItem: function(_timeSheetItem){
26
+ this.timeSheetItem = _timeSheetItem;
27
+ this.textField.setValue( _timeSheetItem.label );
28
+ },
29
+
30
+ /** = Description
31
+ * Opens HTimeSheetEditor for the selected HTimeSheetItem.
32
+ *
33
+ **/
34
+ show: function(){
35
+ if(this.timeSheetItem!==false){
36
+ var _newRect = HRect.nu(this.timeSheetItem.rect);
37
+ if(_newRect.height < 40){
38
+ _newRect.setHeight( 40 );
39
+ }
40
+ if(_newRect.width < 200){
41
+ _newRect.setWidth( 200 );
42
+ }
43
+ var _timeSheetItemParentRect = this.timeSheetItem.parent.rect;
44
+ _newRect.offsetBy( _timeSheetItemParentRect.left, _timeSheetItemParentRect.top );
45
+ this.setRect( _newRect );
46
+ this.drawRect();
47
+ }
48
+ this.base();
49
+ },
50
+
51
+ /** = Description
52
+ * Hides the HTimeSheetEditor.
53
+ *
54
+ **/
55
+ hide: function(){
56
+ this.base();
57
+ },
58
+ origParent: null,
59
+
60
+ /** = Description
61
+ * Creates a new item.
62
+ *
63
+ * = Parameters
64
+ * +_properties+:: Properties for the new item.
65
+ *
66
+ **/
67
+ createItem: function( _properties ){
68
+ if(_properties['id'] === undefined){
69
+ this.createId--;
70
+ _properties['id'] = this.createId;
71
+ }
72
+ var _value = COMM.Values.clone( this.value ),
73
+ _create = _value['create'],
74
+ i = 0,
75
+ _item = false;
76
+ for(;i<_create.length;i++){
77
+ if(_create[i]['id'] === _properties['id']){
78
+ _item = _create[i];
79
+ break;
80
+ }
81
+ }
82
+ if(!_item){
83
+ _create.push( _properties );
84
+ }
85
+ else {
86
+ for( var _key in _properties ){
87
+ _item[_key] = _properties[_key];
88
+ }
89
+ }
90
+ this.setValue( _value );
91
+ },
92
+
93
+ /** = Description
94
+ * Modifies an item.
95
+ *
96
+ * = Parameters
97
+ * +_properties+:: Properties to change.
98
+ *
99
+ **/
100
+ modifyItem: function( _properties ){
101
+ if(_properties['id'] < 0){
102
+ this.createItem( _properties );
103
+ }
104
+ else {
105
+ var _value = COMM.Values.clone( this.value ),
106
+ _modify = _value['modify'],
107
+ i = 0,
108
+ _item = false;
109
+ for(;i<_modify.length;i++){
110
+ if(_modify[i]['id'] === _properties['id']){
111
+ _item = _modify[i];
112
+ break;
113
+ }
114
+ }
115
+ if(!_item){
116
+ _modify.push( _properties );
117
+ }
118
+ else {
119
+ for( var _key in _properties ){
120
+ _item[_key] = _properties[_key];
121
+ }
122
+ }
123
+ this.setValue( _value );
124
+ }
125
+ },
126
+
127
+ /** = Description
128
+ * Deletes an item with id given as parameter.
129
+ *
130
+ * = Parameters
131
+ * +_itemId+:: Id of an item to be deleted.
132
+ *
133
+ **/
134
+ deleteItem: function( _itemId ){
135
+ var _value = COMM.Values.clone( this.value );
136
+ if(_value['delete'].indexOf( _itemId ) === -1){
137
+ _value['delete'].push( _itemId );
138
+ this.setValue( _value );
139
+ }
140
+ },
141
+
142
+ /** = Description
143
+ * Refreshes the values by iterating through value['response'] and checking
144
+ * the new values from the response array.
145
+ *
146
+ **/
147
+ refreshValue: function(){
148
+ var _value = COMM.Values.clone( this.value ),
149
+ i = 0,
150
+ _parent = this.origParent?this.origParent:this.parent,
151
+ _listItemViews = _parent.listItemViews,
152
+ _response = _value['response'],
153
+ _item,
154
+ _itemValue,
155
+ _responseItem,
156
+ j, k;
157
+ for( ; i < _response.length; i++ ){
158
+ for( j = 0; j < _listItemViews.length; j++ ){
159
+ _responseItem = _response[i];
160
+ _item = _listItemViews[j];
161
+ if( _item.value['id'] === _responseItem['id'] ){
162
+ _itemValue = COMM.Values.clone( _item.value );
163
+ if(_responseItem['modify'] !== undefined){
164
+ for( k in _responseItem['modify'] ){
165
+ _itemValue[k] = _responseItem['modify'][k];
166
+ }
167
+ _item.setValue( _itemValue );
168
+ }
169
+ }
170
+ }
171
+ }
172
+ _value['response'] = [];
173
+ this.setValue( _value );
174
+ },
175
+
176
+ /** = Description
177
+ * Draws ok, delete and cancel buttons.
178
+ *
179
+ **/
180
+ drawSubviews: function(){
181
+ this.origParent = this.parent;
182
+ this.remove();
183
+ this.origParent.parent.addView( this );
184
+ ELEM.append( this.elemId, this.parent.elemId );
185
+ this.textField = HTextArea.nu(
186
+ [0,0,null,20,0,26],
187
+ this, {
188
+ value: ''
189
+ }
190
+ );
191
+ this.delButton = HButton.extend({
192
+
193
+ /** = Description
194
+ * Click function for delete button. Will call delete function on click
195
+ * for the current item.
196
+ *
197
+ **/
198
+ click: function(){
199
+ this.parent.hide();
200
+ var _sheetItem = this.parent.timeSheetItem;
201
+ if(_sheetItem!==false){
202
+ this.parent.deleteItem( _sheetItem.value['id'] );
203
+ _sheetItem.die();
204
+ var _parent = this.parent.origParent?this.parent.origParent:this.parent.parent;
205
+ var _sheetIdx = _parent.listItemViews.indexOf( _sheetItem );
206
+ _parent.listItemViews.splice( _sheetIdx, 1 );
207
+ this.parent.timeSheetItem = false;
208
+ }
209
+ }
210
+ }).nu(
211
+ [2,null,60,24,null,0],
212
+ this, {
213
+ label: 'Delete',
214
+ events: {
215
+ click: true
216
+ }
217
+ }
218
+ );
219
+ this.okButton = HButton.extend({
220
+
221
+ /** = Description
222
+ * Click function for okButton will ok the modifications for the current item.
223
+ *
224
+ **/
225
+ click: function(){
226
+ this.parent.hide();
227
+ if(this.parent.timeSheetItem!==false){
228
+ var _label = this.parent.textField.getTextFieldValue(),
229
+ _id = this.parent.timeSheetItem.value['id'],
230
+ _data = this.parent.timeSheetItem.value;
231
+ _data['label'] = _label;
232
+ this.parent.modifyItem( _data );
233
+ this.parent.timeSheetItem.setTimeSheetItemLabel( _label );
234
+ this.parent.timeSheetItem = false;
235
+ }
236
+ }
237
+ }).nu(
238
+ [null,null,60,24,2,0],
239
+ this, {
240
+ label: 'Save',
241
+ events: {
242
+ click: true
243
+ }
244
+ }
245
+ );
246
+ this.cancelButton = HButton.extend({
247
+ /** = Description
248
+ * Click function for cancel button will cancel
249
+ * the modifications for the current item.
250
+ *
251
+ **/
252
+ click: function(){
253
+ this.parent.hide();
254
+ if(this.timeSheetItem!==false){
255
+ this.parent.timeSheetItem = false;
256
+ }
257
+ }
258
+ }).nu(
259
+ [null,null,60,24,66,0],
260
+ this, {
261
+ label: 'Cancel',
262
+ events: {
263
+ click: true
264
+ }
265
+ }
266
+ );
267
+ this.textField.setStyle('text-align','center');
268
+ this.textField.setStyle('line-height','12px');
269
+ this.textField.setStyle('font-size','12px');
270
+ this.textField.setStyle('font-family','Arial, sans-serif');
271
+ this.origParent.setEditor( this );
272
+ }
273
+ });
274
+
@@ -0,0 +1,208 @@
1
+ /* RSence
2
+ * Copyright 2006 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
+
10
+ /*** = Description
11
+ **
12
+ ** Simple application template.
13
+ **
14
+ ** Depends on <HSystem>
15
+ **
16
+ ** HApplication instances are good namespaces to bind your client-side logic to.
17
+ ** Feel free to extend HApplication to suit your needs. The primary default
18
+ ** purpose is root-level component (<HView>) management and being the
19
+ ** root controller for <onIdle> events.
20
+ **
21
+ ** = Instance members
22
+ ** +views+:: A list of child component ids bound to it via +HView+ and +HSystem+
23
+ ** +parent+:: Usually +HSystem+.
24
+ ** +parents+:: An array containing parent instances. In this case, just +HSystem+.
25
+ ** +isBusy+:: A flag that is true when the app is doing onIdle events or stopped.
26
+ **
27
+ ** = Usage
28
+ ** Creates the +HApplication+ instance +myApp+, makes a +HWindow+ instance
29
+ ** as its first view.
30
+ ** var myApp = HApplication.nu(10,'Sample Application');
31
+ ** HWindow.nu( [10,10,320,200], myApp, {label:'myWin'} );
32
+ **
33
+ ***/
34
+ var//RSence.Foundation
35
+ HApplication = HClass.extend({
36
+
37
+ elemId: 0,
38
+
39
+ /** = Description
40
+ *
41
+ * = Parameters
42
+ * All parameters are optional.
43
+ *
44
+ * +_priority+:: The priority, a number between 1 and Infinity. Smaller
45
+ * number means higher priority, affects onIdle polling.
46
+ *
47
+ * +_label+:: A label for the application; for process managers.
48
+ *
49
+ **/
50
+ constructor: function(_priority, _label){
51
+
52
+ // Special null viewId for HApplication instances,
53
+ // they share a system-level root view; the document object
54
+ this.viewId = null;
55
+
56
+ // storage for views
57
+ this.views = [];
58
+
59
+ // storage for dom element id's in view, not utilized in HApplication by default
60
+ this.markupElemIds = [];
61
+
62
+ // Views in Z order. The actual Z data is stored in HSystem, this is just a
63
+ // reference to that array.
64
+ this.viewsZOrder = HSystem.viewsZOrder;
65
+
66
+ // Finalize initialization via HSystem
67
+ HSystem.addApp(this,_priority);
68
+
69
+ if(_label){
70
+ this.label = _label;
71
+ }
72
+ else{
73
+ this.label = 'ProcessID='+this.appId;
74
+ }
75
+ },
76
+
77
+ /** = Description
78
+ * Used by addView to build a +self.parents+ array of parent classes.
79
+ *
80
+ * = Parameters
81
+ * +_viewId+:: The target view's ID.
82
+ **/
83
+ buildParents: function(_viewId){
84
+ var _view = HSystem.views[_viewId],
85
+ i = 0;
86
+ _view.parent = this;
87
+ _view.parents = [];
88
+ for(; i < this.parents.length; i++) {
89
+ _view.parents.push(this.parents[i]);
90
+ }
91
+ _view.parents.push(this);
92
+ },
93
+
94
+ /** = Description
95
+ * Adds a view to the app, +HView+ defines an indentical structure for subviews.
96
+ *
97
+ * Called from inside the +HView+ constructor and should be automatic for all
98
+ * components that accept the +_parent+ parameter, usually the second argument,
99
+ * after the +HRect+ instance.
100
+ *
101
+ * = Parameters
102
+ * +_view+:: Usually +this+ inside +HView+ -derived components.
103
+ *
104
+ * = Returns
105
+ * The view ID.
106
+ *
107
+ **/
108
+ addView: function(_view) {
109
+
110
+ var _viewId = HSystem.addView(_view);
111
+ this.views.push(_viewId);
112
+
113
+ this.buildParents(_viewId);
114
+ this.viewsZOrder.push(_viewId);
115
+
116
+ return _viewId;
117
+ },
118
+
119
+ /** = Description
120
+ * Removes the view of the given +_viewId+.
121
+ *
122
+ * Call this if you need to remove a child view from its parent without
123
+ * destroying its view, making it in effect a view without parent.
124
+ * Useful, for example, for moving a view from one parent component to
125
+ * another when dragging a component to a droppable container.
126
+ *
127
+ * = Parameters
128
+ * +_viewId+:: The view ID.
129
+ *
130
+ **/
131
+ removeView: function(_viewId){
132
+ HSystem.views[_viewId].remove();
133
+ },
134
+
135
+ /** = Description
136
+ * Removes and destructs the view of the given +_viewId+.
137
+ *
138
+ * Call this if you need to remove a child view from its parent, destroying
139
+ * its child views recursively and removing all of the DOM elements too.
140
+ *
141
+ * = Parameters
142
+ * +_viewId+:: The view ID.
143
+ *
144
+ **/
145
+ destroyView: function(_viewId){
146
+ HSystem.views[_viewId].die();
147
+ },
148
+
149
+ /** = Description
150
+ * The destructor of the +HApplication+ instance.
151
+ *
152
+ * Stops this application and destroys all its views recursively.
153
+ *
154
+ **/
155
+ die: function(){
156
+ HSystem.killApp(this.appId, false);
157
+ },
158
+
159
+
160
+ /** = Description
161
+ * Destructs all views but doesn't destroy the +HApplication+ instance.
162
+ *
163
+ * Destroys all the views added to this application but doesn't destroy the
164
+ * application itself.
165
+ *
166
+ **/
167
+ destroyAllViews: function(){
168
+ for(var i = 0; i < this.views.length; i++) {
169
+ HSystem.views[this.views[i]].die();
170
+ }
171
+ },
172
+
173
+
174
+ /* Calls the idle method of each view. Don't extend this method. */
175
+ _pollViews: function(){
176
+ var i, _viewId, _view;
177
+ for(i=0;i<this.views.length;i++){
178
+ _viewId = this.views[i];
179
+ _view = HSystem.views[_viewId];
180
+ if((_view!==null)&&(_view['onIdle']!==undefined)){
181
+ _view.onIdle();
182
+ }
183
+ }
184
+ },
185
+
186
+ /** Gets called by +HSystem+. It makes +onIdle+ extensions more failure
187
+ * resistant. Do not extend.
188
+ **/
189
+ _startIdle: function(){
190
+ HSystem.busyApps[ this.appId ] = true;
191
+ this.onIdle();
192
+ this._pollViews();
193
+ HSystem.busyApps[ this.appId ] = false;
194
+ },
195
+
196
+ /** = Description
197
+ * The receiver of the +onIdle+ "poll event". The app priority defines the interval.
198
+ *
199
+ * Extend this method, if you are going to perform regular actions in a app.
200
+ *
201
+ * Intended for "slow infinite loops".
202
+ *
203
+ **/
204
+ onIdle: function(){
205
+ /* Your code here */
206
+ }
207
+ });
208
+ HApplication.implement(HValueResponder.nu());
File without changes