rsence-pre 2.1.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
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
File without changes
@@ -0,0 +1,26 @@
1
+ /* RSence
2
+ * Copyright 2010 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
+ ** Define default HView setting here. Will be used, when no or invalid constructor
11
+ ** options are supplied.
12
+ ***/
13
+ var//RSence.Foundation
14
+ HViewDefaults = HClass.extend({
15
+
16
+ /** The default label. A label is the "visual value" of a component that
17
+ * operates on a "hidden" value.
18
+ **/
19
+ label: "",
20
+
21
+ /** The default initial visibility of the component.
22
+ **/
23
+ visible: true
24
+
25
+ });
26
+
@@ -0,0 +1,171 @@
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
+ ** This class is still at experimental phase.
11
+ ** Please assume that the API _will_ change later.
12
+ ** HCheckboxList is a combined list of HCheckboxes.
13
+ **
14
+ ***/
15
+ var//RSence.Lists
16
+ HCheckboxList = HControl.extend({
17
+
18
+ /** = Description
19
+ * Draws borders with 1px and sets 'overflow' to 'auto'.
20
+ *
21
+ **/
22
+ drawSubviews: function(){
23
+ this.setStyle('border','1px solid #999');
24
+ this.setStyle('overflow','auto');
25
+ },
26
+ listItems: [],
27
+ listItemViews: [],
28
+ ListCheckbox: HCheckbox.extend({
29
+
30
+ /** = Description
31
+ * Adds listValues to the parent if they are true otherwise deletes them.
32
+ *
33
+ **/
34
+ refreshValue: function(){
35
+ this.base();
36
+ if(this.value === true){
37
+ this.parent.addItem( this.options.listValue );
38
+ }
39
+ else{
40
+ this.parent.delItem( this.options.listValue );
41
+ }
42
+ }
43
+ }),
44
+
45
+ /** = Description
46
+ * Checks if +_listValue+ can be found from the values. Adds the value
47
+ * if it can't be found.
48
+ *
49
+ * = Parameters
50
+ * +_listValue+:: listValue to add.
51
+ *
52
+ **/
53
+ addItem: function( _listValue ){
54
+ if(this.value.indexOf(_listValue) === -1){
55
+ var _newValue = [], i = 0;
56
+ for( ; i < this.value.length; i++ ){
57
+ _newValue.push( this.value[i] );
58
+ }
59
+ _newValue.push( _listValue );
60
+ this.setValue( _newValue );
61
+ }
62
+ },
63
+
64
+ /** = Description
65
+ * Checks if the item can be found from this.value and deletes it
66
+ * in case it can be found.
67
+ *
68
+ * = Parameters
69
+ * +_listValue+:: A listValue to delete.
70
+ *
71
+ **/
72
+ delItem: function( _listValue ){
73
+ var _listIndex = this.value.indexOf(_listValue);
74
+ if(_listIndex !== -1){
75
+ var _newValue = [], i = 0;
76
+ for( ; i < this.value.length; i++ ){
77
+ if(this.value[i] !== _listValue){
78
+ _newValue.push( this.value[i] );
79
+ }
80
+ }
81
+ this.setValue( _newValue );
82
+ }
83
+ },
84
+
85
+ /** = Description
86
+ * Setter function for listItems and listImetViews. Destroys
87
+ * the old ListCheckboxes before creating the new ones based on the
88
+ * listItems given as an parameter.
89
+ *
90
+ * = Parameters
91
+ * +_listItems+:: listItems is an array-packed array, where each index in the
92
+ * surrounding array contains a [ value, label ] pair.
93
+ * The value is mapped to the value of the HRadiobuttonList
94
+ * instance when its HRadiobutton instance is selected.
95
+ *
96
+ **/
97
+ setListItems: function(_listItems){
98
+ var _listItem,
99
+ _value,
100
+ _label,
101
+ _checked,
102
+ _checkbox,
103
+ i = 0;
104
+ for ( ; i < this.listItemViews.length; i++ ) {
105
+ try {
106
+ this.listItemViews[i].die();
107
+ }
108
+ catch(e) {
109
+ console.log('HCheckboxList, setListItems item destruction error: ',e);
110
+ }
111
+ }
112
+ this.listItems = _listItems;
113
+ this.listItemViews = [];
114
+ for ( i = 0 ; i < _listItems.length; i++ ){
115
+ _listItem = _listItems[i];
116
+ _value = _listItem[0];
117
+ _label = _listItem[1];
118
+ _checked = (this.value.indexOf( _value ) !== -1);
119
+ _checkbox = this.ListCheckbox.nu(
120
+ [ 4, (i*23)+4, null, 23, 4, null ],
121
+ this, {
122
+ label: _label,
123
+ value: _checked,
124
+ listValue: _value
125
+ }
126
+ );
127
+ this.listItemViews[i] = _checkbox;
128
+ }
129
+ this.refreshValue();
130
+ },
131
+
132
+ /** = Description
133
+ * Sets listItems and ListItemViews to null and calls
134
+ * the inherited destructor.
135
+ *
136
+ **/
137
+ die: function(){
138
+ this.listItems = null;
139
+ this.listItemViews = null;
140
+ this.base();
141
+ },
142
+
143
+ /** = Description
144
+ * Checks whether there are listItemViews and if there are,
145
+ * refreshes their state.
146
+ *
147
+ * = Returns
148
+ * +self+
149
+ *
150
+ **/
151
+ refreshValue: function(){
152
+ if(this.listItemViews.length === 0){
153
+ return this;
154
+ }
155
+ var _value = this.value,
156
+ _listItems = this.listItems,
157
+ _listItemValue,
158
+ _selectedItems = [],
159
+ i = 0,
160
+ _isSelected;
161
+ for( ; i < _listItems.length; i++ ){
162
+ _listItemValue = _listItems[i][0];
163
+ _isSelected = (_value.indexOf( _listItemValue ) !== -1);
164
+ this.listItemViews[i].setValue( _isSelected );
165
+ if(_isSelected){
166
+ _selectedItems.push( _listItemValue );
167
+ }
168
+ }
169
+ return this;
170
+ }
171
+ });
File without changes
File without changes
@@ -0,0 +1,88 @@
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
+
10
+ /*** = Description
11
+ ** HListItems is uses an array-packed list of hash objects as its value.
12
+ ##
13
+ ## == Value as Array of Hashes:
14
+ ** Each item in the array should have a 'label' and a 'value' key.
15
+ ** The 'label' key of each item is used as the label for the HRadiobutton in the list.
16
+ ** The 'value' key of each item is the value used for the output.
17
+ ##
18
+ ## == Value as Array of strings or numerals
19
+ ## Each Item like with hash, except the item is both label and value. Each item should
20
+ ## be unique.
21
+ ##
22
+ ## == Important
23
+ ** The parent object of a HListItem needs to be a compatible hash, like HRadiobuttonList.
24
+ ##
25
+ ***/
26
+ var//RSence.Lists
27
+ HListItems = HValueResponder.extend({
28
+
29
+ constructor: function( _rect, _parent, _options ){
30
+ this.parent = _parent;
31
+ if (_options instanceof Object) {
32
+ if (_options['valueObj'] !== undefined) {
33
+ _options.valueObj.bind( this );
34
+ }
35
+ else if(_options['value'] !== undefined) {
36
+ this.value = _options.value;
37
+ this.refresh();
38
+ }
39
+ }
40
+ },
41
+ _warningMessage: function(_messageText){
42
+ console.log("Warning; HListItems: "+_messageText);
43
+ },
44
+
45
+ /** = Description
46
+ * Iterates through this.value array and calls
47
+ * the setListItems function of the parent class.
48
+ *
49
+ **/
50
+ refresh: function(){
51
+ if ( this.value instanceof Array ) {
52
+ var _listItems = [],
53
+ _row, _rowType,
54
+ _label, _value,
55
+ i = 0;
56
+ for ( ; i < this.value.length ; i++ ){
57
+ _row = this.value[i];
58
+ _rowType = COMM.Values.type( _row );
59
+ // console.log('row:',_row,' rowType:',_rowType);
60
+ // hashes
61
+ if ( _rowType === 'h' ) {
62
+ _label = _row['label'];
63
+ _value = _row['value'];
64
+ if ( _label === undefined || _value === undefined ){
65
+ this._warningMessage( "The value or label of row "+_row+" is undefined (ignored)" );
66
+ }
67
+ _listItems.push( [_value, _label] );
68
+ }
69
+ // Arrays as-is
70
+ else if ( _rowType == 'a' ){
71
+ _listItems.push( _row );
72
+ }
73
+ // strings and integers
74
+ else if ( ['s','n'].indexOf(_rowType) !== -1 ){
75
+ _label = _row.toString();
76
+ _value = _row;
77
+ _listItems.push( [_value, _label] );
78
+ }
79
+ else {
80
+ this._warningMessage( "The row "+_row+" is has unsupported row type: '"+_rowType+"' (ignored)" );
81
+ }
82
+ }
83
+ this.parent.setListItems( _listItems );
84
+ }
85
+ }
86
+ });
87
+
88
+
File without changes
@@ -0,0 +1,326 @@
1
+ /* RSence
2
+ * Copyright 2010 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
+ ** HPropertyList uses any JSON-compliant structure as its value and displays
11
+ ** its content hierarchically in three columns:
12
+ ** - Key
13
+ ** - Type
14
+ ** - Value
15
+ **
16
+ ***/
17
+ var//RSence.Lists
18
+ HPropertyList = HControl.extend({
19
+ keyColumnWidth: 100,
20
+ rowHeight: 15,
21
+ keyIndent: 8,
22
+ drawSubviews: function(){
23
+ this.propertyItems = [];
24
+ this.keyRowStyle += 'height:'+this.rowHeight+'px;';
25
+ this.typeRowStyle += 'height:'+this.rowHeight+'px;';
26
+ this.valueRowStyle += 'height:'+this.rowHeight+'px;';
27
+ this.rowSeparatorStyle += 'height:'+this.rowHeight+'px;';
28
+ this.setStyle('font-size','11px');
29
+ this.setStyle('overflow-y','auto');
30
+ this.keyColumn = HView.nu(
31
+ [ 0, 0, this.keyColumnWidth, 24 ],
32
+ this, {
33
+ style: [ [ 'border-right', '1px solid #999' ] ]
34
+ }
35
+ );
36
+ this.typeColumn = HView.nu(
37
+ [ this.keyColumnWidth, 0, 80, 24 ],
38
+ this, {
39
+ style: [ [ 'border-right', '1px solid #999' ] ]
40
+ }
41
+ );
42
+ this.valueColumn = HView.nu(
43
+ [ this.keyColumnWidth + 80, 0, 0, 24, 0, null ],
44
+ this
45
+ );
46
+ this.header = HView.extend({
47
+ drawSubviews: function(){
48
+ var
49
+ keyColumnWidth = this.parent.keyColumnWidth;
50
+ this.keyLabel = HStringView.nu(
51
+ [ 0, 0, keyColumnWidth, 24 ],
52
+ this, {
53
+ value: '<b>Key</b>',
54
+ style: [
55
+ [ 'text-align', 'middle' ],
56
+ [ 'text-indent', '16px' ],
57
+ [ 'line-height', '24px' ]
58
+ ]
59
+ }
60
+ );
61
+ this.typeLabel = HStringView.nu(
62
+ [ keyColumnWidth, 0, 80, 24 ],
63
+ this, {
64
+ value: '<b>Type</b>',
65
+ style: [
66
+ [ 'text-align', 'middle' ],
67
+ [ 'text-indent', '8px' ],
68
+ [ 'line-height', '24px' ]
69
+ ]
70
+ }
71
+ );
72
+ this.valueLabel = HStringView.nu(
73
+ [ keyColumnWidth + 80, 0, 80, 24, 0, null ],
74
+ this, {
75
+ value: '<b>Value</b>',
76
+ style: [
77
+ [ 'text-align', 'middle' ],
78
+ [ 'text-indent', '8px' ],
79
+ [ 'line-height', '24px' ]
80
+ ]
81
+ }
82
+ );
83
+ }
84
+ }).nu(
85
+ [ 0, 0, null, 24, 0, null ],
86
+ this, {
87
+ style: [ [ 'border-bottom', '1px solid #999' ] ]
88
+ }
89
+ );
90
+ this.resizeColumns = HControl.extend({
91
+ drag: function(x,y){
92
+ var
93
+ parentX = x - this.parent.pageX(),
94
+ keyColumnWidth = parentX-1,
95
+ parentWidth = ELEM.getVisibleSize( this.parent.elemId )[0];
96
+ if(keyColumnWidth < 80){
97
+ keyColumnWidth = 80;
98
+ }
99
+ else if ( keyColumnWidth > parentWidth-160 ){
100
+ keyColumnWidth = parentWidth - 160;
101
+ }
102
+ selfX = keyColumnWidth - 2;
103
+ this.rect.offsetTo( selfX, 0 ); this.drawRect();
104
+ this.parent.keyColumn.rect.setRight( keyColumnWidth ); this.parent.keyColumn.drawRect();
105
+ this.parent.header.keyLabel.rect.setWidth( keyColumnWidth ); this.parent.header.keyLabel.drawRect();
106
+ this.parent.typeColumn.rect.offsetTo( keyColumnWidth, 0 ); this.parent.typeColumn.drawRect();
107
+ this.parent.header.typeLabel.rect.offsetTo( keyColumnWidth, 0 ); this.parent.header.typeLabel.drawRect();
108
+ this.parent.valueColumn.rect.setLeft( keyColumnWidth+80 ); this.parent.valueColumn.drawRect();
109
+ this.parent.header.valueLabel.rect.setLeft( keyColumnWidth+80 ); this.parent.header.valueLabel.drawRect();
110
+ this.parent.keyColumnWidth = keyColumnWidth;
111
+ }
112
+ }).nu(
113
+ [ this.keyColumnWidth - 2, 0, 5, 25 ],
114
+ this, {
115
+ events: { draggable: true },
116
+ style: [
117
+ [ 'cursor', 'ew-resize' ]
118
+ ]
119
+ }
120
+ );
121
+ },
122
+ arrayTokens: function( arr, name ){
123
+ this.addToken( 'a', name, '('+arr.length+' items)' );
124
+ this.nodeProperties.left += this.keyIndent;
125
+ var i = 0, val, type;
126
+ for( ; i < arr.length; i++ ){
127
+ val = arr[i];
128
+ type = this.itemType( val );
129
+ if( type == 'h' ){
130
+ this.hashTokens( val, i );
131
+ }
132
+ else if ( type == 'a' ){
133
+ this.arrayTokens( val, i );
134
+ }
135
+ else {
136
+ this.addToken( type, i, val );
137
+ }
138
+ }
139
+ this.nodeProperties.left -= this.keyIndent;
140
+ },
141
+ hashLen: function( hash ){
142
+ var count = 0;
143
+ for( var item in hash ){
144
+ count += 1;
145
+ }
146
+ return count;
147
+ },
148
+ hashSortedKeys: function( hash ){
149
+ var
150
+ keys = [],
151
+ key;
152
+ for( key in hash ){
153
+ keys.push( key );
154
+ }
155
+ return keys.sort();
156
+ },
157
+ hashTokens: function( hash, name ){
158
+ this.addToken( 'h', name, '('+this.hashLen( hash )+' items)' );
159
+ this.nodeProperties.left += this.keyIndent;
160
+ var key, val, type, i = 0, keys = this.hashSortedKeys( hash );
161
+ for( ; i < keys.length; i++ ){
162
+ key = keys[i];
163
+ val = hash[key];
164
+ type = this.itemType( val );
165
+ if( type == 'h' ){
166
+ this.hashTokens( val, key );
167
+ }
168
+ else if ( type == 'a' ){
169
+ this.arrayTokens( val, key );
170
+ }
171
+ else {
172
+ this.addToken( type, key, val );
173
+ }
174
+ }
175
+ this.nodeProperties.left -= this.keyIndent;
176
+ },
177
+ addToken: function( type, name, value ){
178
+ this.valueTokens.push( {
179
+ top: this.nodeProperties.top,
180
+ left: this.nodeProperties.left,
181
+ type: type,
182
+ name: name,
183
+ value: value
184
+ } );
185
+ this.nodeProperties.top += this.rowHeight;
186
+ },
187
+ itemType: function( item ){
188
+ return COMM.Values.type( item );
189
+ },
190
+ typeNames: {
191
+ h: 'Hash',
192
+ a: 'Array',
193
+ s: 'String',
194
+ n: 'Number',
195
+ b: 'Boolean'
196
+ },
197
+ keyRowStyle: "position:absolute;z-index:1;right:0px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;",
198
+ addKeyColumnControl: function( token, i ){
199
+ var elemId;
200
+ if( i >= this.propertyItems.length ){
201
+ elemId = ELEM.make( this.keyColumn.elemId );
202
+ this.propertyItems.push( elemId );
203
+ ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.keyRowStyle );
204
+ }
205
+ else {
206
+ elemId = this.propertyItems[i];
207
+ }
208
+ ELEM.setStyle( elemId, 'left', (token.left+10)+'px' );
209
+ if( token.type === 'h' || token.type === 'a' ){
210
+ ELEM.setStyle( elemId, 'font-weight', 'bold' );
211
+ }
212
+ else {
213
+ ELEM.setStyle( elemId, 'font-weight', 'inherit' );
214
+ }
215
+ ELEM.setHTML( elemId, token.name );
216
+ },
217
+ typeRowStyle: "position:absolute;z-index:1;left:8px;width:72px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;",
218
+ addTypeColumnControl: function( token, i ){
219
+ var elemId;
220
+ if( i >= this.propertyItems.length ){
221
+ elemId = ELEM.make( this.typeColumn.elemId );
222
+ this.propertyItems.push( elemId );
223
+ ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.typeRowStyle );
224
+ }
225
+ else {
226
+ elemId = this.propertyItems[i];
227
+ }
228
+ ELEM.setHTML( elemId, this.typeNames[token.type] );
229
+ },
230
+ valueRowStyle: "position:absolute;z-index:1;left:8px;right:0px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;",
231
+ addValueColumnControl: function( token, i ){
232
+ var elemId, value;
233
+ if( i >= this.propertyItems.length ){
234
+ elemId = ELEM.make( this.valueColumn.elemId );
235
+ this.propertyItems.push( elemId );
236
+ ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.valueRowStyle );
237
+ }
238
+ else {
239
+ elemId = this.propertyItems[i];
240
+ }
241
+ if( token.type === 'h' || token.type === 'a' ){
242
+ ELEM.setStyle( elemId, 'font-style', 'italic' );
243
+ }
244
+ else {
245
+ ELEM.setStyle( elemId, 'font-style', 'inherit' );
246
+ }
247
+ value = token.value;
248
+ if(value===true){
249
+ value = 'true';
250
+ }
251
+ else if(value===false){
252
+ value = 'false';
253
+ }
254
+ else if(value===undefined){
255
+ value = 'undefined';
256
+ }
257
+ else if(value===null){
258
+ value = 'null';
259
+ }
260
+ ELEM.setHTML( elemId, value );
261
+ },
262
+ rowSeparatorStyle: "position:absolute;z-index:0;left:0px;right:0px;font-size:0px;height:1px;border-bottom:1px solid #ccc;overflow:hidden;text-overflow:ellipsis;",
263
+ addRowSeparator: function( token, i, even ){
264
+ if( i >= this.propertyItems.length ){
265
+ var elemId = ELEM.make( this.elemId );
266
+ this.propertyItems.push( elemId );
267
+ ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.rowSeparatorStyle+'background-color:'+(even?'#eee':'#ddd')+';' );
268
+ }
269
+ },
270
+ die: function(){
271
+ var
272
+ i=0,
273
+ propLen = this.propertyItems.length,
274
+ elemId;
275
+ for(;i<propLen;i++){
276
+ elemId = this.propertyItems.pop();
277
+ ELEM.del( elemId );
278
+ }
279
+ this.base();
280
+ },
281
+ refreshValue: function(){
282
+ if(this['propertyItems']===undefined){
283
+ return;
284
+ }
285
+ this.valueTokens = [];
286
+ this.nodeProperties = {
287
+ top: 28,
288
+ left: 8
289
+ };
290
+ var rootType = this.itemType( this.value );
291
+ if( rootType == 'h' ){
292
+ this.hashTokens( this.value, 'Root' );
293
+ }
294
+ else if( rootType == 'a' ){
295
+ this.arrayTokens( this.value, 'Root' );
296
+ }
297
+ else {
298
+ this.addToken( rootType, 'Root', this.value );
299
+ }
300
+ var i, token;
301
+ if(this['propertyItems'] === undefined){
302
+ this.propertyItems = [];
303
+ }
304
+ var colHeight = 0, colId = 0;
305
+ for( i = 0; i < this.valueTokens.length; i ++ ) {
306
+ token = this.valueTokens[i];
307
+ this.addRowSeparator( token, colId, (i%2===0) ); colId++;
308
+ this.addKeyColumnControl( token, colId ); colId++;
309
+ this.addTypeColumnControl( token, colId ); colId++;
310
+ this.addValueColumnControl( token, colId ); colId++;
311
+ colHeight = token.top+this.rowHeight;
312
+ }
313
+ var propItemsLen = this.propertyItems.length, elemId;
314
+ for( i = colId; i < propItemsLen; i++ ){
315
+ elemId = this.propertyItems.pop();
316
+ ELEM.del( elemId );
317
+ }
318
+ this.keyColumn.bringToFront();
319
+ this.typeColumn.bringToFront();
320
+ this.valueColumn.bringToFront();
321
+ this.resizeColumns.bringToFront();
322
+ this.keyColumn.rect.setHeight( colHeight ); this.keyColumn.drawRect();
323
+ this.typeColumn.rect.setHeight( colHeight ); this.typeColumn.drawRect();
324
+ this.valueColumn.rect.setHeight( colHeight ); this.valueColumn.drawRect();
325
+ }
326
+ });
File without changes